ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- PKD]n errors.pynu["""distutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".""" class DistutilsError (Exception): """The root of all Distutils evil.""" pass class DistutilsModuleError (DistutilsError): """Unable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).""" pass class DistutilsClassError (DistutilsError): """Some command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.""" pass class DistutilsGetoptError (DistutilsError): """The option table provided to 'fancy_getopt()' is bogus.""" pass class DistutilsArgError (DistutilsError): """Raised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.""" pass class DistutilsFileError (DistutilsError): """Any problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.""" pass class DistutilsOptionError (DistutilsError): """Syntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.""" pass class DistutilsSetupError (DistutilsError): """For errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.""" pass class DistutilsPlatformError (DistutilsError): """We don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.""" pass class DistutilsExecError (DistutilsError): """Any problems executing an external program (such as the C compiler, when compiling C files).""" pass class DistutilsInternalError (DistutilsError): """Internal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).""" pass class DistutilsTemplateError (DistutilsError): """Syntax error in a file list template.""" class DistutilsByteCompileError(DistutilsError): """Byte compile error.""" # Exception classes used by the CCompiler implementation classes class CCompilerError (Exception): """Some compile/link operation failed.""" class PreprocessError (CCompilerError): """Failure to preprocess one or more C/C++ files.""" class CompileError (CCompilerError): """Failure to compile one or more C/C++ source files.""" class LibError (CCompilerError): """Failure to create a static library from one or more C/C++ object files.""" class LinkError (CCompilerError): """Failure to link one or more C/C++ object files into an executable or shared library file.""" class UnknownFileError (CCompilerError): """Attempt to process an unknown file type.""" PKD]_H%debug.pynu[import os # If DISTUTILS_DEBUG is anything other than the empty string, we run in # debug mode. DEBUG = os.environ.get('DISTUTILS_DEBUG') PKD]0G>dist.pynu["""distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. """ import sys import os import re from email import message_from_file try: import warnings except ImportError: warnings = None from distutils.errors import * from distutils.fancy_getopt import FancyGetopt, translate_longopt from distutils.util import check_environ, strtobool, rfc822_escape from distutils import log from distutils.debug import DEBUG # Regex to define acceptable Distutils command names. This is not *quite* # the same as a Python NAME -- I don't allow leading underscores. The fact # that they're very similar is no coincidence; the default naming scheme is # to look for a Python module named after the command. command_re = re.compile(r'^[a-zA-Z]([a-zA-Z0-9_]*)$') def _ensure_list(value, fieldname): if isinstance(value, str): # a string containing comma separated values is okay. It will # be converted to a list by Distribution.finalize_options(). pass elif not isinstance(value, list): # passing a tuple or an iterator perhaps, warn and convert typename = type(value).__name__ msg = f"Warning: '{fieldname}' should be a list, got type '{typename}'" log.log(log.WARN, msg) value = list(value) return value class Distribution: """The core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. """ # 'global_options' describes the command-line options that may be # supplied to the setup script prior to any actual commands. # Eg. "./setup.py -n" or "./setup.py --quiet" both take advantage of # these global options. This list should be kept to a bare minimum, # since every global option is also valid as a command option -- and we # don't want to pollute the commands with too many options that they # have minimal control over. # The fourth entry for verbose means that it can be repeated. global_options = [ ('verbose', 'v', "run verbosely (default)", 1), ('quiet', 'q', "run quietly (turns verbosity off)"), ('dry-run', 'n', "don't actually do anything"), ('help', 'h', "show detailed help message"), ('no-user-cfg', None, 'ignore pydistutils.cfg in your home directory'), ] # 'common_usage' is a short (2-3 line) string describing the common # usage of the setup script. common_usage = """\ Common commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package """ # options that are not propagated to the commands display_options = [ ('help-commands', None, "list all available commands"), ('name', None, "print package name"), ('version', 'V', "print package version"), ('fullname', None, "print -"), ('author', None, "print the author's name"), ('author-email', None, "print the author's email address"), ('maintainer', None, "print the maintainer's name"), ('maintainer-email', None, "print the maintainer's email address"), ('contact', None, "print the maintainer's name if known, else the author's"), ('contact-email', None, "print the maintainer's email address if known, else the author's"), ('url', None, "print the URL for this package"), ('license', None, "print the license of the package"), ('licence', None, "alias for --license"), ('description', None, "print the package description"), ('long-description', None, "print the long package description"), ('platforms', None, "print the list of platforms"), ('classifiers', None, "print the list of classifiers"), ('keywords', None, "print the list of keywords"), ('provides', None, "print the list of packages/modules provided"), ('requires', None, "print the list of packages/modules required"), ('obsoletes', None, "print the list of packages/modules made obsolete") ] display_option_names = [translate_longopt(x[0]) for x in display_options] # negative options are options that exclude other options negative_opt = {'quiet': 'verbose'} # -- Creation/initialization methods ------------------------------- def __init__(self, attrs=None): """Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. """ # Default values for our command-line options self.verbose = 1 self.dry_run = 0 self.help = 0 for attr in self.display_option_names: setattr(self, attr, 0) # Store the distribution meta-data (name, version, author, and so # forth) in a separate object -- we're getting to have enough # information here (and enough command-line options) that it's # worth it. Also delegate 'get_XXX()' methods to the 'metadata' # object in a sneaky and underhanded (but efficient!) way. self.metadata = DistributionMetadata() for basename in self.metadata._METHOD_BASENAMES: method_name = "get_" + basename setattr(self, method_name, getattr(self.metadata, method_name)) # 'cmdclass' maps command names to class objects, so we # can 1) quickly figure out which class to instantiate when # we need to create a new command object, and 2) have a way # for the setup script to override command classes self.cmdclass = {} # 'command_packages' is a list of packages in which commands # are searched for. The factory for command 'foo' is expected # to be named 'foo' in the module 'foo' in one of the packages # named here. This list is searched from the left; an error # is raised if no named package provides the command being # searched for. (Always access using get_command_packages().) self.command_packages = None # 'script_name' and 'script_args' are usually set to sys.argv[0] # and sys.argv[1:], but they can be overridden when the caller is # not necessarily a setup script run from the command-line. self.script_name = None self.script_args = None # 'command_options' is where we store command options between # parsing them (from config files, the command-line, etc.) and when # they are actually needed -- ie. when the command in question is # instantiated. It is a dictionary of dictionaries of 2-tuples: # command_options = { command_name : { option : (source, value) } } self.command_options = {} # 'dist_files' is the list of (command, pyversion, file) that # have been created by any dist commands run so far. This is # filled regardless of whether the run is dry or not. pyversion # gives sysconfig.get_python_version() if the dist file is # specific to a Python version, 'any' if it is good for all # Python versions on the target platform, and '' for a source # file. pyversion should not be used to specify minimum or # maximum required Python versions; use the metainfo for that # instead. self.dist_files = [] # These options are really the business of various commands, rather # than of the Distribution itself. We provide aliases for them in # Distribution as a convenience to the developer. self.packages = None self.package_data = {} self.package_dir = None self.py_modules = None self.libraries = None self.headers = None self.ext_modules = None self.ext_package = None self.include_dirs = None self.extra_path = None self.scripts = None self.data_files = None self.password = '' # And now initialize bookkeeping stuff that can't be supplied by # the caller at all. 'command_obj' maps command names to # Command instances -- that's how we enforce that every command # class is a singleton. self.command_obj = {} # 'have_run' maps command names to boolean values; it keeps track # of whether we have actually run a particular command, to make it # cheap to "run" a command whenever we think we might need to -- if # it's already been done, no need for expensive filesystem # operations, we just check the 'have_run' dictionary and carry on. # It's only safe to query 'have_run' for a command class that has # been instantiated -- a false value will be inserted when the # command object is created, and replaced with a true value when # the command is successfully run. Thus it's probably best to use # '.get()' rather than a straight lookup. self.have_run = {} # Now we'll use the attrs dictionary (ultimately, keyword args from # the setup script) to possibly override any or all of these # distribution options. if attrs: # Pull out the set of command options and work on them # specifically. Note that this order guarantees that aliased # command options will override any supplied redundantly # through the general options dictionary. options = attrs.get('options') if options is not None: del attrs['options'] for (command, cmd_options) in options.items(): opt_dict = self.get_option_dict(command) for (opt, val) in cmd_options.items(): opt_dict[opt] = ("setup script", val) if 'licence' in attrs: attrs['license'] = attrs['licence'] del attrs['licence'] msg = "'licence' distribution option is deprecated; use 'license'" if warnings is not None: warnings.warn(msg) else: sys.stderr.write(msg + "\n") # Now work on the rest of the attributes. Any attribute that's # not already defined is invalid! for (key, val) in attrs.items(): if hasattr(self.metadata, "set_" + key): getattr(self.metadata, "set_" + key)(val) elif hasattr(self.metadata, key): setattr(self.metadata, key, val) elif hasattr(self, key): setattr(self, key, val) else: msg = "Unknown distribution option: %s" % repr(key) warnings.warn(msg) # no-user-cfg is handled before other command line args # because other args override the config files, and this # one is needed before we can load the config files. # If attrs['script_args'] wasn't passed, assume false. # # This also make sure we just look at the global options self.want_user_cfg = True if self.script_args is not None: for arg in self.script_args: if not arg.startswith('-'): break if arg == '--no-user-cfg': self.want_user_cfg = False break self.finalize_options() def get_option_dict(self, command): """Get the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. """ dict = self.command_options.get(command) if dict is None: dict = self.command_options[command] = {} return dict def dump_option_dicts(self, header=None, commands=None, indent=""): from pprint import pformat if commands is None: # dump all command option dicts commands = sorted(self.command_options.keys()) if header is not None: self.announce(indent + header) indent = indent + " " if not commands: self.announce(indent + "no commands known yet") return for cmd_name in commands: opt_dict = self.command_options.get(cmd_name) if opt_dict is None: self.announce(indent + "no option dict for '%s' command" % cmd_name) else: self.announce(indent + "option dict for '%s' command:" % cmd_name) out = pformat(opt_dict) for line in out.split('\n'): self.announce(indent + " " + line) # -- Config file finding/parsing methods --------------------------- def find_config_files(self): """Find as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. """ files = [] check_environ() # Where to look for the system-wide Distutils config file sys_dir = os.path.dirname(sys.modules['distutils'].__file__) # Look for the system config file sys_file = os.path.join(sys_dir, "distutils.cfg") if os.path.isfile(sys_file): files.append(sys_file) # What to call the per-user config file if os.name == 'posix': user_filename = ".pydistutils.cfg" else: user_filename = "pydistutils.cfg" # And look for the user config file if self.want_user_cfg: user_file = os.path.join(os.path.expanduser('~'), user_filename) if os.path.isfile(user_file): files.append(user_file) # All platforms support local setup.cfg local_file = "setup.cfg" if os.path.isfile(local_file): files.append(local_file) if DEBUG: self.announce("using config files: %s" % ', '.join(files)) return files def parse_config_files(self, filenames=None): from configparser import ConfigParser # Ignore install directory options if we have a venv if sys.prefix != sys.base_prefix: ignore_options = [ 'install-base', 'install-platbase', 'install-lib', 'install-platlib', 'install-purelib', 'install-headers', 'install-scripts', 'install-data', 'prefix', 'exec-prefix', 'home', 'user', 'root'] else: ignore_options = [] ignore_options = frozenset(ignore_options) if filenames is None: filenames = self.find_config_files() if DEBUG: self.announce("Distribution.parse_config_files():") parser = ConfigParser() for filename in filenames: if DEBUG: self.announce(" reading %s" % filename) parser.read(filename) for section in parser.sections(): options = parser.options(section) opt_dict = self.get_option_dict(section) for opt in options: if opt != '__name__' and opt not in ignore_options: val = parser.get(section,opt) opt = opt.replace('-', '_') opt_dict[opt] = (filename, val) # Make the ConfigParser forget everything (so we retain # the original filenames that options come from) parser.__init__() # If there was a "global" section in the config file, use it # to set Distribution options. if 'global' in self.command_options: for (opt, (src, val)) in self.command_options['global'].items(): alias = self.negative_opt.get(opt) try: if alias: setattr(self, alias, not strtobool(val)) elif opt in ('verbose', 'dry_run'): # ugh! setattr(self, opt, strtobool(val)) else: setattr(self, opt, val) except ValueError as msg: raise DistutilsOptionError(msg) # -- Command-line parsing methods ---------------------------------- def parse_command_line(self): """Parse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). """ # # We now have enough information to show the Macintosh dialog # that allows the user to interactively specify the "command line". # toplevel_options = self._get_toplevel_options() # We have to parse the command line a bit at a time -- global # options, then the first command, then its options, and so on -- # because each command will be handled by a different class, and # the options that are valid for a particular class aren't known # until we have loaded the command class, which doesn't happen # until we know what the command is. self.commands = [] parser = FancyGetopt(toplevel_options + self.display_options) parser.set_negative_aliases(self.negative_opt) parser.set_aliases({'licence': 'license'}) args = parser.getopt(args=self.script_args, object=self) option_order = parser.get_option_order() log.set_verbosity(self.verbose) # for display options we return immediately if self.handle_display_options(option_order): return while args: args = self._parse_command_opts(parser, args) if args is None: # user asked for help (and got it) return # Handle the cases of --help as a "global" option, ie. # "setup.py --help" and "setup.py --help command ...". For the # former, we show global options (--verbose, --dry-run, etc.) # and display-only options (--name, --version, etc.); for the # latter, we omit the display-only options and show help for # each command listed on the command line. if self.help: self._show_help(parser, display_options=len(self.commands) == 0, commands=self.commands) return # Oops, no commands found -- an end-user error if not self.commands: raise DistutilsArgError("no commands supplied") # All is well: return true return True def _get_toplevel_options(self): """Return the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. """ return self.global_options + [ ("command-packages=", None, "list of packages that provide distutils commands"), ] def _parse_command_opts(self, parser, args): """Parse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. """ # late import because of mutual dependence between these modules from distutils.cmd import Command # Pull the current command from the head of the command line command = args[0] if not command_re.match(command): raise SystemExit("invalid command name '%s'" % command) self.commands.append(command) # Dig up the command class that implements this command, so we # 1) know that it's a valid command, and 2) know which options # it takes. try: cmd_class = self.get_command_class(command) except DistutilsModuleError as msg: raise DistutilsArgError(msg) # Require that the command class be derived from Command -- want # to be sure that the basic "command" interface is implemented. if not issubclass(cmd_class, Command): raise DistutilsClassError( "command class %s must subclass Command" % cmd_class) # Also make sure that the command object provides a list of its # known options. if not (hasattr(cmd_class, 'user_options') and isinstance(cmd_class.user_options, list)): msg = ("command class %s must provide " "'user_options' attribute (a list of tuples)") raise DistutilsClassError(msg % cmd_class) # If the command class has a list of negative alias options, # merge it in with the global negative aliases. negative_opt = self.negative_opt if hasattr(cmd_class, 'negative_opt'): negative_opt = negative_opt.copy() negative_opt.update(cmd_class.negative_opt) # Check for help_options in command class. They have a different # format (tuple of four) so we need to preprocess them here. if (hasattr(cmd_class, 'help_options') and isinstance(cmd_class.help_options, list)): help_options = fix_help_options(cmd_class.help_options) else: help_options = [] # All commands support the global options too, just by adding # in 'global_options'. parser.set_option_table(self.global_options + cmd_class.user_options + help_options) parser.set_negative_aliases(negative_opt) (args, opts) = parser.getopt(args[1:]) if hasattr(opts, 'help') and opts.help: self._show_help(parser, display_options=0, commands=[cmd_class]) return if (hasattr(cmd_class, 'help_options') and isinstance(cmd_class.help_options, list)): help_option_found=0 for (help_option, short, desc, func) in cmd_class.help_options: if hasattr(opts, parser.get_attr_name(help_option)): help_option_found=1 if callable(func): func() else: raise DistutilsClassError( "invalid help function %r for help option '%s': " "must be a callable object (function, etc.)" % (func, help_option)) if help_option_found: return # Put the options from the command-line into their official # holding pen, the 'command_options' dictionary. opt_dict = self.get_option_dict(command) for (name, value) in vars(opts).items(): opt_dict[name] = ("command line", value) return args def finalize_options(self): """Set final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. """ for attr in ('keywords', 'platforms'): value = getattr(self.metadata, attr) if value is None: continue if isinstance(value, str): value = [elm.strip() for elm in value.split(',')] setattr(self.metadata, attr, value) def _show_help(self, parser, global_options=1, display_options=1, commands=[]): """Show help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. """ # late import because of mutual dependence between these modules from distutils.core import gen_usage from distutils.cmd import Command if global_options: if display_options: options = self._get_toplevel_options() else: options = self.global_options parser.set_option_table(options) parser.print_help(self.common_usage + "\nGlobal options:") print('') if display_options: parser.set_option_table(self.display_options) parser.print_help( "Information display options (just display " + "information, ignore any commands)") print('') for command in self.commands: if isinstance(command, type) and issubclass(command, Command): klass = command else: klass = self.get_command_class(command) if (hasattr(klass, 'help_options') and isinstance(klass.help_options, list)): parser.set_option_table(klass.user_options + fix_help_options(klass.help_options)) else: parser.set_option_table(klass.user_options) parser.print_help("Options for '%s' command:" % klass.__name__) print('') print(gen_usage(self.script_name)) def handle_display_options(self, option_order): """If there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. """ from distutils.core import gen_usage # User just wants a list of commands -- we'll print it out and stop # processing now (ie. if they ran "setup --help-commands foo bar", # we ignore "foo bar"). if self.help_commands: self.print_commands() print('') print(gen_usage(self.script_name)) return 1 # If user supplied any of the "display metadata" options, then # display that metadata in the order in which the user supplied the # metadata options. any_display_options = 0 is_display_option = {} for option in self.display_options: is_display_option[option[0]] = 1 for (opt, val) in option_order: if val and is_display_option.get(opt): opt = translate_longopt(opt) value = getattr(self.metadata, "get_"+opt)() if opt in ['keywords', 'platforms']: print(','.join(value)) elif opt in ('classifiers', 'provides', 'requires', 'obsoletes'): print('\n'.join(value)) else: print(value) any_display_options = 1 return any_display_options def print_command_list(self, commands, header, max_length): """Print a subset of the list of all commands -- used by 'print_commands()'. """ print(header + ":") for cmd in commands: klass = self.cmdclass.get(cmd) if not klass: klass = self.get_command_class(cmd) try: description = klass.description except AttributeError: description = "(no description available)" print(" %-*s %s" % (max_length, cmd, description)) def print_commands(self): """Print out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. """ import distutils.command std_commands = distutils.command.__all__ is_std = {} for cmd in std_commands: is_std[cmd] = 1 extra_commands = [] for cmd in self.cmdclass.keys(): if not is_std.get(cmd): extra_commands.append(cmd) max_length = 0 for cmd in (std_commands + extra_commands): if len(cmd) > max_length: max_length = len(cmd) self.print_command_list(std_commands, "Standard commands", max_length) if extra_commands: print() self.print_command_list(extra_commands, "Extra commands", max_length) def get_command_list(self): """Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. """ # Currently this is only used on Mac OS, for the Mac-only GUI # Distutils interface (by Jack Jansen) import distutils.command std_commands = distutils.command.__all__ is_std = {} for cmd in std_commands: is_std[cmd] = 1 extra_commands = [] for cmd in self.cmdclass.keys(): if not is_std.get(cmd): extra_commands.append(cmd) rv = [] for cmd in (std_commands + extra_commands): klass = self.cmdclass.get(cmd) if not klass: klass = self.get_command_class(cmd) try: description = klass.description except AttributeError: description = "(no description available)" rv.append((cmd, description)) return rv # -- Command class/object methods ---------------------------------- def get_command_packages(self): """Return a list of packages from which commands are loaded.""" pkgs = self.command_packages if not isinstance(pkgs, list): if pkgs is None: pkgs = '' pkgs = [pkg.strip() for pkg in pkgs.split(',') if pkg != ''] if "distutils.command" not in pkgs: pkgs.insert(0, "distutils.command") self.command_packages = pkgs return pkgs def get_command_class(self, command): """Return the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. """ klass = self.cmdclass.get(command) if klass: return klass for pkgname in self.get_command_packages(): module_name = "%s.%s" % (pkgname, command) klass_name = command try: __import__(module_name) module = sys.modules[module_name] except ImportError: continue try: klass = getattr(module, klass_name) except AttributeError: raise DistutilsModuleError( "invalid command '%s' (no class '%s' in module '%s')" % (command, klass_name, module_name)) self.cmdclass[command] = klass return klass raise DistutilsModuleError("invalid command '%s'" % command) def get_command_obj(self, command, create=1): """Return the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. """ cmd_obj = self.command_obj.get(command) if not cmd_obj and create: if DEBUG: self.announce("Distribution.get_command_obj(): " "creating '%s' command object" % command) klass = self.get_command_class(command) cmd_obj = self.command_obj[command] = klass(self) self.have_run[command] = 0 # Set any options that were supplied in config files # or on the command line. (NB. support for error # reporting is lame here: any errors aren't reported # until 'finalize_options()' is called, which means # we won't report the source of the error.) options = self.command_options.get(command) if options: self._set_command_options(cmd_obj, options) return cmd_obj def _set_command_options(self, command_obj, option_dict=None): """Set the options for 'command_obj' from 'option_dict'. Basically this means copying elements of a dictionary ('option_dict') to attributes of an instance ('command'). 'command_obj' must be a Command instance. If 'option_dict' is not supplied, uses the standard option dictionary for this command (from 'self.command_options'). """ command_name = command_obj.get_command_name() if option_dict is None: option_dict = self.get_option_dict(command_name) if DEBUG: self.announce(" setting options for '%s' command:" % command_name) for (option, (source, value)) in option_dict.items(): if DEBUG: self.announce(" %s = %s (from %s)" % (option, value, source)) try: bool_opts = [translate_longopt(o) for o in command_obj.boolean_options] except AttributeError: bool_opts = [] try: neg_opt = command_obj.negative_opt except AttributeError: neg_opt = {} try: is_string = isinstance(value, str) if option in neg_opt and is_string: setattr(command_obj, neg_opt[option], not strtobool(value)) elif option in bool_opts and is_string: setattr(command_obj, option, strtobool(value)) elif hasattr(command_obj, option): setattr(command_obj, option, value) else: raise DistutilsOptionError( "error in %s: command '%s' has no such option '%s'" % (source, command_name, option)) except ValueError as msg: raise DistutilsOptionError(msg) def reinitialize_command(self, command, reinit_subcommands=0): """Reinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. """ from distutils.cmd import Command if not isinstance(command, Command): command_name = command command = self.get_command_obj(command_name) else: command_name = command.get_command_name() if not command.finalized: return command command.initialize_options() command.finalized = 0 self.have_run[command_name] = 0 self._set_command_options(command) if reinit_subcommands: for sub in command.get_sub_commands(): self.reinitialize_command(sub, reinit_subcommands) return command # -- Methods that operate on the Distribution ---------------------- def announce(self, msg, level=log.INFO): log.log(level, msg) def run_commands(self): """Run each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. """ for cmd in self.commands: self.run_command(cmd) # -- Methods that operate on its Commands -------------------------- def run_command(self, command): """Do whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). """ # Already been here, done that? then return silently. if self.have_run.get(command): return log.info("running %s", command) cmd_obj = self.get_command_obj(command) cmd_obj.ensure_finalized() cmd_obj.run() self.have_run[command] = 1 # -- Distribution query methods ------------------------------------ def has_pure_modules(self): return len(self.packages or self.py_modules or []) > 0 def has_ext_modules(self): return self.ext_modules and len(self.ext_modules) > 0 def has_c_libraries(self): return self.libraries and len(self.libraries) > 0 def has_modules(self): return self.has_pure_modules() or self.has_ext_modules() def has_headers(self): return self.headers and len(self.headers) > 0 def has_scripts(self): return self.scripts and len(self.scripts) > 0 def has_data_files(self): return self.data_files and len(self.data_files) > 0 def is_pure(self): return (self.has_pure_modules() and not self.has_ext_modules() and not self.has_c_libraries()) # -- Metadata query methods ---------------------------------------- # If you're looking for 'get_name()', 'get_version()', and so forth, # they are defined in a sneaky way: the constructor binds self.get_XXX # to self.metadata.get_XXX. The actual code is in the # DistributionMetadata class, below. class DistributionMetadata: """Dummy class to hold the distribution meta-data: name, version, author, and so forth. """ _METHOD_BASENAMES = ("name", "version", "author", "author_email", "maintainer", "maintainer_email", "url", "license", "description", "long_description", "keywords", "platforms", "fullname", "contact", "contact_email", "classifiers", "download_url", # PEP 314 "provides", "requires", "obsoletes", ) def __init__(self, path=None): if path is not None: self.read_pkg_file(open(path)) else: self.name = None self.version = None self.author = None self.author_email = None self.maintainer = None self.maintainer_email = None self.url = None self.license = None self.description = None self.long_description = None self.keywords = None self.platforms = None self.classifiers = None self.download_url = None # PEP 314 self.provides = None self.requires = None self.obsoletes = None def read_pkg_file(self, file): """Reads the metadata values from a file object.""" msg = message_from_file(file) def _read_field(name): value = msg[name] if value == 'UNKNOWN': return None return value def _read_list(name): values = msg.get_all(name, None) if values == []: return None return values metadata_version = msg['metadata-version'] self.name = _read_field('name') self.version = _read_field('version') self.description = _read_field('summary') # we are filling author only. self.author = _read_field('author') self.maintainer = None self.author_email = _read_field('author-email') self.maintainer_email = None self.url = _read_field('home-page') self.license = _read_field('license') if 'download-url' in msg: self.download_url = _read_field('download-url') else: self.download_url = None self.long_description = _read_field('description') self.description = _read_field('summary') if 'keywords' in msg: self.keywords = _read_field('keywords').split(',') self.platforms = _read_list('platform') self.classifiers = _read_list('classifier') # PEP 314 - these fields only exist in 1.1 if metadata_version == '1.1': self.requires = _read_list('requires') self.provides = _read_list('provides') self.obsoletes = _read_list('obsoletes') else: self.requires = None self.provides = None self.obsoletes = None def write_pkg_info(self, base_dir): """Write the PKG-INFO file into the release tree. """ with open(os.path.join(base_dir, 'PKG-INFO'), 'w', encoding='UTF-8') as pkg_info: self.write_pkg_file(pkg_info) def write_pkg_file(self, file): """Write the PKG-INFO format data to a file object. """ version = '1.0' if (self.provides or self.requires or self.obsoletes or self.classifiers or self.download_url): version = '1.1' file.write('Metadata-Version: %s\n' % version) file.write('Name: %s\n' % self.get_name()) file.write('Version: %s\n' % self.get_version()) file.write('Summary: %s\n' % self.get_description()) file.write('Home-page: %s\n' % self.get_url()) file.write('Author: %s\n' % self.get_contact()) file.write('Author-email: %s\n' % self.get_contact_email()) file.write('License: %s\n' % self.get_license()) if self.download_url: file.write('Download-URL: %s\n' % self.download_url) long_desc = rfc822_escape(self.get_long_description()) file.write('Description: %s\n' % long_desc) keywords = ','.join(self.get_keywords()) if keywords: file.write('Keywords: %s\n' % keywords) self._write_list(file, 'Platform', self.get_platforms()) self._write_list(file, 'Classifier', self.get_classifiers()) # PEP 314 self._write_list(file, 'Requires', self.get_requires()) self._write_list(file, 'Provides', self.get_provides()) self._write_list(file, 'Obsoletes', self.get_obsoletes()) def _write_list(self, file, name, values): for value in values: file.write('%s: %s\n' % (name, value)) # -- Metadata query methods ---------------------------------------- def get_name(self): return self.name or "UNKNOWN" def get_version(self): return self.version or "0.0.0" def get_fullname(self): return "%s-%s" % (self.get_name(), self.get_version()) def get_author(self): return self.author or "UNKNOWN" def get_author_email(self): return self.author_email or "UNKNOWN" def get_maintainer(self): return self.maintainer or "UNKNOWN" def get_maintainer_email(self): return self.maintainer_email or "UNKNOWN" def get_contact(self): return self.maintainer or self.author or "UNKNOWN" def get_contact_email(self): return self.maintainer_email or self.author_email or "UNKNOWN" def get_url(self): return self.url or "UNKNOWN" def get_license(self): return self.license or "UNKNOWN" get_licence = get_license def get_description(self): return self.description or "UNKNOWN" def get_long_description(self): return self.long_description or "UNKNOWN" def get_keywords(self): return self.keywords or [] def set_keywords(self, value): self.keywords = _ensure_list(value, 'keywords') def get_platforms(self): return self.platforms or ["UNKNOWN"] def set_platforms(self, value): self.platforms = _ensure_list(value, 'platforms') def get_classifiers(self): return self.classifiers or [] def set_classifiers(self, value): self.classifiers = _ensure_list(value, 'classifiers') def get_download_url(self): return self.download_url or "UNKNOWN" # PEP 314 def get_requires(self): return self.requires or [] def set_requires(self, value): import distutils.versionpredicate for v in value: distutils.versionpredicate.VersionPredicate(v) self.requires = list(value) def get_provides(self): return self.provides or [] def set_provides(self, value): value = [v.strip() for v in value] for v in value: import distutils.versionpredicate distutils.versionpredicate.split_provision(v) self.provides = value def get_obsoletes(self): return self.obsoletes or [] def set_obsoletes(self, value): import distutils.versionpredicate for v in value: distutils.versionpredicate.VersionPredicate(v) self.obsoletes = list(value) def fix_help_options(options): """Convert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. """ new_options = [] for help_tuple in options: new_options.append(help_tuple[0:3]) return new_options PKD]8hKPP sysconfig.pynu["""Provide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: """ import _imp import os import re import sys from .errors import DistutilsPlatformError # These are needed in a couple of spots, so just compute them once. PREFIX = os.path.normpath(sys.prefix) EXEC_PREFIX = os.path.normpath(sys.exec_prefix) BASE_PREFIX = os.path.normpath(sys.base_prefix) BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) # Path to the base directory of the project. On Windows the binary may # live in project/PCbuild/win32 or project/PCbuild/amd64. # set for cross builds if "_PYTHON_PROJECT_BASE" in os.environ: project_base = os.path.abspath(os.environ["_PYTHON_PROJECT_BASE"]) else: if sys.executable: project_base = os.path.dirname(os.path.abspath(sys.executable)) else: # sys.executable can be empty if argv[0] has been changed and Python is # unable to retrieve the real program name project_base = os.getcwd() # python_build: (Boolean) if true, we're either building Python or # building an extension with an un-installed Python, so we use # different (hard-wired) directories. # Setup.local is available for Makefile builds including VPATH builds, # Setup.dist is available on Windows def _is_python_source_dir(d): for fn in ("Setup.dist", "Setup.local"): if os.path.isfile(os.path.join(d, "Modules", fn)): return True return False _sys_home = getattr(sys, '_home', None) if os.name == 'nt': def _fix_pcbuild(d): if d and os.path.normcase(d).startswith( os.path.normcase(os.path.join(PREFIX, "PCbuild"))): return PREFIX return d project_base = _fix_pcbuild(project_base) _sys_home = _fix_pcbuild(_sys_home) def _python_build(): if _sys_home: return _is_python_source_dir(_sys_home) return _is_python_source_dir(project_base) python_build = _python_build() # Calculate the build qualifier flags if they are defined. Adding the flags # to the include and lib directories only makes sense for an installation, not # an in-source build. build_flags = '' try: if not python_build: build_flags = sys.abiflags except AttributeError: # It's not a configure-based build, so the sys module doesn't have # this attribute, which is fine. pass def get_python_version(): """Return a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. """ return '%d.%d' % sys.version_info[:2] def get_python_inc(plat_specific=0, prefix=None): """Return the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. """ if prefix is None: prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX if os.name == "posix": if python_build: # Assume the executable is in the build directory. The # pyconfig.h file should be in the same directory. Since # the build directory may not be the source directory, we # must use "srcdir" from the makefile to find the "Include" # directory. if plat_specific: return _sys_home or project_base else: incdir = os.path.join(get_config_var('srcdir'), 'Include') return os.path.normpath(incdir) python_dir = 'python' + get_python_version() + build_flags return os.path.join(prefix, "include", python_dir) elif os.name == "nt": if python_build: # Include both the include and PC dir to ensure we can find # pyconfig.h return (os.path.join(prefix, "include") + os.path.pathsep + os.path.join(prefix, "PC")) return os.path.join(prefix, "include") else: raise DistutilsPlatformError( "I don't know where Python installs its C header files " "on platform '%s'" % os.name) def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): """Return the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. """ if prefix is None: if standard_lib: prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX else: prefix = plat_specific and EXEC_PREFIX or PREFIX if os.name == "posix": if plat_specific or standard_lib: lib = "lib64" else: lib = "lib" libpython = os.path.join(prefix, lib, "python" + get_python_version()) if standard_lib: return libpython else: return os.path.join(libpython, "site-packages") elif os.name == "nt": if standard_lib: return os.path.join(prefix, "Lib") else: return os.path.join(prefix, "Lib", "site-packages") else: raise DistutilsPlatformError( "I don't know where Python installs its library " "on platform '%s'" % os.name) def customize_compiler(compiler): """Do any platform-specific customization of a CCompiler instance. Mainly needed on Unix, so we can plug in the information that varies across Unices and is stored in Python's Makefile. """ if compiler.compiler_type == "unix": if sys.platform == "darwin": # Perform first-time customization of compiler-related # config vars on OS X now that we know we need a compiler. # This is primarily to support Pythons from binary # installers. The kind and paths to build tools on # the user system may vary significantly from the system # that Python itself was built on. Also the user OS # version and build tools may not support the same set # of CPU architectures for universal builds. global _config_vars # Use get_config_var() to ensure _config_vars is initialized. if not get_config_var('CUSTOMIZED_OSX_COMPILER'): import _osx_support _osx_support.customize_compiler(_config_vars) _config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True' (cc, cxx, cflags, ccshared, ldshared, shlib_suffix, ar, ar_flags) = \ get_config_vars('CC', 'CXX', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS') if 'CC' in os.environ: newcc = os.environ['CC'] if (sys.platform == 'darwin' and 'LDSHARED' not in os.environ and ldshared.startswith(cc)): # On OS X, if CC is overridden, use that as the default # command for LDSHARED as well ldshared = newcc + ldshared[len(cc):] cc = newcc if 'CXX' in os.environ: cxx = os.environ['CXX'] if 'LDSHARED' in os.environ: ldshared = os.environ['LDSHARED'] if 'CPP' in os.environ: cpp = os.environ['CPP'] else: cpp = cc + " -E" # not always if 'LDFLAGS' in os.environ: ldshared = ldshared + ' ' + os.environ['LDFLAGS'] if 'CFLAGS' in os.environ: cflags = cflags + ' ' + os.environ['CFLAGS'] ldshared = ldshared + ' ' + os.environ['CFLAGS'] if 'CPPFLAGS' in os.environ: cpp = cpp + ' ' + os.environ['CPPFLAGS'] cflags = cflags + ' ' + os.environ['CPPFLAGS'] ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] if 'AR' in os.environ: ar = os.environ['AR'] if 'ARFLAGS' in os.environ: archiver = ar + ' ' + os.environ['ARFLAGS'] else: archiver = ar + ' ' + ar_flags cc_cmd = cc + ' ' + cflags compiler.set_executables( preprocessor=cpp, compiler=cc_cmd, compiler_so=cc_cmd + ' ' + ccshared, compiler_cxx=cxx, linker_so=ldshared, linker_exe=cc, archiver=archiver) compiler.shared_lib_extension = shlib_suffix def get_config_h_filename(): """Return full pathname of installed pyconfig.h file.""" if python_build: if os.name == "nt": inc_dir = os.path.join(_sys_home or project_base, "PC") else: inc_dir = _sys_home or project_base else: inc_dir = get_python_inc(plat_specific=1) return os.path.join(inc_dir, 'pyconfig-64.h') def get_makefile_filename(): """Return full pathname of installed Makefile from the Python build.""" if python_build: return os.path.join(_sys_home or project_base, "Makefile") lib_dir = get_python_lib(plat_specific=0, standard_lib=1) config_file = 'config-{}{}'.format(get_python_version(), build_flags) if hasattr(sys.implementation, '_multiarch'): config_file += '-%s' % sys.implementation._multiarch return os.path.join(lib_dir, config_file, 'Makefile') def parse_config_h(fp, g=None): """Parse a config.h-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ if g is None: g = {} define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") # while True: line = fp.readline() if not line: break m = define_rx.match(line) if m: n, v = m.group(1, 2) try: v = int(v) except ValueError: pass g[n] = v else: m = undef_rx.match(line) if m: g[m.group(1)] = 0 return g # Regexes needed for parsing Makefile (and similar syntaxes, # like old-style Setup files). _variable_rx = re.compile(r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") def parse_makefile(fn, g=None): """Parse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ from distutils.text_file import TextFile fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1, errors="surrogateescape") if g is None: g = {} done = {} notdone = {} while True: line = fp.readline() if line is None: # eof break m = _variable_rx.match(line) if m: n, v = m.group(1, 2) v = v.strip() # `$$' is a literal `$' in make tmpv = v.replace('$$', '') if "$" in tmpv: notdone[n] = v else: try: v = int(v) except ValueError: # insert literal `$' done[n] = v.replace('$$', '$') else: done[n] = v # Variables with a 'PY_' prefix in the makefile. These need to # be made available without that prefix through sysconfig. # Special care is needed to ensure that variable expansion works, even # if the expansion uses the name without a prefix. renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') # do variable interpolation here while notdone: for name in list(notdone): value = notdone[name] m = _findvar1_rx.search(value) or _findvar2_rx.search(value) if m: n = m.group(1) found = True if n in done: item = str(done[n]) elif n in notdone: # get it on a subsequent round found = False elif n in os.environ: # do it like make: fall back to environment item = os.environ[n] elif n in renamed_variables: if name.startswith('PY_') and name[3:] in renamed_variables: item = "" elif 'PY_' + n in notdone: found = False else: item = str(done['PY_' + n]) else: done[n] = item = "" if found: after = value[m.end():] value = value[:m.start()] if item.strip() not in value: value += item value += after if "$" in after: notdone[name] = value else: try: value = int(value) except ValueError: done[name] = value.strip() else: done[name] = value del notdone[name] if name.startswith('PY_') \ and name[3:] in renamed_variables: name = name[3:] if name not in done: done[name] = value else: # bogus variable reference; just drop it since we can't deal del notdone[name] fp.close() # strip spurious spaces for k, v in done.items(): if isinstance(v, str): done[k] = v.strip() # save the results in the global dictionary g.update(done) return g def expand_makefile_vars(s, vars): """Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. """ # This algorithm does multiple expansion, so if vars['foo'] contains # "${bar}", it will expand ${foo} to ${bar}, and then expand # ${bar}... and so forth. This is fine as long as 'vars' comes from # 'parse_makefile()', which takes care of such expansions eagerly, # according to make's variable expansion semantics. while True: m = _findvar1_rx.search(s) or _findvar2_rx.search(s) if m: (beg, end) = m.span() s = s[0:beg] + vars.get(m.group(1)) + s[end:] else: break return s _config_vars = None def _init_posix(): """Initialize the module as appropriate for POSIX systems.""" # _sysconfigdata is generated at build time, see the sysconfig module name = os.environ.get('_PYTHON_SYSCONFIGDATA_NAME', '_sysconfigdata_{abi}_{platform}_{multiarch}'.format( abi=sys.abiflags, platform=sys.platform, multiarch=getattr(sys.implementation, '_multiarch', ''), )) _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) build_time_vars = _temp.build_time_vars global _config_vars _config_vars = {} _config_vars.update(build_time_vars) def _init_nt(): """Initialize the module as appropriate for NT""" g = {} # set basic install directories g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) # XXX hmmm.. a normal install puts include files here g['INCLUDEPY'] = get_python_inc(plat_specific=0) g['EXT_SUFFIX'] = _imp.extension_suffixes()[0] g['EXE'] = ".exe" g['VERSION'] = get_python_version().replace(".", "") g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) global _config_vars _config_vars = g def get_config_vars(*args): """With no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. """ global _config_vars if _config_vars is None: func = globals().get("_init_" + os.name) if func: func() else: _config_vars = {} # Normalized versions of prefix and exec_prefix are handy to have; # in fact, these are the standard versions used most places in the # Distutils. _config_vars['prefix'] = PREFIX _config_vars['exec_prefix'] = EXEC_PREFIX # For backward compatibility, see issue19555 SO = _config_vars.get('EXT_SUFFIX') if SO is not None: _config_vars['SO'] = SO # Always convert srcdir to an absolute path srcdir = _config_vars.get('srcdir', project_base) if os.name == 'posix': if python_build: # If srcdir is a relative path (typically '.' or '..') # then it should be interpreted relative to the directory # containing Makefile. base = os.path.dirname(get_makefile_filename()) srcdir = os.path.join(base, srcdir) else: # srcdir is not meaningful since the installation is # spread about the filesystem. We choose the # directory containing the Makefile since we know it # exists. srcdir = os.path.dirname(get_makefile_filename()) _config_vars['srcdir'] = os.path.abspath(os.path.normpath(srcdir)) # Convert srcdir into an absolute path if it appears necessary. # Normally it is relative to the build directory. However, during # testing, for example, we might be running a non-installed python # from a different directory. if python_build and os.name == "posix": base = project_base if (not os.path.isabs(_config_vars['srcdir']) and base != os.getcwd()): # srcdir is relative and we are not in the same directory # as the executable. Assume executable is in the build # directory and make srcdir absolute. srcdir = os.path.join(base, _config_vars['srcdir']) _config_vars['srcdir'] = os.path.normpath(srcdir) # OS X platforms require special customization to handle # multi-architecture, multi-os-version installers if sys.platform == 'darwin': import _osx_support _osx_support.customize_config_vars(_config_vars) if args: vals = [] for name in args: vals.append(_config_vars.get(name)) return vals else: return _config_vars def get_config_var(name): """Return the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) """ if name == 'SO': import warnings warnings.warn('SO is deprecated, use EXT_SUFFIX', DeprecationWarning, 2) return get_config_vars().get(name) PKD]yk)__pycache__/__init__.cpython-36.opt-2.pycnu[3 \@s"ddlZejdejjdZdS)N )sysversionindex __version__rr*/usr/lib64/python3.6/distutils/__init__.py sPKD]E'l+ + 1__pycache__/versionpredicate.cpython-36.opt-2.pycnu[3 \ @s~ddlZddlZddlZejdejZejdZejdZddZ ej ej ej ej ejejdZGdd d Zdad d ZdS) Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6tj|}|std||j\}}|tjj|fS)Nz"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 2/usr/lib64/python3.6/distutils/versionpredicate.pysplitUps    r)z>=z!=c@s$eZdZddZddZddZdS)VersionPredicatecCs|j}|stdtj|}|s.td||j\|_}|j}|rtj|}|sbtd||jd}dd|jdD|_|jstd|ng|_dS) Nzempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %r) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$      zVersionPredicate.__init__cCs8|jr.dd|jD}|jddj|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs*x$|jD]\}}t|||sdSqWdS)NFT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname__rr#r%r r r r rsArcCsdtdkrtjdtja|j}tj|}|s8td||jdpDd}|rVtj j |}|jd|fS)Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r2)r,Zdistutils.versionroperatorr-r.rrrrltleeqgtgener$rr+r2r r r r s   nPKD] ) #__pycache__/dep_util.cpython-36.pycnu[3 \ @s6dZddlZddlmZddZddZd d d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCs`tjj|s tdtjj|tjj|s0dSddlm}tj||}tj||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r */usr/lib64/python3.6/distutils/dep_util.pynewer s   rcCslt|t|krtdg}g}xBtt|D]2}t||||r.|j|||j||q.W||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise srerrorcCstjj|sdSddlm}tj||}xX|D]L}tjj|sb|dkrJn|dkrVq0n |dkrbdStj||}||kr0dSq0WdSdS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rr)rrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s     r)r)__doc__rZdistutils.errorsrrrrr r r r s  PKD]Y/&/&)__pycache__/filelist.cpython-36.opt-1.pycnu[3 \ 2@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejfd d Zd d ZdddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@s|eZdZdZdddZddZejfddZd d Z d d Z d dZ ddZ ddZ ddZddZdddZdddZdS) FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr */usr/lib64/python3.6/distutils/filelist.py__init__szFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCsddlm}|rt|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrr r r r )s zFileList.debug_printcCs|jj|dS)N)rappend)r itemr r r r3szFileList.appendcCs|jj|dS)N)rextend)r itemsr r r r6szFileList.extendcCs@tttjj|j}g|_x |D]}|jjtjj|q WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s z FileList.sortcCsDx>tt|jdddD]$}|j||j|dkr|j|=qWdS)Nr)rangelenr)r ir r r remove_duplicatesCszFileList.remove_duplicatescCs|j}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSr )r).0wr r r Wsz1FileList._parse_template_line..r recursive-includerecursive-excludez,'%s' expects ...cSsg|] }t|qSr )r)r+r,r r r r-]sgraftprunez#'%s' expects a single zunknown action '%s')r&r'r(r))r.r/)r1r2)rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs,         zFileList._parse_template_linecCsX|j|\}}}}|dkrZ|jddj|x&|D]}|j|dds4tjd|q4Wn|dkr|jddj|x&|D]}|j|dds|tjd |q|Wn|d kr|jd dj|x&|D]}|j|d dstjd |qWnj|dkr8|jddj|x*|D]"}|j|d dstjd|qWn|dkr|jd|dj|fx,|D]$}|j||ds`tjd||q`Wn|dkr|jd|dj|fx|D]$}|j||dstjd||qWnx|dkr|jd||jd|dsTtjd|nB|dkrH|jd||jd|dsTtjd|n td|dS)Nr&zinclude  r )anchorz%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r1zgraft z+warning: no directories found matching '%s'r2zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r7r rinclude_patternrr exclude_patternr)r r3r4r5rr6patternr r r process_template_linehsf           zFileList.process_template_liner rcCspd}t||||}|jd|j|jdkr4|jx6|jD],}|j|r<|jd||jj|d}qr;r<r r r r rs     L ,rcCs&ddtj|ddD}ttjj|S)z% Find all files under 'path' css,|]$\}}}|D]}tjj||VqqdS)N)rrr)r+basedirsrfiler r r sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsr r r _find_all_simplesrRcCs6t|}|tjkr.tjtjj|d}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )start) rRrrI functoolspartialrrelpathrlist)rrZmake_relr r r rs   rcCs8tj|}tj}tjdkrd}d|}tjd||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?t|}nd}|dk rt|}|t|t|t|}tj} tjdkrd} |t|t|t|}d||| ||f}n|rd||t|df}tj|S)aTranslate a shell-like wildcard pattern to a compiled regular expression. Return the compiled regex. If 'is_regex' true, then 'pattern' is directly compiled to a regex (if it's a string) or just returned as-is (assumes it's a regex object). _NrXz\\z%s\A%s%s.*%s%sz%s\A%s) isinstancestrr\compiler^ partitionr#rr[) r=r9r:rArSr_endrCZ prefix_rer[r r r r?%s(   r?)r Nr)rHrr\rYrTZdistutils.utilrZdistutils.errorsrrZ distutilsrrrRrIrr^r?r r r r s  i  PKD]͢__pycache__/dist.cpython-36.pycnu[3 \ @sdZddlZddlZddlZddlmZy ddlZWnek rLdZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZejd ZGd d d ZGd d d ZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$c@speZdZdZd~ddddgZdZdddddddddddddddddddddgZd>d?eDZddiZdd@dAZ dBdCZ ddEdFZ dGdHZ ddIdJZ dKdLZdMdNZdOdPZdQdRZddgfdSdTZdUdVZdWdXZdYdZZd[d\Zd]d^Zd_d`ZddadbZddcddZddfdgZejfdhdiZdjdkZdldmZ dndoZ!dpdqZ"drdsZ#dtduZ$dvdwZ%dxdyZ&dzd{Z'd|d}Z(dS) DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. verbosevrun verbosely (default)quietq!run quietly (turns verbosity off)dry-runndon't actually do anythinghelphshow detailed help message no-user-cfgN-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package help-commandslist all available commandsnameprint package nameversionVprint package versionfullnameprint -authorprint the author's name author-email print the author's email address maintainerprint the maintainer's namemaintainer-email$print the maintainer's email addresscontact7print the maintainer's name if known, else the author's contact-email@print the maintainer's email address if known, else the author'surlprint the URL for this packagelicense print the license of the packagelicencealias for --license descriptionprint the package descriptionlong-description"print the long package description platformsprint the list of platforms classifiersprint the list of classifierskeywordsprint the list of keywordsprovides+print the list of packages/modules providedrequires+print the list of packages/modules required obsoletes0print the list of packages/modules made obsoletecCsg|]}t|dqS)r)r).0xrH&/usr/lib64/python3.6/distutils/dist.py sszDistribution.cCsd|_d|_d|_x|jD]}t||dqWt|_x,|jjD] }d|}t||t|j|q@Wi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r8|jd}|dk rH|d=xD|jD]8\}}|j |}x"|jD]\} } d| f|| <q(Wq Wd|kr|d|d <|d=d } t!dk r~t!j"| nt#j$j%| d x|jD]\} } t&|jd | rt|jd | | njt&|j| rt|j| | nLt&|| rt|| | n2d t'| } t!dk r"t!j"| nt#j$j%| d qWd|_(|j dk r|x0|j D]&} | j)dsdP| dkrRd|_(PqRW|j*dS)a0Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. rrget_Noptionsz setup scriptr4r2z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+r dry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfZattrsattrbasenameZ method_namerMcommandZ cmd_optionsopt_dictoptvalmsgkeyargrHrHrI__init__zs                   zDistribution.__init__cCs&|jj|}|dkr"i}|j|<|S)zGet the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. N)r[re)rrrudictrHrHrIrgs zDistribution.get_option_dictrLc Csddlm}|dkr"t|jj}|dk r@|j|||d}|sV|j|ddSxt|D]l}|jj|}|dkr|j|d|q\|j|d|||}x$|jdD]}|j|d|qWq\WdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:rN)pprintr~sortedr[keysannounceresplit) rrheadercommandsindentr~Zcmd_namervoutlinerHrHrIdump_option_dicts&s&    zDistribution.dump_option_dictscCsg}ttjjtjdj}tjj|d}tjj|rB|j |tj dkrRd}nd}|j rtjjtjj d|}tjj|r|j |d}tjj|r|j |t r|jdd j||S) aFind as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerjmodules__file__joinisfileappendrro expanduserr r)rrfilesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerHrHrIfind_config_filesBs&       zDistribution.find_config_filescCsddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|j}trb|jd|}x|D]}tr|jd||j |xf|j D]Z}|j |}|j |}x@|D]8} | dkr| |kr|j || } | jdd} || f|| <qWqW|jqnWd|jkrx|jdjD]\} \} } |jj | } yF| rRt|| t|  n(| dkrnt|| t| n t|| | Wn,tk r} zt| WYdd} ~ XnXqWdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %s__name__rO_globalr rP)r rP)Z configparserrrjr base_prefix frozensetrr rreadZsectionsrMrgrereplacer|r[rf negative_optrRr ValueErrorDistutilsOptionError)rr filenamesrZignore_optionsparserfilenameZsectionrMrvrwrxsrcaliasryrHrHrIparse_config_filesrsJ               zDistribution.parse_config_filescCs|j}g|_t||j}|j|j|jddi|j|j|d}|j }t j |j |j |rhdSx |r|j||}|dkrjdSqjW|jr|j|t|jdk|jddS|jstddS) aParse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). r4r2)argsobjectNr)display_optionsrzno commands suppliedT)_get_toplevel_optionsrrrset_negative_aliasesrZ set_aliasesgetoptrZZget_option_orderr Z set_verbosityr handle_display_options_parse_command_optsr _show_helplenDistutilsArgError)rrZtoplevel_optionsrr option_orderrHrHrIparse_command_lines,       zDistribution.parse_command_linecCs |jdgS)zReturn the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. command-packages=N0list of packages that provide distutils commands)rNr)global_options)rrrHrHrIrsz"Distribution._get_toplevel_optionscCsddlm}|d}tj|s*td||jj|y|j|}Wn*tk rn}zt |WYdd}~XnXt ||st d|t |dot |jtsd}t |||j}t |dr|j}|j|jt |d rt |jtrt|j}ng}|j|j|j||j||j|d d\}} t | d rV| jrV|j|d|gd dSt |d rt |jtrd} xP|jD]F\} } } }t | |j| r|d } t|r|nt d || fq|W| rdS|j|}x&t| jD]\}}d|f||<qW|S)aParse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. r)Commandzinvalid command name '%s'Nz&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrr)rrzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrrget_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrm isinstancerlistrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablergvarsrf)rrrrrruZ cmd_classryrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncrvrvaluerHrHrIrsb                   z Distribution._parse_command_optscCsTxNdD]F}t|j|}|dkr qt|trdd|jdD}t|j||qWdS)zSet final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. r>r:NcSsg|] }|jqSrH)strip)rFZelmrHrHrIrJ_sz1Distribution.finalize_options..,)r>r:)rVrTrstrrrR)rrrsrrHrHrIrqUs   zDistribution.finalize_optionsc Cs ddlm}ddlm}|rR|r*|j}n|j}|j||j|jdt d|rt|j|j |jd t dx|j D]z}t |t rt||r|} n |j|} t| drt | jtr|j| jt| jn |j| j|jd | jt dq|Wt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r) gen_usage)rz Global options:rLz*Information display options (just display z!information, ignore any commands)rzOptions for '%s' command:NzKInformation display options (just display information, ignore any commands))distutils.corerrrrrrZ print_help common_usageprintrrrtyperrrmrrrrrrY) rrrrrrrrrMruklassrHrHrIrbs6           zDistribution._show_helpc Csddlm}|jr4|jtdt||jdSd}i}x|jD]}d||d<qDWxt|D]l\}}|r^|j|r^t|}t |j d|}|dkrtdj |n |dkrtd j |nt|d}q^W|S)zIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. r)rrLrrKr>r:rr<r@rBrDrN)r>r:)r<r@rBrD) rrZ help_commandsprint_commandsrrYrrerrVrTr) rrrrZany_display_optionsZis_display_optionoptionrwrxrrHrHrIrs,  z#Distribution.handle_display_optionscCsnt|dx\|D]T}|jj|}|s0|j|}y |j}Wntk rRd}YnXtd|||fqWdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :z(no description available)z %-*s %sN)rrWrerr6AttributeError)rrrr max_lengthcmdrr6rHrHrIprint_command_lists      zDistribution.print_command_listcCsddl}|jj}i}x|D] }d||<qWg}x&|jjD]}|j|s:|j|q:Wd}x$||D]}t||krdt|}qdW|j|d||rt |j|d|dS)anPrint out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrzStandard commandszExtra commands) distutils.commandru__all__rWrrerrrr)rrr std_commandsis_stdrextra_commandsrrHrHrIrs*     zDistribution.print_commandsc Csddl}|jj}i}x|D] }d||<qWg}x&|jjD]}|j|s:|j|q:Wg}x\||D]P}|jj|}|s|j|}y |j}Wnt k rd}YnX|j||fqdW|S)a>Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrz(no description available)) rrurrWrrerrr6r) rrrrrrrrvrr6rHrHrIget_command_lists(        zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|jdD}d|krD|jdd||_|S)z9Return a list of packages from which commands are loaded.NrLcSsg|]}|dkr|jqS)rL)r)rFZpkgrHrHrIrJsz5Distribution.get_command_packages..rzdistutils.commandr)rXrrrinsert)rrZpkgsrHrHrIget_command_packagess  z!Distribution.get_command_packagescCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk r^wYnXyt||}Wn&tk rt d|||fYnX||j|<|SWt d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) rWrer __import__rjr ImportErrorrVrr)rrrurZpkgnameZ module_nameZ klass_namemodulerHrHrIrs(   zDistribution.get_command_classcCsn|jj|}| rj|rjtr(|jd||j|}||}|j|<d|j|<|jj|}|rj|j|||S)aReturn the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. z.z1error in %s: command '%s' has no such option '%s')get_command_namergr rrfZboolean_optionsrrrrrRrrmrr) rrrcZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringryrHrHrIr]s>           z!Distribution._set_command_optionsrcCsddlm}t||s&|}|j|}n|j}|js8|S|jd|_d|j|<|j||r|x|j D]}|j ||qhW|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. r)r) rrrrrZ finalizedZinitialize_optionsrdrZget_sub_commandsreinitialize_command)rrruZreinit_subcommandsrrsubrHrHrIrs     z!Distribution.reinitialize_commandcCstj||dS)N)r )rrrylevelrHrHrIrszDistribution.announcecCsx|jD]}|j|qWdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)r run_command)rrrrHrHrI run_commandss zDistribution.run_commandscCsD|jj|rdStjd||j|}|j|jd|j|<dS)aDo whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). Nz running %sr)rdrer inforZensure_finalizedZrun)rrrurrHrHrIrs   zDistribution.run_commandcCst|jp|jpgdkS)Nr)rr\r])rrrHrHrIhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkS)Nr)r`r)rrrHrHrIhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkS)Nr)r^r)rrrHrHrIhas_c_librariesszDistribution.has_c_librariescCs|jp|jS)N)rr)rrrHrHrI has_modulesszDistribution.has_modulescCs|jot|jdkS)Nr)r_r)rrrHrHrI has_headersszDistribution.has_headerscCs|jot|jdkS)Nr)rar)rrrHrHrI has_scriptsszDistribution.has_scriptscCs|jot|jdkS)Nr)rbr)rrrHrHrIhas_data_filesszDistribution.has_data_filescCs|jo|j o|j S)N)rrr)rrrHrHrIis_pures zDistribution.is_pure)r r rr)rrr)rrr)rrr)rNr)rNr)rNr)rr r!)r"Nr#)r$Nr%)r&Nr')r(Nr))r*Nr+)r,Nr-)r.Nr/)r0Nr1)r2Nr3)r4Nr5)r6Nr7)r8Nr9)r:Nr;)r<Nr=)r>Nr?)r@NrA)rBNrC)rDNrE)N)NNrL)N)r)N)r))r __module__ __qualname____doc__rrrrQrr|rgrrrrrrrqrrrrrrrrrrr INFOrrrrrrrrrrrrHrHrHrIr s    " 0 :C [  1(!" &  , ) r c@seZdZdZdOZdPddZddZddZddZdd Z d!d"Z d#d$Z d%d&Z d'd(Z d)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZeZd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZ dMdNZ!dS)QrSz]Dummy class to hold the distribution meta-data: name, version, author, and so forth. rrr$ author_emailr(maintainer_emailr0r2r6long_descriptionr>r:r"r, contact_emailr< download_urlr@rBrDNcCs|dk r|jt|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenrrr$rr(rr0r2r6rr>r:r<r r@rBrD)rrrrHrHrIr|s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ nd |_ |d|_ |d|_dkr|dj d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|S)NUNKNOWNrH)rr)ryrHrI _read_fieldsz7DistributionMetadata.read_pkg_file.._read_fieldcsj|d}|gkrdS|S)N)Zget_all)rvalues)ryrHrI _read_list#s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionrrZsummaryr$Nz author-emailz home-pager2z download-urlr6r>rplatformZ classifierz1.1rBr@rD)rrrr6r$r(rrr0r2r rrr>r:r<rBr@rD)rrfilerrZmetadata_versionrH)ryrIr s:                 z"DistributionMetadata.read_pkg_filec Cs2ttjj|dddd}|j|WdQRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwzUTF-8)encodingN)r rrrwrite_pkg_file)rrZbase_dirZpkg_inforHrHrIwrite_pkg_infoMs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|jd||jd|j|jd|j|jd|j|jd|j |jd|j |jd |j |jd |j |jr|jd |jt |j}|jd |d j|j}|r|jd||j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS)z9Write the PKG-INFO format data to a file object. z1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r@rBrDr<r rlget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)rrrrZ long_descr>rHrHrIrTs0  z#DistributionMetadata.write_pkg_filecCs$x|D]}|jd||fqWdS)Nz%s: %s )rl)rrrrrrrHrHrIr vs z DistributionMetadata._write_listcCs |jpdS)Nr )r)rrrHrHrIr|szDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r)rrrHrHrIrsz DistributionMetadata.get_versioncCsd|j|jfS)Nz%s-%s)rr)rrrHrHrI get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdS)Nr )r$)rrrHrHrI get_authorszDistributionMetadata.get_authorcCs |jpdS)Nr )r)rrrHrHrIget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdS)Nr )r()rrrHrHrIget_maintainersz#DistributionMetadata.get_maintainercCs |jpdS)Nr )r)rrrHrHrIget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr )r(r$)rrrHrHrIrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr )rr)rrrHrHrIrsz&DistributionMetadata.get_contact_emailcCs |jpdS)Nr )r0)rrrHrHrIrszDistributionMetadata.get_urlcCs |jpdS)Nr )r2)rrrHrHrIrsz DistributionMetadata.get_licensecCs |jpdS)Nr )r6)rrrHrHrIrsz$DistributionMetadata.get_descriptioncCs |jpdS)Nr )r)rrrHrHrIrsz)DistributionMetadata.get_long_descriptioncCs |jpgS)N)r>)rrrHrHrIrsz!DistributionMetadata.get_keywordscCs |jp dgS)Nr )r:)rrrHrHrIr!sz"DistributionMetadata.get_platformscCs |jpgS)N)r<)rrrHrHrIr"sz$DistributionMetadata.get_classifierscCs |jpdS)Nr )r )rrrHrHrIget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgS)N)rB)rrrHrHrIr#sz!DistributionMetadata.get_requirescCs,ddl}x|D]}|jj|qW||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterB)rrrrr rHrHrI set_requiress z!DistributionMetadata.set_requirescCs |jpgS)N)r@)rrrHrHrIr$sz!DistributionMetadata.get_providescCs:dd|D}x |D]}ddl}|jj|qW||_dS)NcSsg|] }|jqSrH)r)rFr rHrHrIrJsz5DistributionMetadata.set_provides..r)r,r-Zsplit_provisionr@)rrrr rrHrHrI set_providess  z!DistributionMetadata.set_providescCs |jpgS)N)rD)rrrHrHrIr%sz"DistributionMetadata.get_obsoletescCs,ddl}x|D]}|jj|qW||_dS)Nr)r,r-r.rD)rrrrr rHrHrI set_obsoletess z"DistributionMetadata.set_obsoletes)rrr$rr(rr0r2r6rr>r:r"r,r r<r r@rBrD)N)"rrrrrUr|r rrr rrr&r'r(r)r*rrrrZ get_licencerrrr!r"r+r#r/r$r0r%r1rHrHrHrIrSsH 4"rScCs(g}x|D]}|j|ddq W|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r)rMZ new_optionsZ help_tuplerHrHrIrs r)rrjrreZemailrrhrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrr Zdistutils.debugr compilerr rSrrHrHrHrIs2      ]ZPKD]Vf__pycache__/core.cpython-36.pycnu[3 \"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad4Zd5Zd/d0Zd6d2d3ZdS)7a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstjj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr&/usr/lib64/python3.6/distutils/core.py gen_usage s r distclassr script_argsoptionsnameversionauthor author_email maintainermaintainer_emailurllicense descriptionlong_descriptionkeywords platforms classifiers download_urlrequiresprovides obsoletessources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_args swig_optsexport_symbolsdependslanguagec,Ks|jd}|r|d=nt}d|kr8tjjtjd|d<d|krRtjdd|d<y||a}WnLtk r}z0d|krt d|nt d |d|fWYdd}~XnXt d kr|S|j t rt d |jt d kr|Sy |j}Wn:tk r*}zt t|jd |WYdd}~XnXt rBt d|jt dkrP|S|ry |jWntk rt dYntk r}z0t rtjjd|fnt d|fWYdd}~XnBttfk r }z t rnt dt|WYdd}~XnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`% " (   "rGruncCs|d krtd|f|atjj}d|i}yZzH|tjd<|dk rP|tjd d<t|d }t|j|WdQRXWd|t_daXWntk rYnXt dkrt d |t S) a.Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. r4r5r6rHz"invalid value for 'stop_after': %r__file__rNr3rbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?)r4r5r6rH) ValueErrorr<r8r9copyopenexecreadr;r: RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups(    rS)rr rrrrrrrrrrrrrrr r!r"r#r$)rr%r&r'r(r)r*r+r,r-r.r/r0r1r2)NrH)__doc__rr8Zdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr<r:Zsetup_keywordsZextension_keywordsrGrSrrrrs2     qPKD]CC$__pycache__/ccompiler.cpython-36.pycnu[3 \7@sdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd-Zd.ddZd/d0d1d2d3d!Zd"d#Zd4d$d%Zd&d'Zd(d)ZdS)5zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddZ dddgZ dqdd Zd d Zd d ZddZddZdrddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d.d/Z!dsd0d1Z"d2d3Z#d4d5Z$d6d7Z%d8d9Z&dtd:d;Z'dudd?Z)dvd@dAZ*dBZ+dCZ,dDZ-dwdEdFZ.dxdGdHZ/dydIdJZ0dzdKdLZ1dMdNZ2dOdPZ3dQdRZ4d{dSdTZ5d|dUdVZ6d}dXdYZ7d~dZd[Z8dd\d]Z9dd_d`Z:ddbdcZ;dddeZdjdkZ?dldmZ@ddodpZAdS) CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nczc++Zobjc)z.cz.ccz.cppz.cxxz.mrcCsf||_||_||_d|_g|_g|_g|_g|_g|_g|_ x$|j j D]}|j ||j |qHWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr+/usr/lib64/python3.6/distutils/ccompiler.py__init__UszCCompiler.__init__cKs@x:|D]2}||jkr(td||jjf|j|||qWdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dS)N) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}x&|jD]}|d|kr |S|d7}q WdS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCsdx^|D]V}t|toFt|dkoFt|dts:|ddkoFt|dtstd|ddqWdS) zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. r(Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(r-)r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss    z"CCompiler._check_macro_definitionscCs.|j|}|dk r|j|=|jj||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N)r,rappend)rr)r'r*rrr define_macros zCCompiler.define_macrocCs0|j|}|dk r|j|=|f}|jj|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N)r,rr2)rr)r*Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|jj|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|jj|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|jj|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|jj|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|jj|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs.|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t |t |kst t ||}i} xRt t |D]B} || } || } t jj| d} |jt jj| | | f| | <qW||||| fS)z;Process arguments and decide which source files to compile.Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr()rr$r%r0rlistrr.object_filenamesr/AssertionErrorgen_preprocess_optionsrangeospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr*srcobjextrrr_setup_compile6s:   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrOdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)rr$r%r0rrDrr.)rrrrrrr_fix_compile_argsjs   zCCompiler._fix_compile_argscCs*|j||d}t|t|ks"t|ifS)a+Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. )r)rEr/rF)rrMrrNrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)zTypecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. z,'objects' must be a list or tuple of stringsNz%'output_dir' must be a string or None)r$rDr.r0rr%)rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)a;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. Tnewer)ZmissingN)rr r)rr output_filer\rrr _need_links  zCCompiler._need_linkc Cst|ts|g}d}t|j}x^|D]V}tjj|\}}|jj|}y |jj |}||krb|}|}Wq$t k rxYq$Xq$W|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r$rDr/language_orderrIrJrK language_mapgetindexr) rrMZlangrbsourcebaserSZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrcr]rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc Csz|j||||||\}} }} } |j| ||} xH| D]@} y| | \}}Wntk r\w2YnX|j| ||| || q2W| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )rTrWKeyError_compile)rrMrrrrUrfrgrNrrOrPrVrRrQrSrrrcompiles6  zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrRrQrSrVrgrOrrrrjCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerrU target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrUrfrg build_temprmrrrlinkis9zCCompiler.linkc Cs2|jtj||j|dd||||||| | | | dS)Nshared)lib_type)rtr SHARED_LIBRARYlibrary_filename) rrrlrrrrrrrUrfrgrsrmrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|jtj||||||||| | | | dS)N)rtr SHARED_OBJECT) rrrqrrrrrrrUrfrgrsrmrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|jtj||j|||||d||| d| dS)N)rtr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrUrfrgrmrrrlink_executables  zCCompiler.link_executablecCstdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. N)rp)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N)rp)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N)rp)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}tj|d} z.x|D]} | jd| q`W| jd|Wd| jXy|j|g|d } Wntk rd SXy|j| d ||d Wnt t fk rd SXdS) zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNz.cT)textwz#include "%s" z+main (int argc, char **argv) { %s(); } )rFza.out)rr) tempfileZmkstemprIfdopenwritecloserkZ CompileErrorr~Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8     zCCompiler.has_functioncCstdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N)rp)rr7rrUrrrfind_library_file#szCCompiler.find_library_filecCs|dkr d}g}x|D]|}tjj|\}}tjj|d}|tjj|d}||jkrhtd||f|rxtjj|}|jtjj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rIrJrK splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namerdrSrrrrENs    zCCompiler.object_filenamescCs0|dk s t|rtjj|}tjj|||jS)N)rFrIrJrrshared_lib_extension)rrrCrrrrshared_object_filename_s  z CCompiler.shared_object_filenamecCs4|dk s t|rtjj|}tjj|||jp.dS)Nr)rFrIrJrr exe_extension)rrrCrrrrr}es  zCCompiler.executable_filenamestaticc Csl|dk s t|d krtdt||d}t||d}tjj|\}}|||f} |r\d}tjj||| S) Nrrudylib xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rrurr)rFrgetattrrIrJsplitr) rr9rvrCrZfmtrSr5rdfilenamerrrrxks  zCCompiler.library_filenamer(cCstj|dS)N)r rU)rmsglevelrrrannounce~szCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst||jddS)N)r )rr )rcmdrrrrszCCompiler.spawncCst|||jdS)N)r )rr )rrQdstrrrrszCCompiler.move_filecCst|||jddS)N)r )rr )rr)moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r()Nr()r)Br! __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr`r_rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrTrWrXrYrZr[r^rerhrkrjrnrzrwr|rtryr{r~rrrrrrErr}rxrrrr rrrrrrrr s    $   +  "   B  4    * +      r cygwin.*unixposixntmsvccCsV|dkrtj}|dkrtj}x4tD],\}}tj||dk sJtj||dk r"|Sq"WdS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rIr)rplatform_default_compilersrematch)osnamerpatterncompilerrrrget_default_compilers r unixccompiler UnixCCompilerstandard UNIX-style compiler _msvccompiler MSVCCompilerMicrosoft Visual C++cygwinccompilerCygwinCCompiler'Cygwin port of GNU C Compiler for Win32Mingw32CCompiler(Mingw32 port of GNU C Compiler for Win32 bcppcompiler BCPPCompilerBorland C++ Compiler)rrcygwinZmingw32ZbcppcCs\ddlm}g}x,tjD] }|jd|dt|dfqW|j||}|jddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXy*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rIr)rrriZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2    rcCsg}x|D]}t|to2dt|ko.dkns@td|t|dkr`|jd|dq t|dkr |ddkr|jd|dq |jd|q Wx|D]}|jd |qW|S) aGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. r(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srNz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrOZmacror5rrrrG s &    rGc Csg}x|D]}|j|j|q Wx4|D],}|j|}t|trJ||}q(|j|q(Wx^|D]V}tjj|\}} |r|j|g| } | r|j| q|j d|q^|j|j |q^W|S)acGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). z6no library file corresponding to '%s' found (skipping)) r2rrr$rDrIrJrrrr) rrrrZlib_optsr5optrZlib_dirZlib_nameZlib_filerrrgen_lib_options7s$        rrrrrrr)rrr)NN)rrr)rrr)rrr)rrr)rrr)NNrrr)rrrIrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrGrrrrrsD      --PKD]<<%__pycache__/util.cpython-36.opt-1.pycnu[3 \5Q@sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZdaddZddZd(ddZdaaaddZddZd)ddZddZd*ddZd d!Zd+d"d#Z d,d$d%Z!Gd&d'd'Z"dS)-zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorcCstjdkrnd}tjj|}|d)kr(tjStjjd|}tj|t||j}|dkr\dS|dkrhdStjSd tjkrtjd Stjd kst td  rtjStj \}}}}}|jj d d }|j dd}|j d d}|dddkrd||fS|dddkrV|ddkrd}dt |dd|ddf}ddd} |d| tj 7}n|dd d!krtd||fS|ddd"krd#|||fS|dd$d%krd%}tjd&tj} | j|} | r| j}n>|dd$d'krddl} ddl} | j| jj|||\}}}d(|||fS)*aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. for IRIX the architecture isn't particularly important (IRIX only runs on SGI hardware), but for Linux the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u irix-5.3 irix64-6.2 Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win-ia64 (64bit Windows on Itanium) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntz bit ()amd64z win-amd64itaniumzwin-ia64_PYTHON_HOST_PLATFORMposixuname/ _-Nlinuxz%s-%ssunosr5solarisz%d.%s32bit64bit)ilz.%sirixaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionfindplatformlenlowerenvironhasattrrreplaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigget_platform_osx sysconfigget_config_vars)prefixijlookosnamehostreleaser'machinebitnessrel_remr6 distutilsrF&/usr/lib64/python3.6/distutils/util.py get_platformsX            rHcCs~tjdkr|S|s|S|ddkr.td||ddkrFtd||jd}xd|krf|jdqRW|srtjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. rrzpath '%s' cannot be absoluterzpath '%s' cannot end with '/'.r#)r$sep ValueErrorsplitremovecurdirpathjoin)pathnamepathsrFrFrG convert_pathos       rScCstjdkr._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)r]r1subKeyErrorrK)sr_r`varrFrFrG subst_varss  reerror: cCs |t|S)N)r^)excr:rFrFrGgrok_environment_errorsrhcCs(tjdtjatjdatjdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r1r2string whitespace _wordchars_re _squote_re _dquote_rerFrFrFrG _init_regexs rncCstdkrt|j}g}d}x`|rtj||}|j}|t|kr\|j|d|P||tjkr|j|d|||dj }d}n||dkr|d|||dd}|d}n||dkrt j||}n*||dkrt j||}nt d|||dkr"t d|||j\}}|d|||d|d||d}|jd }|t|kr"|j|Pq"W|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. NrrTr'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rkrnstripr4endr*appendrirjlstriprlrm RuntimeErrorrKspan)rcZwordsposrDrrZbegrFrFrG split_quoteds@         ,   rxcCsP|dkr6d|j|f}|dddkr6|ddd}tj||sL||dS) aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rrz,)rr ry)__name__rinfo)funcargsmsgverbosedry_runrFrFrGexecutes  rcCs2|j}|dkrdS|dkr dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. yyesttrueon1rnnoffalseoff0rzinvalid truth value %rN)rrrrrr)rrrrrr)r+rK)valrFrFrG strtobool0s rrcCsTddl}tjrtd|dkr*do(|dk}|s8yddlm} | d\} } Wn.tk rzddlm} d| d} } YnXtj d| |s| dk rt j | d } n t | d } | j d | j d jtt|d | j d |||||f| jtjg}|j|j|j| t||dtt j| fd| |dnddlm}x|D]}|dddkrhqL|dkr|dkrdn|}tjj||d}n tjj|}|}|r|dt||krtd||f|t|d}|rt j j||}t j j!|}|rL|st"||r.DistutilsRefactoringToolc_stj|f|dS)N)rerror)selfr~r}kwrFrFrG log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dS)N)rr{)rr~r}rFrFrG log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dS)N)rr)rr~r}rFrFrG log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)rz __module__ __qualname__rrrrFrFrFrGDistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrrFrFrGrun_2to3s  rcCsddlm}ddlm}ddlm}|} tj} tj|z | j Wdtj| X| j | j dd<|rx(|j D]} | j } | sqt| j| qtWg} xV| j D]L} tjj|| }|tjj||tjj|| |dd}|dr| j|qWtdd | D|||d | S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNr)updatecSsg|]}|jjdr|qS)z.py)r+endswith).0fnrFrFrG sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrr$getcwdchdirfindallZallfilesr splitlinesrqZprocess_template_linerOrPdirnamersr)srcdesttemplaterrrrrrZfilelistrNlineZcopiedfilenameZoutnameresrFrFrGcopydir_run_2to3s4        rc@s$eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jS)N)rrrr)rrrFrFrGr,szMixin2to3.run_2to3)rzrr__doc__rrrrrFrFrFrGrs r)rf)Nrr)rrNNrrN)NNN)NNNN)#rr$r1importlib.utilrrir&Zdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrrErrrHrSrWrYr]rerhrkrlrmrnrxrrrrrrrrFrFrFrGs@     ]  =    PKD]a"-__pycache__/archive_util.cpython-36.opt-1.pycnu[3 \F! @sDdZddlZddlmZddlZy ddlZWnek rDdZYnXddlmZddl m Z ddl m Z ddl mZyddlmZWnek rdZYnXydd lmZWnek rdZYnXd d Zd d Zd!ddZd"ddZed#gdfed$gdfed%gdfed&gdfed'gdfegdfdZddZd(dd ZdS))zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns a gid, given a group name.N)rKeyError)nameresultr ./usr/lib64/python3.6/distutils/archive_util.py_get_gids  rc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns an uid, given a user name.Nr )rr )r r r r r_get_uid+s  rgzipc s.dddddd}dddd d }|d k r:||jkr:td |d } |dkrZ| |j|d7} ttjj| |ddd l} tj dt t fdd} |s| j | d||} z| j || dWd | jX|dkr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. Zgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrNzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr)dry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer%rtarZcompressed_namecmdr )rrrrr make_tarball7s<          r2c Cs|d}ttjj||dtdkrp|r.d}nd}ytd|||g|dWn tk rjtd|YnXn:tjd|||sytj |d tj d }Wn&t k rtj |d tj d }YnX|tj krtjjtjj|d }|j||tjd |xtj|D]\}} } x>| D]6} tjjtjj|| d }|j||tjd |qWxJ| D]B} tjjtjj|| }tjj|rV|j||tjd |qVWqW|j|S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.zip)rNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr"r#r$zipfilerrrr&ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfiler)) r-r.r/rZ zip_filenameZ zipoptionsr3r#dirpathZdirnames filenamesr r r r make_zipfilesJ          r?rzgzip'ed tar-filerzbzip2'ed tar-filerzxz'ed tar-filezcompressed tar filezuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr0r3cCsx|D]}|tkr|SqWdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss rBcCstj}|dk r6tjd|tjj|}|s6tj||dkrDtj}d|i} y t|} Wn t k rxt d|YnX| d} x| dD]\} } | | | <qW|dkr|| d<|| d <z| ||f| }Wd|dk rtjd |tj|X|S) aCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. Nzchanging into '%s'rzunknown archive format '%s'rr3rrzchanging back to '%s') r"getcwdrdebugr#abspathchdirr7r@r r )r-rAZroot_dirr.r/rrrZsave_cwdkwargsZ format_infofuncargvalfilenamer r r make_archives2       rM)rrrNN)rr)rr)rr)rr)rr)rN)NNrrNN)__doc__r"warningsrr+r5 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr2r?r@rBrMr r r rsB            G =      PKD]=&&#__pycache__/filelist.cpython-36.pycnu[3 \ 2@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejfd d Zd d ZdddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@s|eZdZdZdddZddZejfddZd d Z d d Z d dZ ddZ ddZ ddZddZdddZdddZdS) FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr */usr/lib64/python3.6/distutils/filelist.py__init__szFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCsddlm}|rt|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrr r r r )s zFileList.debug_printcCs|jj|dS)N)rappend)r itemr r r r3szFileList.appendcCs|jj|dS)N)rextend)r itemsr r r r6szFileList.extendcCs@tttjj|j}g|_x |D]}|jjtjj|q WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s z FileList.sortcCsDx>tt|jdddD]$}|j||j|dkr|j|=qWdS)Nr)rangelenr)r ir r r remove_duplicatesCszFileList.remove_duplicatescCs|j}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSr )r).0wr r r Wsz1FileList._parse_template_line..r recursive-includerecursive-excludez,'%s' expects ...cSsg|] }t|qSr )r)r+r,r r r r-]sgraftprunez#'%s' expects a single zunknown action '%s')r&r'r(r))r.r/)r1r2)rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs,         zFileList._parse_template_linecCsX|j|\}}}}|dkrZ|jddj|x&|D]}|j|dds4tjd|q4Wn|dkr|jddj|x&|D]}|j|dds|tjd |q|Wn|d kr|jd dj|x&|D]}|j|d dstjd |qWnj|dkr8|jddj|x*|D]"}|j|d dstjd|qWn|dkr|jd|dj|fx,|D]$}|j||ds`tjd||q`Wn|dkr|jd|dj|fx|D]$}|j||dstjd||qWnx|dkr|jd||jd|dsTtjd|nB|dkrH|jd||jd|dsTtjd|n td|dS)Nr&zinclude  r )anchorz%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r1zgraft z+warning: no directories found matching '%s'r2zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r7r rinclude_patternrr exclude_patternr)r r3r4r5rr6patternr r r process_template_linehsf           zFileList.process_template_liner rcCspd}t||||}|jd|j|jdkr4|jx6|jD],}|j|r<|jd||jj|d}qr;r<r r r r rs     L ,rcCs&ddtj|ddD}ttjj|S)z% Find all files under 'path' css,|]$\}}}|D]}tjj||VqqdS)N)rrr)r+basedirsrfiler r r sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsr r r _find_all_simplesrRcCs6t|}|tjkr.tjtjj|d}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )start) rRrrI functoolspartialrrelpathrlist)rrZmake_relr r r rs   rcCs8tj|}tj}tjdkrd}d|}tjd||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?s  i  PKD]6bb'__pycache__/errors.cpython-36.opt-1.pycnu[3 \ @s8dZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N)__name__ __module__ __qualname____doc__rr(/usr/lib64/python3.6/distutils/errors.pyr src@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).N)rrrrrrrrrsrc@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.N)rrrrrrrrr $sr c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.N)rrrrrrrrr *sr c@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.N)rrrrrrrrr3src@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.N)rrrrrrrrr8src@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).N)rrrrrrrrr>src@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).N)rrrrrrrrrCsrc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.N)rrrrrrrrrHsrc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.N)rrrrrrrrrKsrc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.N)rrrrrrrrrOsrc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.N)rrrrrrrrrRsrc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.N)rrrrrrrrrUsrc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.N)rrrrrrrrrXsrc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.N)rrrrrrrrr\src@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.N)rrrrrrrrr`srN)r Exceptionrrr r r r r rrrrrrrrrrrrrrrr s& PKD]4Scr@normcaseZsrc_extensionsr rArCrB obj_extension)r/Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess      z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrH)__name__ __module__ __qualname____doc__r+rLZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr$r9rDrNrrrrrYs ; Krc@seZdZdZdZdddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rc Csxtj|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rHz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %s)rr r!r"r#) rr$r*r) is_cygwingccr r-r,r.r)r/r0r1r2r3Z entry_pointrrrr$s&   zMingw32CCompiler.__init__N)rrr)rOrPrQrRr+r$rrrrrSsrSokznot okZ uncertaincCsddlm}dtjkrtdfS|j}y@t|}z(d|jkrJtd|fStd|fSWd|j XWn.t k r}zt d ||j ffSd}~XnXdS) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'Nzcouldn't read '%s': %s) distutilsrVrrr&get_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rVfnconfig_hexcrrrr%Hs    r%s(\d+\.\d+(\.\d+)*)c Csl|jd}t|dkrdSt|dtdj}z |j}Wd|jXtj|}|dkrZdSt |j dj S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNT)shellstdoutr) splitrrrrdrZr\ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rocCsdddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)ro).0rjrrr sz get_versions..)tuple)Zcommandsrrrr(s r(cCstddg}|jjdS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rmrrrrTs rT)'rRr=rr; subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rWr Zdistutils.versionrZdistutils.spawnrrrrSr&r[r^r%compilerfror(rTrrrrs0)     ;1+ PKD]B::$__pycache__/cmd.cpython-36.opt-1.pycnu[3 \J@srdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ Gdd d e ZdS) ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@s"eZdZdZgZddZddZddZdd Zd d Z dCddZ ddZ dDddZ ddZ dEddZdFddZddZdGddZdd Zd!d"Zd#d$Zd%d&ZdHd'd(ZdId*d+Zd,d-Zd.d/Zd0d1ZdJd2d3ZdKd5d6ZdLd7d8ZdMd9d:ZdNd;d<ZdOd=d>Z dPd?d@Z!dQdAdBZ"d S)RCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsbddlm}t||std|jtkr0td||_|jd|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r%/usr/lib64/python3.6/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|jd|_dS)N)rfinalize_options)rrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr d|j}|j||tjd|d}x\|jD]R\}}}|j|}|d dkrp|dd }t||}|j|d||ftjdqDWdS) Nr) longopt_xlatezcommand options for '%s':)levelz r=z%s = %sr&) Zdistutils.fancy_getoptr#get_command_nameannouncerINFO user_options translater)rheaderindentr#optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrruns z Command.runrcCstj||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N)r)rmsgr$rrrr(szCommand.announcecCs&ddlm}|r"t|tjjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr3printsysstdoutflush)rr2r3rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr.whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs|j|d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)r>)rr.r<rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||tjd|n6t|trTtdd|D}nd}|sltd||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdS)N)r r:).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r:r9resplitlistallr)rr.r=okrrrensure_string_lists   zCommand.ensure_string_listcCs8|j|||}|dk r4|| r4td|||fdS)Nzerror in '%s' option: )r>r)rr.Ztesterr;Z error_fmtr<r=rrr_ensure_tested_stringszCommand._ensure_tested_stringcCs|j|tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rJospathisfile)rr.rrrensure_filenames zCommand.ensure_filenamecCs|j|tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rJrLrMisdir)rr.rrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrRr __name__)rrrrr' s zCommand.get_command_namecGsJ|jj|}|jx0|D](\}}t||dkrt||t||qWdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr!rr9)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs|jj||}|j|S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrUr!)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|jj||S)N)rreinitialize_command)rrWZreinit_subcommandsrrrrY0szCommand.reinitialize_commandcCs|jj|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rrWrrrrZ4szCommand.run_commandcCs6g}x,|jD]"\}}|dks$||r |j|q W|S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCstjd|j|dS)Nzwarning: %s: %s )rwarnr')rr2rrrr_Ksz Command.warncCstj||||jddS)N)r)rexecuter)rfuncargsr2r$rrrr`NszCommand.executecCstj|||jddS)N)r)rmkpathr)rnamemoderrrrdQszCommand.mkpathc Cstj|||||j ||jdS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.))r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrgTs  zCommand.copy_filec Cstj||||||j |jdS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. )r)r copy_treerr)rrhrirjrkZpreserve_symlinksr$rrrrm]s zCommand.copy_treecCstj|||jdS)z$Move a file respecting dry-run flag.)r)r move_filer)rsrcdstr$rrrrnfszCommand.move_filecCs ddlm}||||jddS)z2Spawn an external command respecting dry-run flag.r)spawn)rN)Zdistutils.spawnrqr)rcmdZ search_pathr$rqrrrrqjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrsrtrrrruos zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|dj|f}|jsdtj||rv|j ||||n t j |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r:rFtupler joinrrZ newer_groupr`rdebug)rZinfilesrirarbZexec_msgZskip_msgr$rrr make_fileus  zCommand.make_file)Nr")r)N)N)N)r)r)Nr)rc)rrNr)rrrr)r)rr)NNNN)NNr)#rT __module__ __qualname____doc__r[rrr!rr r0r1r(r8r>r@rIrJrOrQr'rVrXrYrZr^r_r`rdrgrmrnrqrurzrrrrr sF0              r c@s6eZdZdZdgZddZddZd d Zd d Zd S) install_miscz{Common base class for installing some files in a subdirectory. Currently used by install_data and install_scripts. install-dir=d!directory to install the files tocCsd|_g|_dS)N) install_diroutfiles)rrrrrszinstall_misc.initialize_optionscCs|jd|dfdS)NZinstallr)rV)rdirnamerrr_install_dir_fromszinstall_misc._install_dir_fromcCsRg|_|sdS|j|jx2|D]*}|j||j|jjtjj|j|q WdS)N)rrdrrgr\rLrMrx)rZfilelistfrrr _copy_filess  zinstall_misc._copy_filescCs|jS)N)r)rrrr get_outputsszinstall_misc.get_outputsN)rrr) rTr{r|r}r*rrrrrrrrr~s  r~)r}r5rLrDZdistutils.errorsrZ distutilsrrrrrrr r~rrrrs  PKD]uTW$$%__pycache__/util.cpython-36.opt-2.pycnu[3 \5Q@sddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZddZd d Zd d Zdad dZddZd'ddZdaaaddZddZd(ddZddZd)ddZdd Zd*d!d"Zd+d#d$Z Gd%d&d&Z!dS),N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorcCstjdkrnd}tjj|}|d(kr(tjStjjd|}tj|t||j}|dkr\dS|dkrhdStjSd tjkrtjd Stjd kst td  rtjStj \}}}}}|jj d d }|j dd}|j d d}|dddkrd||fS|dddkrV|ddkrd}dt |dd|ddf}ddd} |d| tj 7}n|ddd krtd||fS|ddd!krd"|||fS|dd#d$krd$}tjd%tj} | j|} | r| j}n>|dd#d&krddl} ddl} | j| jj|||\}}}d'|||fS))Nntz bit ()amd64z win-amd64itaniumzwin-ia64_PYTHON_HOST_PLATFORMposixuname/ _-linuxz%s-%ssunosr5solarisz%d.%s32bit64bit)ilz.%sirixaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionfindplatformlenlowerenvironhasattrrreplaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigget_platform_osx sysconfigget_config_vars)prefixijlookosnamehostreleaser'machinebitnessrel_remr6 distutilsrF&/usr/lib64/python3.6/distutils/util.py get_platformsX            rHcCs~tjdkr|S|s|S|ddkr.td||ddkrFtd||jd}xd|krf|jdqRW|srtjStjj|S)Nrrzpath '%s' cannot be absoluterzpath '%s' cannot end with '/'.r#)r$sep ValueErrorsplitremovecurdirpathjoin)pathnamepathsrFrFrG convert_pathos       rScCstjdkr._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s')r]r1subKeyErrorrK)sr_r`varrFrFrG subst_varss  reerror: cCs |t|S)N)r^)excr:rFrFrGgrok_environment_errorsrhcCs(tjdtjatjdatjdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r1r2string whitespace _wordchars_re _squote_re _dquote_rerFrFrFrG _init_regexs rncCstdkrt|j}g}d}x`|rtj||}|j}|t|kr\|j|d|P||tjkr|j|d|||dj }d}n||dkr|d|||dd}|d}n||dkrt j||}n*||dkrt j||}nt d|||dkr"t d|||j\}}|d|||d|d||d}|jd}|t|kr"|j|Pq"W|S) NrrTr'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rkrnstripr4endr*appendrirjlstriprlrm RuntimeErrorrKspan)rcZwordsposrDrrZbegrFrFrG split_quoteds@         ,   rxcCsP|dkr6d|j|f}|dddkr6|ddd}tj||sL||dS)Nz%s%rrz,)rr ry)__name__rinfo)funcargsmsgverbosedry_runrFrFrGexecutes  rcCs2|j}|dkrdS|dkr dStd|fdS)Nyyesttrueon1rnnoffalseoff0rzinvalid truth value %r)rrrrrr)rrrrrr)r+rK)valrFrFrG strtobool0s rrcCsTddl}tjrtd|dkr*do(|dk}|s8yddlm} | d\} } Wn.tk rzddlm} d| d} } YnXtj d| |s| dk rt j | d} n t | d} | j d | j d jtt|d | j d |||||f| jtjg}|j|j|j| t||d tt j| fd| |d nddlm}x|D]}|dddkrhqL|dkr|dkrdn|}tjj||d}n tjj|}|}|r|dt||krtd||f|t|d}|rt j j||}t j j!|}|rL|st"||r.DistutilsRefactoringToolc_stj|f|dS)N)rerror)selfr~r}kwrFrFrG log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dS)N)rr{)rr~r}rFrFrG log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dS)N)rr)rr~r}rFrFrG log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)rz __module__ __qualname__rrrrFrFrFrGDistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrrFrFrGrun_2to3s  rcCsddlm}ddlm}ddlm}|} tj} tj|z | j Wdtj| X| j | j dd<|rx(|j D]} | j } | sqt| j| qtWg} xV| j D]L} tjj|| }|tjj||tjj|| |dd}|dr| j|qWtdd| D|||d | S) Nr)mkpath) copy_file)FileListr)updatecSsg|]}|jjdr|qS)z.py)r+endswith).0fnrFrFrG sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrr$getcwdchdirfindallZallfilesr splitlinesrqZprocess_template_linerOrPdirnamersr)srcdesttemplaterrrrrrZfilelistrNlineZcopiedfilenameZoutnameresrFrFrGcopydir_run_2to3s4        rc@s eZdZdZdZdZddZdS) Mixin2to3NcCst||j|j|jS)N)rrrr)rrrFrFrGr,szMixin2to3.run_2to3)rzrrrrrrrFrFrFrGrsr)rf)Nrr)rrNNrrN)NNN)NNNN)"r$r1importlib.utilrrir&Zdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrrErrrHrSrWrYr]rerhrkrlrmrnrxrrrrrrrrFrFrFrGs>     ]  =    PKD]#oNN.__pycache__/unixccompiler.cpython-36.opt-2.pycnu[3 _Vj:@sddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z m Z mZmZddlmZejdkrzddlZGdd d eZdS) N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execs@tj|||\}}}tjd}|r6||kr6|j||||fS)NLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir) __class__//usr/lib64/python3.6/distutils/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc Cs|jd||}|\}}}t||} |j| } |r>| jd|g|rN|| dd<|r\| j|| j||js~|dks~t||r|r|jtj j |y|j | Wn*t k r} zt | WYdd} ~ XnXdS)Nz-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr#r#r$ preprocess^s$      zUnixCCompiler.preprocessc Csp|j}tjdkr tj|||}y |j|||d|g|Wn*tk rj}zt|WYdd}~XnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r#r#r$_compilexs   zUnixCCompiler._compilercCs|j||\}}|j||d}|j||r|jtjj||j|j|g||j |j ry|j|j |gWqt k r}zt |WYdd}~XqXn t jd|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr?Zoutput_libnamer;r@ target_langoutput_filenamer2r#r#r$create_static_libs zUnixCCompiler.create_static_libcCs|j||\}}|j|||}|\}}}t||||}t|ttdfsPtd|dk rftjj ||}|j ||r||j |d|g}| rdg|dd<| r| |dd<| r|j | |j tjj|y|tjkr|jdd}n|jdd}| dkrR|jrRd}tjj|ddkrDd}xd||krB|d7}q(W|j|||<tjd krjtj||}|j||Wn,tk r}zt|WYdd}~XnXn tjd |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=r zskipping %s (up-to-date))r<rr isinstancestrtype TypeErrorr(r)joinr>r?r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;rr r!Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerir2r#r#r$linksH      zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCstjjtjd}tjdddkr,d|StjdddkrFd|Stjddd krz|j|rnd d|gSd d|gStjddd kstjddd krd|gS|j|rtjddkrd|Sd|Snd|SdS)NCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrOrr#r#r$runtime_library_dir_options    $  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_option szUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptjd}tjd|} | dkrfd } n | jd } x|D]} tj j | |} tj j | |} tj j | |}tj j | |}tjdko| j d s| j d o| j d  rBtj j | | d d|} tj j | | d d|} tj j | | d d|}tj j | | d d|}tj j | rT| Stj j |rf|Stj j | rx| Stj j |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr CFLAGSz-isysroot\s+(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrYr@Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrOr[r\r^r]r#r#r$find_library_file s>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rCrNrPrRrXrZrh __classcell__r#r#)r"r$r -sF       6,r )r(r4raZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r#r#r#r$s    PKD]W6=__pycache__/log.cpython-36.pycnu[3 \@sldZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr %/usr/lib64/python3.6/distutils/log.py__init__sz Log.__init__c Cs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }y|j d|Wn:t k r|j }|j|dj|}|j d|YnX|jdS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs|j|||dS)N)r")r rrr r r r log'szLog.logcGs|jt||dS)N)r"r)r rr r r r debug*sz Log.debugcGs|jt||dS)N)r"r)r rr r r r info-szLog.infocGs|jt||dS)N)r"r)r rr r r r warn0szLog.warncGs|jt||dS)N)r"r)r rr r r r error3sz Log.errorcGs|jt||dS)N)r"r)r rr r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r"r#r$r%r&r'r(r r r r rs rcCstj}|t_|S)N) _global_logr)roldr r r set_thresholdAsr.cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r.rrr)vr r r set_verbosityGs   r0)__doc__rrrrrrrr,r#r$r%r&r'r(r.r0r r r r s +PKD]c0__pycache__/cygwinccompiler.cpython-36.opt-2.pycnu[3 \[@@sddlZddlZddlZddlmZmZmZddlZddlm Z m Z ddl m Z ddl mZddlmZmZmZmZddlmZddlmZdd lmZd d ZGd d d e ZGdddeZdZdZdZddZ ej!dZ"ddZ#ddZ$ddZ%dS)N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)NzMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )sysversionfind ValueError)Zmsc_posZmsc_verr1/usr/lib64/python3.6/distutils/cygwinccompiler.py get_msvcr?s rc @sNeZdZdZdZdZdZdZdZdZ dd d Z d d Z dddZ dddZ d S)CygwinCCompilercygwinz.oz.az.dllzlib%s%sz%s%sz.exercCstj||||t\}}|jd||f|tk rB|jd|t\|_|_|_ |j|j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |jdnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %s)compiler compiler_so compiler_cxx linker_exe linker_soz2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr$ds<      zCygwinCCompiler.__init__cCs|dks|dkrVy|jdd|d|gWqtk rR}zt|WYdd}~XqXnNy"|j|j||d|g|Wn*tk r}zt|WYdd}~XnXdS)Nz.rcz.resZwindresz-iz-o)Zspawnr r r )r/objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsRtj| p g} tj|pg}tj|p&g}|j|j|dk oP||jksT|jdkrtjj|d}tjjtjj |\}}tjj ||d}tjj |d|d}dtjj |dg}x|D]}|j |qW|j t ||fd||jd kr| jd |g| jd |gn |j || s*| j d tj||||||||d| | | | | dS) Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr.Z EXECUTABLEr,ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r/Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr7Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrDs:         zCygwinCCompiler.linkcCs|dkr d}g}x|D]}tjjtjj|\}}||jddgkrTtd||f|rdtjj|}|dkr|jtjj||||j q|jtjj|||j qW|S)NrH.rc.resz"unknown file type '%s' (from '%s'))rJrI) r=r>r@normcaseZsrc_extensionsr rArCrB obj_extension)r/Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess      z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrH)__name__ __module__ __qualname__r+rLZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr$r9rDrNrrrrrYs ; Krc@seZdZdZdddZdS)Mingw32CCompilerZmingw32rc Csxtj|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rHz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %s)rr r!r"r#) rr$r*r) is_cygwingccr r-r,r.r)r/r0r1r2r3Z entry_pointrrrr$s&   zMingw32CCompiler.__init__N)rrr)rOrPrQr+r$rrrrrRsrRokznot okZ uncertaincCsddlm}dtjkrtdfS|j}y@t|}z(d|jkrJtd|fStd|fSWd|j XWn.t k r}zt d||j ffSd}~XnXdS) Nr) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s) distutilsrUrrr&get_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rUfnconfig_hexcrrrr%Hs    r%s(\d+\.\d+(\.\d+)*)c Csl|jd}t|dkrdSt|dtdj}z |j}Wd|jXtj|}|dkrZdSt |j dj S)NrT)shellstdoutr) splitrrrrcrYr[ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rncCsdddg}tdd|DS)Nzgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rn).0rirrr sz get_versions..)tuple)Zcommandsrrrr(s r(cCstddg}|jjdS)Nrz -dumpmachinescygwin)rstripendswith)rlrrrrSs rS)&r=rr; subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rVr Zdistutils.versionrZdistutils.spawnrrrrRr&rZr]r%compilerernr(rSrrrr0s.     ;1+ PKD]_))-__pycache__/fancy_getopt.cpython-36.opt-1.pycnu[3 \xE@sdZddlZddlZddlZddlZddlTdZejdeZejdeefZ e j ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrdZx2dD]*ZedeedjeeeeqWdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZd d d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZddZd"ddZd#ddZdS)$ FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsN||_i|_|jr|ji|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr./usr/lib64/python3.6/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs,|jjx|jD]}||j|d<qWdS)Nr)rclearr)roptionrrrrQs  zFancyGetopt._build_indexcCs||_|jdS)N)rr)rrrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|jj|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs     zFancyGetopt.add_optioncCs ||jkS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)r)rrrrr has_optioncszFancyGetopt.has_optioncCs |jtS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores.) translate longopt_xlate)rrrrr get_attr_namehszFancyGetopt.get_attr_namecCsRxL|jD]@\}}||jkr.td|||f||jkr td|||fq WdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs|j|d||_dS)z'Set the aliases for this option parser.r N)r#r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs|j|d||_dS)zSet the negative aliases for this option parser. 'negative_alias' should be a dictionary mapping option names to option names, both the key and value must already be defined in the option table.znegative aliasN)r#r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|jji|_x|jD]}t|dkrH|\}}}d}n(t|dkrb|\}}}}ntd|ft|t  st|dkrt d||dkpt|t ot|dkst d |||j|<|jj ||dd kr|r|d }|dd}d|j |<nF|j j|}|dk rB|j |r8t d ||f||jd<d|j |<|jj|}|dk r|j ||j |krt d ||ftj|st d||j||j|<|r&|jj |||j|d<q&WdS)zPopulate the various data structures that keep tabs on the option table. Called by 'getopt()' before it can do anything worthwhile. rzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyr,r,)r r r rrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchrr)rrlongshorthelpr-Zalias_torrr_grok_option_tables^                   zFancyGetopt._grok_option_tablec Csr|dkrtjdd}|dkr*t}d}nd}|jdj|j}ytj|||j\}}Wn,tjk r}zt |WYdd}~XnXx|D]\}}t |dkr|ddkr|j |d}n |dd}|j j |} | r| }|j|s |jj |} | r| }d}nd}|j|} |r<|jj | dk rsB        zFancyGetopt.getoptcCs|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsxd}xV|jD]L}|d}|d}t|}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d|} |r|g} nd g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| jd ||| dfn| jd ||fn:d ||f}| r<| jd ||| dfn| jd|x$| ddD]}| j| |qXWqW| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr)r*Nr(Nr9zOption summary:r&z --%-*s %sz --%-*s z%s (-%s)z --%-*sr,r,r,)rr. wrap_textr)rheaderZmax_optrr5r6lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr7textZ opt_namesrrr generate_helpsF        zFancyGetopt.generate_helpcCs4|dkrtj}x |j|D]}|j|dqWdS)N )r:stdoutrPwrite)rrLfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname____doc__rrrrrrr#r$r%r8r>rHrPrVrrrrrs  (  M = OrcCst|}|j||j||S)N)rr%r>)optionsZ negative_optrCrBparserrrr fancy_getoptos r]cCsi|]}dt|qS)r9)ord).0Z_wscharrrr usr`cCs"|dkr gSt||kr|gS|j}|jt}tjd|}dd|D}g}x|rg}d}xZ|rt|d}|||kr|j|d|d=||}q`|r|d ddkr|d =Pq`W|r |dkr|j|dd||d|d|d<|dddkr |d=|jdj|qPW|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|] }|r|qSrr)r_Zchrrr szwrap_text..rr)r9r,r,)r. expandtabsrWS_TRANSresplitrr=)rOwidthZchunksrNZcur_lineZcur_lenrMrrrrKws:      rKcCs |jtS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )rr)r"rrrtranslate_longoptsrhc@seZdZdZgfddZdS)r<z_Dummy class just used as a place to hold command-line option values as instance attributes.cCsx|D]}t||dqWdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rA)rr[r"rrrrs zOptionDummy.__init__N)rWrXrYrZrrrrrr<sr<__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].) (z width: %drQ)rjrkrlrm)rZr:stringrer>Zdistutils.errorsZ longopt_patcompiler3Z neg_alias_rer1 maketransrrr]Z whitespacerdrKrhr<rWrOwprintr=rrrr s* T6   PKD]Fk __pycache__/spawn.cpython-36.pycnu[3 \@sdZddlZddlZddlmZmZddlmZddlm Z dddZ d d Z dd d Z ej d krvddlmZdadadddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkresz _spawn_posix...cSsg|] }t|qSr)r()r)r*rrrr+kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&zunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %sz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %dr)"rrrr execvpexecvsysplatform _cfg_targetr%get_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr#Z exit_statusrrrr Xs     &     r cCs|dkrtjjdtj}|jtj}tjj|\}}tj dkrN|dkrN|d}tjj |sx*|D]"}tjj ||}tjj |r`|Sq`WdS|SdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. NPATHZwin32z.exe) r r5r6defpathr3pathseppathsplitextr/r0isfiler)r"rKpathsbaseZextpfrrrrs    r)rrr)rrr)rrr)N)__doc__r/r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr0r%r1r4r rrrrrs       QPKD]fY &&*__pycache__/extension.cpython-36.opt-1.pycnu[3 \)@s.dZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@s"eZdZdZdddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKst|tstdt|to,tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}djt|}d |}tj|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr+/usr/lib64/python3.6/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs4              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*__doc__r'r,rrrrrs ? !rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}zhg}x\|j} | dkrfP|j | rrqT| d| d$kodknr|j d | qT|| |} || } | d} t | g} d} x| ddD]}| dk r| j |d} qt jj|d}|dd }|d d}|d%kr8| jj |q|dkrP| jj |q|dkr|jd}|d&kr| jj |dfn$| jj |d|||d dfq|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr0| j} q|dkrB| j} q|dkrT| j} q|dkrx| jj ||s| j} q|d'kr| jj |q|j d#|qW|j | qTWWd|jX|S)(z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet.c.cc.cpp.cxx.c++.m.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u.a.so.sl.o.dylibzunrecognized argument '%s')r7r8r9r:r;r<r=rD)r?r@rArBrC)Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                          rU)r.rHr"rrUrrrrs zPKD]DA88-__pycache__/msvccompiler.cpython-36.opt-1.pycnu[3 \\@sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZy,ddlZdZeZejZejZejZejZWnhek ry4ddlZddlZdZeZejZejZejZejZWnek rejdYnXYnXerejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkrej+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnyt||}Wntk r"dSXg}d}x||j kr>|}d|}y"|j|jg| |g|gWqhtk r8}zt|WYdd}~XqhXqhn||jkrtj j|}tj j|}yl|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqhtk r}zt|WYdd}~XqhXqhntd||fd |}y&|j|jg| | ||g|Wqhtk rj}zt|WYdd}~XqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rXrkZ_setup_compilerextendrhrgr/rMr-abspath _c_extensions_cpp_extensionsrrspawnrbrrrtdirnamercrmrqrfr`)r)Zsourcesrvr'Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrwZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWsj              zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy|j|jg|Wqtk r}zt|WYdd}~XqXn t j d|dS)N)rvz/OUT:zskipping %s (up-to-date)) rXrk_fix_object_argslibrary_filename _need_linkr}rZrrr r) r)rZoutput_libnamervr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libcCs|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|jd|qW||||d|g}|dk rLtjjtjj|\}}tjj tjj|d|j|}|jd|| r^| |dd<| rn|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnXn tjd|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:z/OUT:rz/IMPLIB:zskipping %s (up-to-date))rXrkrZ _fix_lib_argswarnstrr rMr-rfrrZ EXECUTABLErjrirrmrqr~rryZmkpathr}rarrr r)r)Z target_descrrrvZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksV       zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:r)r)dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjdjdD]*}tjjtjj||}tjj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr\)r]rMr-rfrzisfiler^rD)r)Zexer1fnrrrr_5s   zMSVCCompiler.find_exex86cCstsgS|d}|jdkr,d|j|jf}nd|j|f}xHtD]@}t||}|r@|jdkrr|jj||jdS||jdSq@W|jdkrx,tD]$}t|d|jdk r|jd PqWgS) zGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. z dirsrRz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr\r:z%s\6.0NzIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrSrUr,r rVr6rDr)r)r-platformrrrrrrrdKs(        zMSVCCompiler.get_msvc_pathscCs6|dkr|jd}n |j|}|r2dj|tj|<dS)zSet environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. rZZlibraryr\N)rdrfrMr^)r)rr1rrrreos   zMSVCCompiler.set_path_env_var)rrr)rrl)NNNrNNN)NrN) NNNNNrNNNN)r)r)r7r8r9__doc__Z compiler_typeZ executablesr{r|rrrtrprsruZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr+rkrxrrrrrrrr_rdrerrrrrQsP  B  V  F  $rQg @z3Importing new compiler from distutils.msvc9compiler)rQ)r&).rrArMZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr,rr rr&rHrLrPrQrZOldMSVCCompilerZdistutils.msvc9compilerrrrrs^      - 9   PKD]a"'__pycache__/archive_util.cpython-36.pycnu[3 \F! @sDdZddlZddlmZddlZy ddlZWnek rDdZYnXddlmZddl m Z ddl m Z ddl mZyddlmZWnek rdZYnXydd lmZWnek rdZYnXd d Zd d Zd!ddZd"ddZed#gdfed$gdfed%gdfed&gdfed'gdfegdfdZddZd(dd ZdS))zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns a gid, given a group name.N)rKeyError)nameresultr ./usr/lib64/python3.6/distutils/archive_util.py_get_gids  rc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns an uid, given a user name.Nr )rr )r r r r r_get_uid+s  rgzipc s.dddddd}dddd d }|d k r:||jkr:td |d } |dkrZ| |j|d7} ttjj| |ddd l} tj dt t fdd} |s| j | d||} z| j || dWd | jX|dkr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. Zgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrNzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr)dry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer%rtarZcompressed_namecmdr )rrrrr make_tarball7s<          r2c Cs|d}ttjj||dtdkrp|r.d}nd}ytd|||g|dWn tk rjtd|YnXn:tjd|||sytj |d tj d }Wn&t k rtj |d tj d }YnX|tj krtjjtjj|d }|j||tjd |xtj|D]\}} } x>| D]6} tjjtjj|| d }|j||tjd |qWxJ| D]B} tjjtjj|| }tjj|rV|j||tjd |qVWqW|j|S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.zip)rNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr"r#r$zipfilerrrr&ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfiler)) r-r.r/rZ zip_filenameZ zipoptionsr3r#dirpathZdirnames filenamesr r r r make_zipfilesJ          r?rzgzip'ed tar-filerzbzip2'ed tar-filerzxz'ed tar-filezcompressed tar filezuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr0r3cCsx|D]}|tkr|SqWdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss rBcCstj}|dk r6tjd|tjj|}|s6tj||dkrDtj}d|i} y t|} Wn t k rxt d|YnX| d} x| dD]\} } | | | <qW|dkr|| d<|| d <z| ||f| }Wd|dk rtjd |tj|X|S) aCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. Nzchanging into '%s'rzunknown archive format '%s'rr3rrzchanging back to '%s') r"getcwdrdebugr#abspathchdirr7r@r r )r-rAZroot_dirr.r/rrrZsave_cwdkwargsZ format_infofuncargvalfilenamer r r make_archives2       rM)rrrNN)rr)rr)rr)rr)rr)rN)NNrrNN)__doc__r"warningsrr+r5 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr2r?r@rBrMr r r rsB            G =      PKD]n7#Fāā*__pycache__/ccompiler.cpython-36.opt-1.pycnu[3 \7@sdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd-Zd.ddZd/d0d1d2d3d!Zd"d#Zd4d$d%Zd&d'Zd(d)ZdS)5zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddZ dddgZ dqdd Zd d Zd d ZddZddZdrddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d.d/Z!dsd0d1Z"d2d3Z#d4d5Z$d6d7Z%d8d9Z&dtd:d;Z'dudd?Z)dvd@dAZ*dBZ+dCZ,dDZ-dwdEdFZ.dxdGdHZ/dydIdJZ0dzdKdLZ1dMdNZ2dOdPZ3dQdRZ4d{dSdTZ5d|dUdVZ6d}dXdYZ7d~dZd[Z8dd\d]Z9dd_d`Z:ddbdcZ;dddeZdjdkZ?dldmZ@ddodpZAdS) CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nczc++Zobjc)z.cz.ccz.cppz.cxxz.mrcCsf||_||_||_d|_g|_g|_g|_g|_g|_g|_ x$|j j D]}|j ||j |qHWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr+/usr/lib64/python3.6/distutils/ccompiler.py__init__UszCCompiler.__init__cKs@x:|D]2}||jkr(td||jjf|j|||qWdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dS)N) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}x&|jD]}|d|kr |S|d7}q WdS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCsdx^|D]V}t|toFt|dkoFt|dts:|ddkoFt|dtstd|ddqWdS) zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. r(Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(r-)r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss    z"CCompiler._check_macro_definitionscCs.|j|}|dk r|j|=|jj||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N)r,rappend)rr)r'r*rrr define_macros zCCompiler.define_macrocCs0|j|}|dk r|j|=|f}|jj|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N)r,rr2)rr)r*Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|jj|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|jj|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|jj|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|jj|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|jj|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t ||}i} xRt t |D]B} || } || } t j j| d} |jt j j| | | f| | <qW||||| fS)z;Process arguments and decide which source files to compile.Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr()rr$r%r0rlistrr.object_filenamesgen_preprocess_optionsranger/ospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr*srcobjextrrr_setup_compile6s8   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrNdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)rr$r%r0rrDrr.)rrrrrrr_fix_compile_argsjs   zCCompiler._fix_compile_argscCs|j||d}|ifS)a+Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. )r)rE)rrLrrMrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)zTypecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. z,'objects' must be a list or tuple of stringsNz%'output_dir' must be a string or None)r$rDr.r0rr%)rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)a;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. Tnewer)ZmissingN)rr r)rr output_filer[rrr _need_links  zCCompiler._need_linkc Cst|ts|g}d}t|j}x^|D]V}tjj|\}}|jj|}y |jj |}||krb|}|}Wq$t k rxYq$Xq$W|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r$rDr/language_orderrHrIrJ language_mapgetindexr) rrLZlangrasourcebaserRZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrbr\rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc Csz|j||||||\}} }} } |j| ||} xH| D]@} y| | \}}Wntk r\w2YnX|j| ||| || q2W| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )rSrVKeyError_compile)rrLrrrrTrerfrMrrNrOrUrQrPrRrrrcompiles6  zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrQrPrRrUrfrNrrrriCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerrT target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrTrerf build_temprlrrrlinkis9zCCompiler.linkc Cs2|jtj||j|dd||||||| | | | dS)Nshared)lib_type)rsr SHARED_LIBRARYlibrary_filename) rrrkrrrrrqrTrerfrrrlrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|jtj||||||||| | | | dS)N)rsr SHARED_OBJECT) rrrprrrrrqrTrerfrrrlrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|jtj||j|||||d||| d| dS)N)rsr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrTrerfrlrrrlink_executables  zCCompiler.link_executablecCstdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. N)ro)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N)ro)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N)ro)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}tj|d} z.x|D]} | jd| q`W| jd|Wd| jXy|j|g|d } Wntk rd SXy|j| d ||d Wnt t fk rd SXdS) zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNz.cT)textwz#include "%s" z+main (int argc, char **argv) { %s(); } )rFza.out)rr) tempfileZmkstemprHfdopenwritecloserjZ CompileErrorr}Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8     zCCompiler.has_functioncCstdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N)ro)rr7rrTrrrfind_library_file#szCCompiler.find_library_filecCs|dkr d}g}x|D]|}tjj|\}}tjj|d}|tjj|d}||jkrhtd||f|rxtjj|}|jtjj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rHrIrJ splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namercrRrrrrENs    zCCompiler.object_filenamescCs$|rtjj|}tjj|||jS)N)rHrIrrshared_lib_extension)rrrCrrrrshared_object_filename_s z CCompiler.shared_object_filenamecCs(|rtjj|}tjj|||jp"dS)Nr)rHrIrr exe_extension)rrrCrrrrr|es zCCompiler.executable_filenamestaticc Cs`|d krtdt||d}t||d}tjj|\}}|||f} |rPd}tjj||| S) Nrrtdylib xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rrtrr)rgetattrrHrIsplitr) rr9rurCrZfmtrRr5rcfilenamerrrrwks zCCompiler.library_filenamer(cCstj|dS)N)r rT)rmsglevelrrrannounce~szCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst||jddS)N)r )rr )rcmdrrrrszCCompiler.spawncCst|||jdS)N)r )rr )rrPdstrrrrszCCompiler.move_filecCst|||jddS)N)r )rr )rr)moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r()Nr()r)Br! __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr_r^rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrSrVrWrXrYrZr]rdrgrjrirmryrvr{rsrxrzr}r~rrrrrErr|rwrrrr rrrrrrrr s    $   +  "   B  4    * +      r cygwin.*unixposixntmsvccCsV|dkrtj}|dkrtj}x4tD],\}}tj||dk sJtj||dk r"|Sq"WdS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rHr)rplatform_default_compilersrematch)osnamerpatterncompilerrrrget_default_compilers r unixccompiler UnixCCompilerstandard UNIX-style compiler _msvccompiler MSVCCompilerMicrosoft Visual C++cygwinccompilerCygwinCCompiler'Cygwin port of GNU C Compiler for Win32Mingw32CCompiler(Mingw32 port of GNU C Compiler for Win32 bcppcompiler BCPPCompilerBorland C++ Compiler)rrcygwinZmingw32ZbcppcCs\ddlm}g}x,tjD] }|jd|dt|dfqW|j||}|jddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXy*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rHr)rrrhZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2    rcCsg}x|D]}t|to2dt|ko.dkns@td|t|dkr`|jd|dq t|dkr |ddkr|jd|dq |jd|q Wx|D]}|jd |qW|S) aGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. r(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srNz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrNZmacror5rrrrF s &    rFc Csg}x|D]}|j|j|q Wx4|D],}|j|}t|trJ||}q(|j|q(Wx^|D]V}tjj|\}} |r|j|g| } | r|j| q|j d|q^|j|j |q^W|S)acGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). z6no library file corresponding to '%s' found (skipping)) r2r~rr$rDrHrIrrrr) rrrrZlib_optsr5optrZlib_dirZlib_nameZlib_filerrrgen_lib_options7s$        rrrrrrr)rrr)NN)rrr)rrr)rrr)rrr)rrr)NNrrr)rrrHrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrFrrrrrsD      --PKD]u>UaUa%__pycache__/dist.cpython-36.opt-2.pycnu[3 \ @sddlZddlZddlZddlmZy ddlZWnek rHdZYnXddlTddlm Z m Z ddl m Z m Z mZddlmZddlmZejdZGd d d ZGd d d Zd dZdS)N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$c@sleZdZd}d~dddgZdZdddddddddddddddddddddgZd=d>eDZddiZdd?d@ZdAdBZ ddDdEZ dFdGZ ddHdIZ dJdKZ dLdMZdNdOZdPdQZddgfdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zdd`daZddbdcZddedfZejfdgdhZdidjZdkdlZdmdnZ dodpZ!dqdrZ"dsdtZ#dudvZ$dwdxZ%dydzZ&d{d|Z'dS) Distributionverbosevrun verbosely (default)quietq!run quietly (turns verbosity off)dry-runndon't actually do anythinghelphshow detailed help message no-user-cfgN-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package help-commandslist all available commandsnameprint package nameversionVprint package versionfullnameprint -authorprint the author's name author-email print the author's email address maintainerprint the maintainer's namemaintainer-email$print the maintainer's email addresscontact7print the maintainer's name if known, else the author's contact-email@print the maintainer's email address if known, else the author'surlprint the URL for this packagelicense print the license of the packagelicencealias for --license descriptionprint the package descriptionlong-description"print the long package description platformsprint the list of platforms classifiersprint the list of classifierskeywordsprint the list of keywordsprovides+print the list of packages/modules providedrequires+print the list of packages/modules required obsoletes0print the list of packages/modules made obsoletecCsg|]}t|dqS)r)r).0xrH&/usr/lib64/python3.6/distutils/dist.py sszDistribution.cCsd|_d|_d|_x|jD]}t||dqWt|_x,|jjD] }d|}t||t|j|q@Wi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r8|jd}|dk rH|d=xD|jD]8\}}|j |}x"|jD]\} } d| f|| <q(Wq Wd|kr|d|d<|d=d } t!dk r~t!j"| nt#j$j%| d x|jD]\} } t&|jd | rt|jd | | njt&|j| rt|j| | nLt&|| rt|| | n2d t'| } t!dk r"t!j"| nt#j$j%| d qWd |_(|j dk r|x0|j D]&} | j)dsdP| dkrRd|_(PqRW|j*dS)Nrrget_optionsz setup scriptr4r2z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+r dry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfZattrsattrbasenameZ method_namerMcommandZ cmd_optionsopt_dictoptvalmsgkeyargrHrHrI__init__zs                   zDistribution.__init__cCs&|jj|}|dkr"i}|j|<|S)N)r[re)rrrudictrHrHrIrgs zDistribution.get_option_dictrLc Csddlm}|dkr"t|jj}|dk r@|j|||d}|sV|j|ddSxt|D]l}|jj|}|dkr|j|d|q\|j|d|||}x$|jdD]}|j|d|qWq\WdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:rN)pprintr~sortedr[keysannounceresplit) rrheadercommandsindentr~Zcmd_namervoutlinerHrHrIdump_option_dicts&s&    zDistribution.dump_option_dictscCsg}ttjjtjdj}tjj|d}tjj|rB|j |tj dkrRd}nd}|j rtjjtjj d|}tjj|r|j |d}tjj|r|j |t r|jdd j||S) N distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerjmodules__file__joinisfileappendrro expanduserr r)rrfilesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerHrHrIfind_config_filesBs&       zDistribution.find_config_filescCsddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|j}trb|jd|}x|D]}tr|jd||j |xf|j D]Z}|j |}|j |}x@|D]8} | dkr| |kr|j || } | jdd} || f|| <qWqW|jqnWd|jkrx|jdjD]\} \} } |jj | } yF| rRt|| t|  n(| dkrnt|| t| n t|| | Wn,tk r} zt| WYdd} ~ XnXqWdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %s__name__rO_globalr rP)r rP)Z configparserrrjr base_prefix frozensetrr rreadZsectionsrMrgrereplacer|r[rf negative_optrRr ValueErrorDistutilsOptionError)rr filenamesrZignore_optionsparserfilenameZsectionrMrvrwrxsrcaliasryrHrHrIparse_config_filesrsJ               zDistribution.parse_config_filescCs|j}g|_t||j}|j|j|jddi|j|j|d}|j }t j |j |j |rhdSx |r|j||}|dkrjdSqjW|jr|j|t|jdk|jddS|jstddS)Nr4r2)argsobjectr)display_optionsrzno commands suppliedT)_get_toplevel_optionsrrrset_negative_aliasesrZ set_aliasesgetoptrZZget_option_orderr Z set_verbosityr handle_display_options_parse_command_optsr _show_helplenDistutilsArgError)rrZtoplevel_optionsrr option_orderrHrHrIparse_command_lines,       zDistribution.parse_command_linecCs |jdgS)Ncommand-packages=0list of packages that provide distutils commands)rNr)global_options)rrrHrHrIrsz"Distribution._get_toplevel_optionscCsddlm}|d}tj|s*td||jj|y|j|}Wn*tk rn}zt |WYdd}~XnXt ||st d|t |dot |jtsd}t |||j}t |dr|j}|j|jt |drt |jtrt|j}ng}|j|j|j||j||j|d d\}} t | d rV| jrV|j|d|gd dSt |drt |jtrd} xP|jD]F\} } } }t | |j| r|d } t|r|nt d || fq|W| rdS|j|}x&t| jD]\}}d |f||<qW|S)Nr)Commandzinvalid command name '%s'z&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrr)rrzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrrget_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrm isinstancerlistrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablergvarsrf)rrrrrruZ cmd_classryrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncrvrvaluerHrHrIrsb                   z Distribution._parse_command_optscCsTxNdD]F}t|j|}|dkr qt|trdd|jdD}t|j||qWdS)Nr>r:cSsg|] }|jqSrH)strip)rFZelmrHrHrIrJ_sz1Distribution.finalize_options..,)r>r:)rVrTrstrrrR)rrrsrrHrHrIrqUs   zDistribution.finalize_optionsc Cs ddlm}ddlm}|rR|r*|j}n|j}|j||j|jdt d|rt|j|j |jd t dx|j D]z}t |t rt||r|} n |j|} t| drt | jtr|j| jt| jn |j| j|jd | jt dq|Wt ||jdS) Nr) gen_usage)rz Global options:rLz*Information display options (just display z!information, ignore any commands)rzOptions for '%s' command:zKInformation display options (just display information, ignore any commands))distutils.corerrrrrrZ print_help common_usageprintrrrtyperrrmrrrrrrY) rrrrrrrrrMruklassrHrHrIrbs6           zDistribution._show_helpc Csddlm}|jr4|jtdt||jdSd}i}x|jD]}d||d<qDWxt|D]l\}}|r^|j|r^t|}t |j d|}|dkrtdj |n |dkrtd j |nt|d}q^W|S)Nr)rrLrrKr>r:rr<r@rBrDrN)r>r:)r<r@rBrD) rrZ help_commandsprint_commandsrrYrrerrVrTr) rrrrZany_display_optionsZis_display_optionoptionrwrxrrHrHrIrs,  z#Distribution.handle_display_optionscCsnt|dx\|D]T}|jj|}|s0|j|}y |j}Wntk rRd}YnXtd|||fqWdS)N:z(no description available)z %-*s %s)rrWrerr6AttributeError)rrrr max_lengthcmdrr6rHrHrIprint_command_lists      zDistribution.print_command_listcCsddl}|jj}i}x|D] }d||<qWg}x&|jjD]}|j|s:|j|q:Wd}x$||D]}t||krdt|}qdW|j|d||rt |j|d|dS)NrrzStandard commandszExtra commands) distutils.commandru__all__rWrrerrrr)rrr std_commandsis_stdrextra_commandsrrHrHrIrs*     zDistribution.print_commandsc Csddl}|jj}i}x|D] }d||<qWg}x&|jjD]}|j|s:|j|q:Wg}x\||D]P}|jj|}|s|j|}y |j}Wnt k rd}YnX|j||fqdW|S)Nrrz(no description available)) rrurrWrrerrr6r) rrrrrrrrvrr6rHrHrIget_command_lists(        zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|jdD}d|krD|jdd||_|S)NrLcSsg|]}|dkr|jqS)rL)r)rFZpkgrHrHrIrJsz5Distribution.get_command_packages..rzdistutils.commandr)rXrrrinsert)rrZpkgsrHrHrIget_command_packagess  z!Distribution.get_command_packagescCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk r^wYnXyt||}Wn&tk rt d|||fYnX||j|<|SWt d|dS)Nz%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s') rWrer __import__rjr ImportErrorrVrr)rrrurZpkgnameZ module_nameZ klass_namemodulerHrHrIrs(   zDistribution.get_command_classcCsn|jj|}| rj|rjtr(|jd||j|}||}|j|<d|j|<|jj|}|rj|j|||S)Nz.z1error in %s: command '%s' has no such option '%s')get_command_namergr rrfZboolean_optionsrrrrrRrrmrr) rrrcZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringryrHrHrIr]s>           z!Distribution._set_command_optionsrcCsddlm}t||s&|}|j|}n|j}|js8|S|jd|_d|j|<|j||r|x|j D]}|j ||qhW|S)Nr)r) rrrrrZ finalizedZinitialize_optionsrdrZget_sub_commandsreinitialize_command)rrruZreinit_subcommandsrrsubrHrHrIrs     z!Distribution.reinitialize_commandcCstj||dS)N)r )rrrylevelrHrHrIrszDistribution.announcecCsx|jD]}|j|qWdS)N)r run_command)rrrrHrHrI run_commandss zDistribution.run_commandscCsD|jj|rdStjd||j|}|j|jd|j|<dS)Nz running %sr)rdrer inforZensure_finalizedZrun)rrrurrHrHrIrs   zDistribution.run_commandcCst|jp|jpgdkS)Nr)rr\r])rrrHrHrIhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkS)Nr)r`r)rrrHrHrIhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkS)Nr)r^r)rrrHrHrIhas_c_librariesszDistribution.has_c_librariescCs|jp|jS)N)rr)rrrHrHrI has_modulesszDistribution.has_modulescCs|jot|jdkS)Nr)r_r)rrrHrHrI has_headersszDistribution.has_headerscCs|jot|jdkS)Nr)rar)rrrHrHrI has_scriptsszDistribution.has_scriptscCs|jot|jdkS)Nr)rbr)rrrHrHrIhas_data_filesszDistribution.has_data_filescCs|jo|j o|j S)N)rrr)rrrHrHrIis_pures zDistribution.is_pure)r r rr)rrr)rrr)rrr)rNr)rNr)rNr)rr r!)r"Nr#)r$Nr%)r&Nr')r(Nr))r*Nr+)r,Nr-)r.Nr/)r0Nr1)r2Nr3)r4Nr5)r6Nr7)r8Nr9)r:Nr;)r<Nr=)r>Nr?)r@NrA)rBNrC)rDNrE)N)NNrL)N)r)N)r)(r __module__ __qualname__rrrrQrr|rgrrrrrrrqrrrrrrrrrrr INFOrrrrrrrrrrrrHrHrHrIr s  " 0 :C [  1(!" &  , ) r c@seZdZdNZdOddZddZddZddZddZd d!Z d"d#Z d$d%Z d&d'Z d(d)Z d*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5ZeZd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZ dS)PrSrrr$ author_emailr(maintainer_emailr0r2r6long_descriptionr>r:r"r, contact_emailr< download_urlr@rBrDNcCs|dk r|jt|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenrrr$rr(rr0r2r6rr>r:r<r r@rBrD)rrrrHrHrIr|s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d|_|d |_d|_|d |_|d |_ d kr|d |_ nd|_ |d|_ |d|_dkr|dj d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd|_d|_d|_dS)Ncs|}|dkrdS|S)NUNKNOWNrH)rr)ryrHrI _read_fieldsz7DistributionMetadata.read_pkg_file.._read_fieldcsj|d}|gkrdS|S)N)Zget_all)rvalues)ryrHrI _read_list#s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionrrZsummaryr$z author-emailz home-pager2z download-urlr6r>rplatformZ classifierz1.1rBr@rD)rrrr6r$r(rrr0r2r rrr>r:r<rBr@rD)rrfiler rZmetadata_versionrH)ryrIr s:                 z"DistributionMetadata.read_pkg_filec Cs2ttjj|dddd}|j|WdQRXdS)NzPKG-INFOwzUTF-8)encoding)r rrrwrite_pkg_file)rrZbase_dirZpkg_inforHrHrIwrite_pkg_infoMs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|jd||jd|j|jd|j|jd|j|jd|j |jd|j |jd |j |jd |j |jr|jd |jt |j}|jd |d j|j}|r|jd||j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS)Nz1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ Obsoletes)r@rBrDr<r rlget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)rrrrZ long_descr>rHrHrIrTs0  z#DistributionMetadata.write_pkg_filecCs$x|D]}|jd||fqWdS)Nz%s: %s )rl)rrrrrrrHrHrIrvs z DistributionMetadata._write_listcCs |jpdS)Nr )r)rrrHrHrIr|szDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r)rrrHrHrIrsz DistributionMetadata.get_versioncCsd|j|jfS)Nz%s-%s)rr)rrrHrHrI get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdS)Nr )r$)rrrHrHrI get_authorszDistributionMetadata.get_authorcCs |jpdS)Nr )r)rrrHrHrIget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdS)Nr )r()rrrHrHrIget_maintainersz#DistributionMetadata.get_maintainercCs |jpdS)Nr )r)rrrHrHrIget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr )r(r$)rrrHrHrIrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr )rr)rrrHrHrIrsz&DistributionMetadata.get_contact_emailcCs |jpdS)Nr )r0)rrrHrHrIrszDistributionMetadata.get_urlcCs |jpdS)Nr )r2)rrrHrHrIrsz DistributionMetadata.get_licensecCs |jpdS)Nr )r6)rrrHrHrIrsz$DistributionMetadata.get_descriptioncCs |jpdS)Nr )r)rrrHrHrIrsz)DistributionMetadata.get_long_descriptioncCs |jpgS)N)r>)rrrHrHrIrsz!DistributionMetadata.get_keywordscCs |jp dgS)Nr )r:)rrrHrHrIr sz"DistributionMetadata.get_platformscCs |jpgS)N)r<)rrrHrHrIr!sz$DistributionMetadata.get_classifierscCs |jpdS)Nr )r )rrrHrHrIget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgS)N)rB)rrrHrHrIr"sz!DistributionMetadata.get_requirescCs,ddl}x|D]}|jj|qW||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterB)rrrrr rHrHrI set_requiress z!DistributionMetadata.set_requirescCs |jpgS)N)r@)rrrHrHrIr#sz!DistributionMetadata.get_providescCs:dd|D}x |D]}ddl}|jj|qW||_dS)NcSsg|] }|jqSrH)r)rFr rHrHrIrJsz5DistributionMetadata.set_provides..r)r+r,Zsplit_provisionr@)rrrr rrHrHrI set_providess  z!DistributionMetadata.set_providescCs |jpgS)N)rD)rrrHrHrIr$sz"DistributionMetadata.get_obsoletescCs,ddl}x|D]}|jj|qW||_dS)Nr)r+r,r-rD)rrrrr rHrHrI set_obsoletess z"DistributionMetadata.set_obsoletes)rrr$rr(rr0r2r6rr>r:r"r,rr<r r@rBrD)N)!rrrrUr|r rrrrrr%r&r'r(r)rrrrZ get_licencerrrr r!r*r"r.r#r/r$r0rHrHrHrIrSsF 4"rScCs(g}x|D]}|j|ddq W|S)Nr)r)rMZ new_optionsZ help_tuplerHrHrIrs r)rjrreZemailrrhrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrr Zdistutils.debugr compilerr rSrrHrHrHrIs0      ]ZPKD]樤,44(__pycache__/_msvccompiler.cpython-36.pycnu[3 \KT@sdZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZdd Zd d Zd d ZddZdddZdddZedgZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc$CsytjtjdtjtjBd}Wntk r<tjddSXd}d}|xtD]}ytj ||\}}}Wntk rPYnX|rT|tj krTt j j |rTytt|}Wnttfk rwTYnX|dkrT||krT||}}qTWWdQRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredr)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivvc_dirZvtversionr //usr/lib64/python3.6/distutils/_msvccompiler.py _find_vc2015s0  r"c sddlddl}d }d}gfdd}|j|d}|j|jxD]~\}}}}d|krLtjj|ddd} tjj| sqLytd d |j d D} Wnt t fk rwLYnX| |krL| | }}qLWy |d}Wnt k rd}YnX||fS) NrcsjjdS)N)extendfindallr )_distutils_findvs all_packagesr r!_getallDsz_find_vc2017.._getall)targetz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64ZVCZ AuxiliaryZBuildcss|]}t|VqdS)N)r).0rr r r! Psz_find_vc2017...)r) r% threadingZThreadstartjoinrrrtuplesplitrr IndexError) r,rrr'tnameZ version_strrZpackagesrrr )r%r&r! _find_vc2017:s2    r4cCs t\}}d}d|krdnd}|rztjj|ddddddd }yd dl}|j|d d d}Wntttfk rxd}YnX|st\}}|rtjj|d|dd }|st j ddStjj|d}tjj |st j d|dS| ptjj | rt j d|d}||fS)Namd64Zx64x86z..ZredistZMSVCz**zMicrosoft.VC141.CRTzvcruntime140.dllrT) recursivezMicrosoft.VC140.CRTz$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN) r4rrr.glob ImportErrorr LookupErrorr"r risfile) plat_specrr vcruntimeZvcruntime_platZvcredistr: vcvarsallr r r!_find_vcvarsall[s6        rAcCstjdrddtjjDSt|\}}|s6tdy&tjdj||tj dj ddd }Wn@tj k r}z"t j |jtd j|jWYdd}~XnXd dd d |jDD}|r||d<|S)NZDISTUTILS_USE_SDKcSsi|]\}}||jqSr )lower)r)rvaluer r r! sz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)errorszError executing {}cSs$i|]\}}}|r|r||jqSr )rB)r)r_rCr r r!rDscss|]}|jdVqdS)=N) partition)r)liner r r!r*sz_get_vc_env..py_vcruntime_redist)rgetenvenvironitemsrAr subprocessZ check_outputformatZSTDOUTdecodeZCalledProcessErrorr erroroutputcmd splitlines)r>r@r?outexcenvr r r! _get_vc_env}s(     rZcCsN|stjdjtj}x2|D]*}tjjtjj||}tjj|r|SqW|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rrMr0pathseprr.abspathr=)Zexepathspfnr r r! _find_exes   r`r6Z x86_amd64)Zwin32z win-amd64zvcruntime140.dllc seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd*ddZd+ddZd,ddZd-ddZd.ddZd/ddZddZfd d!Zd"d#Zd$d%Zd&d'Zd0d(d)ZZS)1 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs tj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer r r!rbszMSVCCompiler.__init__NcCsN|j std|dkrt}|tkr8tdjttt|}t|}|sTtd|jdd|_ |j j t j }t d||_t d||_t d||_t d ||_t d ||_t d ||_|jd d|_x2|jd dj t j D]}|r|j|jt jqWx6|jddj t j D]}|r|j|jt jqWd|_dddddg|_|jj|jrZdndddddddg|_dddg}|js|jd%ddddg}|d&|_|d'|_|d(|_ |d)|_!||_"||_#t$j%df|jt$j%d#f|jt$j%d$f|jt$j&df|j t$j&d#f|j t$j&d$f|j!t$j'df|j"t$j'd#f|j"t$j'd$f|j#i |_(d$|_dS)*Nzdon't init multiple timesz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exerLincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rjrk)rl)rl)rmrnro)rmrnro))rdAssertionErrorr PLAT_TO_VCVARSrrQr/rZget_pathsr0rr[r`cclinkerrircmcZmt_vcruntime_redistZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugr#Z ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflags)rercr>Zvc_envr]dirldflagsZ ldflags_debugr r r! initializesb                      zMSVCCompiler.initializergcsTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }j|qSr ) obj_extension)r)ext)rer r!rD8sz1MSVCCompiler.object_filenames..csi|] }j|qSr ) res_extension)r)r)rer r!rD9srgc stjj|\}}r"tjj|}n2tjj|\}}|jtjjtjjfrT|dd}ytjj||St k rt dj |YnXdS)Nr8zDon't know how to compile {}) rrsplitextbasename splitdrive startswithrzaltsepr.r<rrQ)r^baserrH)ext_map output_dir strip_dirr r! make_out_path>s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)reZsource_filenamesrrrr )rrrerr!object_filenames3s zMSVCCompiler.object_filenamesc Cs|js|j|j||||||} | \}} }} } |p6g} | jd|rT| j|jn | j|jd}x| D]}y| |\}}Wntk rwlYnX|rtj j |}||j krd|}nD||j krd|}d}n*||j krB|}d|}y|j|jg| ||gWqltk r<}zt|WYdd}~XqlXqln||jkrtj j|}tj j|}y\|j|jd|d||gtj jtj j|\}}tj j||d }|j|jd||gWqltk r}zt|WYdd}~XqlXqlntd j|||jg| | }|r$|jd |j||jd ||j|y|j|Wqltk r}zt|WYdd}~XqlXqlW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rdrZ_setup_compiler|r#r}r{KeyErrorrrr\ _c_extensions_cpp_extensionsrspawnrvrrrdirnamerwrrr.rQrt)reZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrHZrc_fileargsr r r!compileTsn               zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy,tjd|jdj||j |jg|Wqt k r}zt |WYdd}~XqXn tjd|dS)N)rz/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rdr_fix_object_argslibrary_filename _need_linkr rrir.rrr) rerZoutput_libnamerr target_langoutput_filenameZlib_argsrr r r!create_static_libs zMSVCCompiler.create_static_libcCs|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||r|j || f}dd|pgD}||||d|g}tjj |d} |dk r tjj tjj|\}}tjj | |j|}|jd|| r| |dd<| r.|j| tjj tjj|}|j|y6tjd|jdj ||j|jg||j|Wn,tk r}zt|WYdd}~XnXn tjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r )r)Zsymr r r! sz%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rdrrZ _fix_lib_argswarnstrrrrr.rr~rrrrr|r#r\Zmkpathr rrur_copy_vcruntimerr)reZ target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr r r!linksN       zMSVCCompiler.linkcCs`|j}| stjj| rdStjj|jtkr6dStjd|t j ||}tj |t j dS)Nz Copying "%s")rxrrr=rrB _BUNDLED_DLLSr rshutilcopychmodstatS_IWRITE)rerr?r r r!rs  zMSVCCompiler._copy_vcruntimec s4tjd}z|jtjd<tj|S|tjd<XdS)Nr)rrMrsrNsuperr)rerUZold_path) __class__r r!rs    zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r )rerr r r!library_dir_option&szMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)r)rerr r r!runtime_library_dir_option)sz'MSVCCompiler.runtime_library_dir_optioncCs |j|S)N)r)rerir r r!library_option-szMSVCCompiler.library_optioncCs`|r|d|g}n|g}xB|D]6}x0|D](}tjj||j|}tjj|r(|Sq(WqWdSdS)NZ_d)rrr.rr=)redirsrirZ try_namesrr3Zlibfiler r r!find_library_file0s    zMSVCCompiler.find_library_file)rrr)N)rrg)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrbrrrrrrrrrrr __classcell__r r )rr!rasN   T  [  9 ra)N)rrrrrPrZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r"r4rArZr`rq frozensetrrar r r r!s&   !"  PKD]yE'.__pycache__/unixccompiler.cpython-36.opt-1.pycnu[3 _Vj:@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execs@tj|||\}}}tjd}|r6||kr6|j||||fS)z'Remove standard library path from rpathLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir) __class__//usr/lib64/python3.6/distutils/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc Cs|jd||}|\}}}t||} |j| } |r>| jd|g|rN|| dd<|r\| j|| j||js~|dks~t||r|r|jtj j |y|j | Wn*t k r} zt | WYdd} ~ XnXdS)Nz-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr#r#r$ preprocess^s$      zUnixCCompiler.preprocessc Csp|j}tjdkr tj|||}y |j|||d|g|Wn*tk rj}zt|WYdd}~XnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r#r#r$_compilexs   zUnixCCompiler._compilercCs|j||\}}|j||d}|j||r|jtjj||j|j|g||j |j ry|j|j |gWqt k r}zt |WYdd}~XqXn t jd|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr?Zoutput_libnamer;r@ target_langoutput_filenamer2r#r#r$create_static_libs zUnixCCompiler.create_static_libcCs|j||\}}|j|||}|\}}}t||||}t|ttdfsPtd|dk rftjj ||}|j ||r||j |d|g}| rdg|dd<| r| |dd<| r|j | |j tjj|y|tjkr|jdd}n|jdd}| dkrR|jrRd}tjj|ddkrDd}xd||krB|d7}q(W|j|||<tjd krjtj||}|j||Wn,tk r}zt|WYdd}~XnXn tjd |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=r zskipping %s (up-to-date))r<rr isinstancestrtype TypeErrorr(r)joinr>r?r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;rr r!Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerir2r#r#r$linksH      zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCstjjtjd}tjdddkr,d|StjdddkrFd|Stjddd krz|j|rnd d|gSd d|gStjddd kstjddd krd|gS|j|rtjddkrd|Sd|Snd|SdS)NCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrOrr#r#r$runtime_library_dir_options    $  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_option szUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptjd}tjd|} | dkrfd } n | jd } x|D]} tj j | |} tj j | |} tj j | |}tj j | |}tjdko| j d s| j d o| j d  rBtj j | | d d|} tj j | | d d|} tj j | | d d|}tj j | | d d|}tj j | rT| Stj j |rf|Stj j | rx| Stj j |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr CFLAGSz-isysroot\s+(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrYr@Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrOr[r\r^r]r#r#r$find_library_file s>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rCrNrPrRrXrZrh __classcell__r#r#)r"r$r -sF       6,r )__doc__r(r4raZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r#r#r#r$s    PKD]nQQ-__pycache__/bcppcompiler.cpython-36.opt-1.pycnu[3 \W:@sxdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zdd dZdddZdddZd ddZd!ddZd"ddZd#ddZdS)$ BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer./usr/lib64/python3.6/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc Cs|j||||||\}} }} } |p$g} | jd|rB| j|jn | j|jxD| D]:} y| | \}}Wntk rwVYnXtjj|}tjj| } |j tjj | |dkrqV|dkry|j dd| |gWqVt k r}zt |WYdd}~XqVXqV||jkrd}n||jkr,d}nd}d| }y,|j |jg| | ||g||gWqVt k r}zt |WYdd}~XqVXqVW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF        (zBCPPCompiler.compilec Cs|j||\}}|j||d}|j||r~|dg|}|r:y|j|jg|Wqtk rz}zt|WYdd}~XqXn tjd|dS)N)r*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs  zBCPPCompiler.create_static_libc Cs|j||\}}|j|||\}}}|r8tjdt||dk rNtjj||}|j||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x&|pgD]}|jd||fqW|jt||fd |ttjj|}|g}g}xF|D]>}tjjtjj|\}}|d kr|j|n |j|qfWx$|D]}|jd tjj|qW|jd |j||jd |g|jdx<|D]4}|j||| }|dkr(|j|n |j|qW|jd|jd|jd |g|jd |j|| r| |dd<| r|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnXn tjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|                    zBCPPCompiler.linkc Csv|r"|d}|d|d||f}n |d|f}xB|D]6}x0|D](}tjj||j|}tjj|r>|Sq>Wq4WdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s      zBCPPCompiler.find_library_filercCs|dkr d}g}x|D]}tjjtjj|\}}||jddgkrTtd||f|rdtjj|}|dkr|jtjj|||q|dkr|jtjj||dq|jtjj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"    zBCPPCompiler.object_filenamesc Cs|jd||\}}}t||}dg|} |dk r>| jd||rN|| dd<|r\| j|| j||js~|dks~t||r|r|jtjj |y|j | Wn2t k r} zt | t | WYdd} ~ XnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr)NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsJ   B  |  r)r^r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PKD]~#C..$__pycache__/sysconfig.cpython-36.pycnu[3 4bVjN @sdZddlZddlZddlZddlZddlmZejjej Z ejjej Z ejjej ZejjejZdejkrejjejdZnejjejjejZejdkrejjd,rejjejjeZd d Zeed dZeoejdkoejjd-rejjejjeZd d ZeZdZyes.ejZWne k rFYnXddZ!d.ddZ"d/ddZ#ddZ$ddZ%ddZ&d0ddZ'ej(dZ)ej(dZ*ej(dZ+d1d d!Z,d"d#Z-da.d$d%Z/d&d'Z0d(d)Z1d*d+Z2dS)2aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEnt\pcbuild\win32\pcbuild\amd64cCs.x(dD] }tjjtjj|d|rdSqWdS)N Setup.dist Setup.localModulesTF)rr)ospathisfilejoin)dfnr+/usr/lib64/python3.6/distutils/sysconfig.py_is_python_source_dir)s r_homecCstr ttSttS)N) _sys_homer project_baserrrr _python_build2srcCsdtjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. z%d.%dN)sys version_inforrrrget_python_versionDsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjjt dd}tjj |Sdt t }tjj|d|Stjdkrtjj|dSt dtjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonincluderzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr name python_buildrrr r get_config_varnormpathr build_flagsr) plat_specificprefixZincdirZ python_dirrrrget_python_incLs     r)cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tjj||dt}|r`|Stjj|dSnrAZccZcxxoptZcflagsZccsharedZldsharedZ shlib_suffixarZar_flagsZnewccZcppr?Zcc_cmdrrrrBs\                         rBcCsDtr,tjdkr"tjjtptd}q6tp(t}n tdd}tjj|dS)z2Return full pathname of installed pyconfig.h file.rPCr)r'z pyconfig-64.h)r#r r"r r rrr))inc_dirrrrget_config_h_filenames    rLcCs\trtjjtptdStddd}djtt }t t j drL|dt j j 7}tjj||dS)zAReturn full pathname of installed Makefile from the Python build.Makefilerr)r'r.z config-{}{} _multiarchz-%s)r#r r r rrr/formatrr&hasattrrimplementationrN)Zlib_dirZ config_filerrrget_makefile_filenames  rRc Cs|dkr i}tjd}tjd}xx|j}|s0P|j|}|rz|jdd\}}y t|}Wntk rnYnX|||<q"|j|}|r"d||jd<q"W|S)zParse a config.h-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. Nz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rrr)recompilereadlinematchgroupint ValueError)fpg define_rxundef_rxlinemnvrrrparse_config_hs(      rbz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c Csddlm}||ddddd}|dkr*i}i}i}x|j}|dkrFPtj|}|r4|jdd\}} | j} | jdd } d | kr| ||<q4y t| } Wn$t k r| jdd ||<Yq4X| ||<q4Wd} x|rxt |D]} || } t j | pt j | }|rx|jd}d}||kr2t||}n||krBd}nx|tjkrZtj|}n`|| kr| jdr| dd| krd }n$d||krd}nt|d|}n d ||<}|r~| |jd}| d|j||} d |kr| || <nzy t| } Wn"t k r*| j|| <Yn X| || <|| =| jdr~| dd| kr~| dd} | |kr~| || <q|| =qWqW|jx.|jD]"\}} t| tr| j||<qW|j||S)zParse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. r)TextFilersurrogateescape)Zstrip_commentsZ skip_blanksZ join_lineserrorsNrz$$r$r5r;r=TFPY_)r5r;r=)Zdistutils.text_filercrU _variable_rxrVrWstripreplacerXrYlist _findvar1_rxsearch _findvar2_rxstrr rErFendstartcloseitems isinstanceupdate)rr[rcrZdonenotdoner^r_r`ratmpvrenamed_variablesr"valuefounditemafterkrrrparse_makefiles                       rcCsZxTtj|ptj|}|rP|j\}}|d||j|jd||d}qPqW|S)aExpand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. rrN)rmrnrospangetrW)svarsr_Zbegrqrrrexpand_makefile_varss *rc CsVtjjddjtjtjttjddd}t |t t dgd}|j }ia t j|dS) z7Initialize the module as appropriate for POSIX systems._PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rNr)abir@ multiarchbuild_time_varsrN)r rErrOrabiflagsr@getattrrQ __import__globalslocalsrrCrv)r"_temprrrr _init_posixsrcCs~i}tddd|d<tddd|d<tdd|d<tjd|d<d |d <tjd d |d <tjjtjj t j |d<|a dS)z+Initialize the module as appropriate for NTrr)r'r.LIBDEST BINLIBDEST)r' INCLUDEPY EXT_SUFFIXz.exeEXE.rVERSIONBINDIRN) r/r)_impextension_suffixesrrkr r dirnameabspathr executablerC)r[rrr_init_ntsrcGs^tdkr(tjdtj}|r(|niattd<ttd<tjd}|dk rV|td<tjdt}tjdkrtrtj j t }tj j ||}ntj j t }tj j tj j|td<totjdkr t}tj jtd o|tjkr tj j |td}tj j|td<tjd kr(d dl}|jt|rVg}x|D]}|jtj|q8W|StSdS) aWith no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. NZ_init_r( exec_prefixrSOrrr0r)rCrrr r"r-r,rr#r rrRr rr%isabsgetcwdrr@rAcustomize_config_varsappend)argsfuncrrbaserAvalsr"rrrrDs@       rDcCs*|dkrddl}|jdtdtj|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) rrNz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningrDr)r"rrrrr$sr$)rr)rr)rN)rrN)N)N)3__doc__rr rSrrerr r%r(r-rr, base_prefixr!base_exec_prefixr rErrrrr"lowerendswithrrrrr#r&rAttributeErrorrr)r/rBrLrRrbrTrirmrorrrCrrrDr$rrrr sZ      # +I      jJPKD] ) )__pycache__/dep_util.cpython-36.opt-1.pycnu[3 \ @s6dZddlZddlmZddZddZd d d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCs`tjj|s tdtjj|tjj|s0dSddlm}tj||}tj||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r */usr/lib64/python3.6/distutils/dep_util.pynewer s   rcCslt|t|krtdg}g}xBtt|D]2}t||||r.|j|||j||q.W||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise srerrorcCstjj|sdSddlm}tj||}xX|D]L}tjj|sb|dkrJn|dkrVq0n |dkrbdStj||}||kr0dSq0WdSdS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rr)rrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s     r)r)__doc__rZdistutils.errorsrrrrr r r r s  PKD]^9b b )__pycache__/dir_util.cpython-36.opt-2.pycnu[3 \b@slddlZddlZddlmZmZddlmZiadddZddd Z dd d Z d d Z dddZ ddZ dS)N)DistutilsFileErrorDistutilsInternalError)logc Cspt|tstd|ftjj|}g}tjj|s<|dkr@|Stjtjj |rV|Stjj |\}}|g}x6|r|rtjj| rtjj |\}}|j d|qnWx|D]}tjj ||}tjj |} tj| rq|dkrt jd||s`ytj||WnVtk rT} z8| jtjko*tjj|sDtd|| jdfWYdd} ~ XnX|j|dt| <qW|S)Nz(mkpath: 'name' must be a string (got %r)rrz creating %szcould not create '%s': %s) isinstancestrrospathnormpathisdir _path_createdgetabspathsplitinsertjoinrinfomkdirOSErrorerrnoZEEXISTrargsappend) namemodeverbosedry_runZ created_dirsheadtailZtailsdZabs_headexcr#*/usr/lib64/python3.6/distutils/dir_util.pymkpaths>       &  r%cCsVt}x(|D] }|jtjj|tjj|q Wx t|D]}t||||dq:WdS)N)rr)setaddr r rdirnamesortedr%)Zbase_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs   r-cCsfddlm}| r,tjj| r,td|ytj|} Wn>tk rx} z"|rVg} ntd|| jfWYdd} ~ XnX|st ||dg} x| D]} tjj || } tjj || }| j drq|otjj | rtj | }|dkrtjd|||stj||| j|qtjj| r>| jt| |||||||d q|| ||||||d | j|qW| S) Nr) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr.nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCslxVtj|D]H}tjj||}tjj|rDtjj| rDt||q |jtj|fq W|jtj |fdS)N) r r/r rrr2_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=cCs|dkrtjd||rdSg}t||xp|D]h}y2|d|dtjj|d}|tkrdt|=Wq0tk r}ztjd||WYdd}~Xq0Xq0WdS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees    rDcCs6tjj|\}}|ddtjkr2||dd}|S)Nrr)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$s  ?  D PKD]6bb!__pycache__/errors.cpython-36.pycnu[3 \ @s8dZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N)__name__ __module__ __qualname____doc__rr(/usr/lib64/python3.6/distutils/errors.pyr src@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).N)rrrrrrrrrsrc@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.N)rrrrrrrrr $sr c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.N)rrrrrrrrr *sr c@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.N)rrrrrrrrr3src@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.N)rrrrrrrrr8src@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).N)rrrrrrrrr>src@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).N)rrrrrrrrrCsrc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.N)rrrrrrrrrHsrc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.N)rrrrrrrrrKsrc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.N)rrrrrrrrrOsrc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.N)rrrrrrrrrRsrc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.N)rrrrrrrrrUsrc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.N)rrrrrrrrrXsrc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.N)rrrrrrrrr\src@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.N)rrrrrrrrr`srN)r Exceptionrrr r r r r rrrrrrrrrrrrrrrr s& PKD]Vf%__pycache__/core.cpython-36.opt-1.pycnu[3 \"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad4Zd5Zd/d0Zd6d2d3ZdS)7a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstjj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr&/usr/lib64/python3.6/distutils/core.py gen_usage s r distclassr script_argsoptionsnameversionauthor author_email maintainermaintainer_emailurllicense descriptionlong_descriptionkeywords platforms classifiers download_urlrequiresprovides obsoletessources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_args swig_optsexport_symbolsdependslanguagec,Ks|jd}|r|d=nt}d|kr8tjjtjd|d<d|krRtjdd|d<y||a}WnLtk r}z0d|krt d|nt d |d|fWYdd}~XnXt d kr|S|j t rt d |jt d kr|Sy |j}Wn:tk r*}zt t|jd |WYdd}~XnXt rBt d|jt dkrP|S|ry |jWntk rt dYntk r}z0t rtjjd|fnt d|fWYdd}~XnBttfk r }z t rnt dt|WYdd}~XnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`% " (   "rGruncCs|d krtd|f|atjj}d|i}yZzH|tjd<|dk rP|tjd d<t|d }t|j|WdQRXWd|t_daXWntk rYnXt dkrt d |t S) a.Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. r4r5r6rHz"invalid value for 'stop_after': %r__file__rNr3rbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?)r4r5r6rH) ValueErrorr<r8r9copyopenexecreadr;r: RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups(    rS)rr rrrrrrrrrrrrrrr r!r"r#r$)rr%r&r'r(r)r*r+r,r-r.r/r0r1r2)NrH)__doc__rr8Zdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr<r:Zsetup_keywordsZextension_keywordsrGrSrrrrs2     qPKD]S۬)__pycache__/dir_util.cpython-36.opt-1.pycnu[3 \b@spdZddlZddlZddlmZmZddlmZiadddZ dd d Z dd d Z d dZ dddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logc Cspt|tstd|ftjj|}g}tjj|s<|dkr@|Stjtjj |rV|Stjj |\}}|g}x6|r|rtjj| rtjj |\}}|j d|qnWx|D]}tjj ||}tjj |} tj| rq|dkrt jd||s`ytj||WnVtk rT} z8| jtjko*tjj|sDtd|| jdfWYdd} ~ XnX|j|dt| <qW|S) aCreate a directory and any missing ancestor directories. If the directory already exists (or if 'name' is the empty string, which means the current directory, which of course exists), then do nothing. Raise DistutilsFileError if unable to create some directory along the way (eg. some sub-path exists, but is a file rather than a directory). If 'verbose' is true, print a one-line summary of each mkdir to stdout. Return the list of directories actually created. z(mkpath: 'name' must be a string (got %r)rrz creating %szcould not create '%s': %sN) isinstancestrrospathnormpathisdir _path_createdgetabspathsplitinsertjoinrinfomkdirOSErrorerrnoZEEXISTrargsappend) namemodeverbosedry_runZ created_dirsheadtailZtailsdZabs_headexcr#*/usr/lib64/python3.6/distutils/dir_util.pymkpaths>       &  r%cCsVt}x(|D] }|jtjj|tjj|q Wx t|D]}t||||dq:WdS)aCreate all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. )rrN)setaddr r rdirnamesortedr%)Zbase_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs   r-cCsfddlm}| r,tjj| r,td|ytj|} Wn>tk rx} z"|rVg} ntd|| jfWYdd} ~ XnX|st ||dg} x| D]} tjj || } tjj || }| j drq|otjj | rtj | }|dkrtjd |||stj||| j|qtjj| r>| jt| |||||||d q|| ||||||d | j|qW| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sN)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr.nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCslxVtj|D]H}tjj||}tjj|rDtjj| rDt||q |jtj|fq W|jtj |fdS)zHelper for remove_tree().N) r r/r rrr2_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=cCs|dkrtjd||rdSg}t||xp|D]h}y2|d|dtjj|d}|tkrdt|=Wq0tk r}ztjd||WYdd}~Xq0Xq0WdS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees    rDcCs6tjj|\}}|ddtjkr2||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)__doc__r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$s  ?  D PKD]xx22-__pycache__/msvccompiler.cpython-36.opt-2.pycnu[3 \\@sddlZddlZddlmZmZmZmZmZddlm Z m Z m Z ddl m Z dZy,ddlZdZeZejZejZejZejZWnhek ry4ddlZddlZdZeZejZejZejZejZWnek re jdYnXYnXerejejejej fZ!dd Z"d d Z#d d Z$GdddZ%ddZ&ddZ'ddZ(Gddde Z)e&dkr~e j*de)Z+ddl,m)Z)ddl,m%Z%dS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnyt||}Wntk r"dSXg}d}x||j kr>|}d|}y"|j|jg| |g|gWqhtk r8}zt|WYdd}~XqhXqhn||jkrtj j|}tj j|}yl|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqhtk r}zt|WYdd}~XqhXqhntd||fd |}y&|j|jg| | ||g|Wqhtk rj}zt|WYdd}~XqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rXrkZ_setup_compilerextendrhrgr/rMr-abspath _c_extensions_cpp_extensionsrrspawnrbrrrtdirnamercrmrqrfr`)r)Zsourcesrvr'Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrwZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWsj              zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy|j|jg|Wqtk r}zt|WYdd}~XqXn t j d|dS)N)rvz/OUT:zskipping %s (up-to-date)) rXrk_fix_object_argslibrary_filename _need_linkr}rZrrr r) r)rZoutput_libnamervr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libcCs|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|jd|qW||||d|g}|dk rLtjjtjj|\}}tjj tjj|d|j|}|jd|| r^| |dd<| rn|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnXn tjd|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:z/OUT:rz/IMPLIB:zskipping %s (up-to-date))rXrkrZ _fix_lib_argswarnstrr rMr-rfrrZ EXECUTABLErjrirrmrqr~rryZmkpathr}rarrr r)r)Z target_descrrrvZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksV       zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:r)r)dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjdjdD]*}tjjtjj||}tjj|rH|SqHW|S)NZPathr\)r]rMr-rfrzisfiler^rD)r)Zexer1fnrrrr_5s   zMSVCCompiler.find_exex86cCstsgS|d}|jdkr,d|j|jf}nd|j|f}xHtD]@}t||}|r@|jdkrr|jj||jdS||jdSq@W|jdkrx,tD]$}t|d|jdk r|jdPqWgS) Nz dirsrRz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr\r:z%s\6.0zIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrSrUr,r rVr6rDr)r)r-platformrrrrrrrdKs(        zMSVCCompiler.get_msvc_pathscCs6|dkr|jd}n |j|}|r2dj|tj|<dS)NrZZlibraryr\)rdrfrMr^)r)rr1rrrreos   zMSVCCompiler.set_path_env_var)rrr)rrl)NNNrNNN)NrN) NNNNNrNNNN)r)r)r7r8r9Z compiler_typeZ executablesr{r|rrrtrprsruZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr+rkrxrrrrrrrr_rdrerrrrrQsN  B  V  F  $rQg @z3Importing new compiler from distutils.msvc9compiler)rQ)r&)-rArMZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr,rr rr&rHrLrPrQrZOldMSVCCompilerZdistutils.msvc9compilerrrrr s\      - 9   PKD]wm)__pycache__/dep_util.cpython-36.opt-2.pycnu[3 \ @s2ddlZddlmZddZddZd dd ZdS) N)DistutilsFileErrorcCs`tjj|s tdtjj|tjj|s0dSddlm}tj||}tj||}||kS)Nzfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r */usr/lib64/python3.6/distutils/dep_util.pynewer s   rcCslt|t|krtdg}g}xBtt|D]2}t||||r.|j|||j||q.W||fS)Nz+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise srerrorcCstjj|sdSddlm}tj||}xX|D]L}tjj|sb|dkrJn|dkrVq0n |dkrbdStj||}||kr0dSq0WdSdS)Nrr)rrignorer)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s     r)r)rZdistutils.errorsrrrrr r r r s PKD]cԽ44.__pycache__/_msvccompiler.cpython-36.opt-1.pycnu[3 \KT@sdZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZdd Zd d Zd d ZddZdddZdddZedgZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc$CsytjtjdtjtjBd}Wntk r<tjddSXd}d}|xtD]}ytj ||\}}}Wntk rPYnX|rT|tj krTt j j |rTytt|}Wnttfk rwTYnX|dkrT||krT||}}qTWWdQRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredr)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivvc_dirZvtversionr //usr/lib64/python3.6/distutils/_msvccompiler.py _find_vc2015s0  r"c sddlddl}d }d}gfdd}|j|d}|j|jxD]~\}}}}d|krLtjj|ddd} tjj| sqLytd d |j d D} Wnt t fk rwLYnX| |krL| | }}qLWy |d}Wnt k rd}YnX||fS) NrcsjjdS)N)extendfindallr )_distutils_findvs all_packagesr r!_getallDsz_find_vc2017.._getall)targetz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64ZVCZ AuxiliaryZBuildcss|]}t|VqdS)N)r).0rr r r! Psz_find_vc2017...)r) r% threadingZThreadstartjoinrrrtuplesplitrr IndexError) r,rrr'tnameZ version_strrZpackagesrrr )r%r&r! _find_vc2017:s2    r4cCs t\}}d}d|krdnd}|rztjj|ddddddd }yd dl}|j|d d d}Wntttfk rxd}YnX|st\}}|rtjj|d|dd }|st j ddStjj|d}tjj |st j d|dS| ptjj | rt j d|d}||fS)Namd64Zx64x86z..ZredistZMSVCz**zMicrosoft.VC141.CRTzvcruntime140.dllrT) recursivezMicrosoft.VC140.CRTz$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN) r4rrr.glob ImportErrorr LookupErrorr"r risfile) plat_specrr vcruntimeZvcruntime_platZvcredistr: vcvarsallr r r!_find_vcvarsall[s6        rAcCstjdrddtjjDSt|\}}|s6tdy&tjdj||tj dj ddd }Wn@tj k r}z"t j |jtd j|jWYdd}~XnXd dd d |jDD}|r||d<|S)NZDISTUTILS_USE_SDKcSsi|]\}}||jqSr )lower)r)rvaluer r r! sz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)errorszError executing {}cSs$i|]\}}}|r|r||jqSr )rB)r)r_rCr r r!rDscss|]}|jdVqdS)=N) partition)r)liner r r!r*sz_get_vc_env..py_vcruntime_redist)rgetenvenvironitemsrAr subprocessZ check_outputformatZSTDOUTdecodeZCalledProcessErrorr erroroutputcmd splitlines)r>r@r?outexcenvr r r! _get_vc_env}s(     rZcCsN|stjdjtj}x2|D]*}tjjtjj||}tjj|r|SqW|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rrMr0pathseprr.abspathr=)Zexepathspfnr r r! _find_exes   r`r6Z x86_amd64)Zwin32z win-amd64zvcruntime140.dllc seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd*ddZd+ddZd,ddZd-ddZd.ddZd/ddZddZfd d!Zd"d#Zd$d%Zd&d'Zd0d(d)ZZS)1 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs tj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer r r!rbszMSVCCompiler.__init__NcCs>|dkrt}|tkr(tdjttt|}t|}|sDtd|jdd|_|jjt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_|jd d|_x2|jd djt j D]}|r|j|jt jqWx6|jd djt j D]}|r|j|jt jqWd|_dddddg|_|jj|jrJdndddddddg|_dddg}|js~|jd$ddddg}|d%|_|d&|_|d'|_|d(|_||_ ||_!t"j#df|jt"j#d"f|jt"j#d#f|jt"j$df|jt"j$d"f|jt"j$d#f|jt"j%df|j t"j%d"f|j t"j%d#f|j!i |_&d#|_'dS))Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exerLincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rjrk)rl)rl)rmrnro)rmrnro)(r PLAT_TO_VCVARSrrQr/rZget_pathsr0rr[r`cclinkerrircmcZmt_vcruntime_redistZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugr#Z ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsrd)rercr>Zvc_envr]dirldflagsZ ldflags_debugr r r! initializes`                      zMSVCCompiler.initializergcsTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }j|qSr ) obj_extension)r)ext)rer r!rD8sz1MSVCCompiler.object_filenames..csi|] }j|qSr ) res_extension)r)r)rer r!rD9srgc stjj|\}}r"tjj|}n2tjj|\}}|jtjjtjjfrT|dd}ytjj||St k rt dj |YnXdS)Nr8zDon't know how to compile {}) rrsplitextbasename splitdrive startswithryaltsepr.r<rrQ)r^baserrH)ext_map output_dir strip_dirr r! make_out_path>s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)reZsource_filenamesrrrr )rrrerr!object_filenames3s zMSVCCompiler.object_filenamesc Cs|js|j|j||||||} | \}} }} } |p6g} | jd|rT| j|jn | j|jd}x| D]}y| |\}}Wntk rwlYnX|rtj j |}||j krd|}nD||j krd|}d}n*||j krB|}d|}y|j|jg| ||gWqltk r<}zt|WYdd}~XqlXqln||jkrtj j|}tj j|}y\|j|jd|d||gtj jtj j|\}}tj j||d }|j|jd||gWqltk r}zt|WYdd}~XqlXqlntd j|||jg| | }|r$|jd |j||jd ||j|y|j|Wqltk r}zt|WYdd}~XqlXqlW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rdrZ_setup_compiler{r#r|rzKeyErrorrrr\ _c_extensions_cpp_extensionsrspawnrurrrdirnamervrrr.rQrs)reZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrHZrc_fileargsr r r!compileTsn               zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy,tjd|jdj||j |jg|Wqt k r}zt |WYdd}~XqXn tjd|dS)N)rz/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rdr_fix_object_argslibrary_filename _need_linkr rrir.rrr) rerZoutput_libnamerr target_langoutput_filenameZlib_argsrr r r!create_static_libs zMSVCCompiler.create_static_libcCs|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||r|j || f}dd|pgD}||||d|g}tjj |d} |dk r tjj tjj|\}}tjj | |j|}|jd|| r| |dd<| r.|j| tjj tjj|}|j|y6tjd|jdj ||j|jg||j|Wn,tk r}zt|WYdd}~XnXn tjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r )r)Zsymr r r! sz%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rdrrZ _fix_lib_argswarnstrrrrr.rr}rrrrr{r#r\Zmkpathr rrtr_copy_vcruntimerr)reZ target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr r r!linksN       zMSVCCompiler.linkcCs`|j}| stjj| rdStjj|jtkr6dStjd|t j ||}tj |t j dS)Nz Copying "%s")rwrrr=rrB _BUNDLED_DLLSr rshutilcopychmodstatS_IWRITE)rerr?r r r!rs  zMSVCCompiler._copy_vcruntimec s4tjd}z|jtjd<tj|S|tjd<XdS)Nr)rrMrrrNsuperr)rerUZold_path) __class__r r!rs    zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r )rer~r r r!library_dir_option&szMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)r)rer~r r r!runtime_library_dir_option)sz'MSVCCompiler.runtime_library_dir_optioncCs |j|S)N)r)rerir r r!library_option-szMSVCCompiler.library_optioncCs`|r|d|g}n|g}xB|D]6}x0|D](}tjj||j|}tjj|r(|Sq(WqWdSdS)NZ_d)rrr.rr=)redirsrirZ try_namesr~r3Zlibfiler r r!find_library_file0s    zMSVCCompiler.find_library_file)rrr)N)rrg)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrbrrrrrrrrrrr __classcell__r r )rr!rasN   T  [  9 ra)N)rrrrrPrZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r"r4rArZr`rp frozensetrrar r r r!s&   !"  PKD]fY &&$__pycache__/extension.cpython-36.pycnu[3 \)@s.dZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@s"eZdZdZdddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKst|tstdt|to,tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}djt|}d |}tj|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr+/usr/lib64/python3.6/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs4              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*__doc__r'r,rrrrrs ? !rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}zhg}x\|j} | dkrfP|j | rrqT| d| d$kodknr|j d | qT|| |} || } | d} t | g} d} x| ddD]}| dk r| j |d} qt jj|d}|dd }|d d}|d%kr8| jj |q|dkrP| jj |q|dkr|jd}|d&kr| jj |dfn$| jj |d|||d dfq|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr0| j} q|dkrB| j} q|dkrT| j} q|dkrx| jj ||s| j} q|d'kr| jj |q|j d#|qW|j | qTWWd|jX|S)(z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet.c.cc.cpp.cxx.c++.m.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u.a.so.sl.o.dylibzunrecognized argument '%s')r7r8r9r:r;r<r=rD)r?r@rArBrC)Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                          rU)r.rHr"rrUrrrrs zPKD]Fk&__pycache__/spawn.cpython-36.opt-1.pycnu[3 \@sdZddlZddlZddlmZmZddlmZddlm Z dddZ d d Z dd d Z ej d krvddlmZdadadddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkresz _spawn_posix...cSsg|] }t|qSr)r()r)r*rrrr+kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&zunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %sz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %dr)"rrrr execvpexecvsysplatform _cfg_targetr%get_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr#Z exit_statusrrrr Xs     &     r cCs|dkrtjjdtj}|jtj}tjj|\}}tj dkrN|dkrN|d}tjj |sx*|D]"}tjj ||}tjj |r`|Sq`WdS|SdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. NPATHZwin32z.exe) r r5r6defpathr3pathseppathsplitextr/r0isfiler)r"rKpathsbaseZextpfrrrrs    r)rrr)rrr)rrr)N)__doc__r/r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr0r%r1r4r rrrrrs       QPKD]z!  '__pycache__/errors.cpython-36.opt-2.pycnu[3 \ @s4GdddeZGdddeZGdddeZGdddeZGdd d eZGd d d eZGd d d eZGdddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGd d!d!eZGd"d#d#eZGd$d%d%eZd&S)'c@s eZdZdS)DistutilsErrorN)__name__ __module__ __qualname__rr(/usr/lib64/python3.6/distutils/errors.pyr src@s eZdZdS)DistutilsModuleErrorN)rrrrrrrrsrc@s eZdZdS)DistutilsClassErrorN)rrrrrrrrsrc@s eZdZdS)DistutilsGetoptErrorN)rrrrrrrr sr c@s eZdZdS)DistutilsArgErrorN)rrrrrrrr sr c@s eZdZdS)DistutilsFileErrorN)rrrrrrrr $sr c@s eZdZdS)DistutilsOptionErrorN)rrrrrrrr *sr c@s eZdZdS)DistutilsSetupErrorN)rrrrrrrr 3sr c@s eZdZdS)DistutilsPlatformErrorN)rrrrrrrr8src@s eZdZdS)DistutilsExecErrorN)rrrrrrrr>src@s eZdZdS)DistutilsInternalErrorN)rrrrrrrrCsrc@s eZdZdS)DistutilsTemplateErrorN)rrrrrrrrHsrc@s eZdZdS)DistutilsByteCompileErrorN)rrrrrrrrKsrc@s eZdZdS)CCompilerErrorN)rrrrrrrrOsrc@s eZdZdS)PreprocessErrorN)rrrrrrrrRsrc@s eZdZdS) CompileErrorN)rrrrrrrrUsrc@s eZdZdS)LibErrorN)rrrrrrrrXsrc@s eZdZdS) LinkErrorN)rrrrrrrr\src@s eZdZdS)UnknownFileErrorN)rrrrrrrr`srN) Exceptionrrrr r r r r rrrrrrrrrrrrrrr s$ PKD]^zz#__pycache__/__init__.cpython-36.pycnu[3 \@s&dZddlZejdejjdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr*/usr/lib64/python3.6/distutils/__init__.py sPKD]#611.__pycache__/_msvccompiler.cpython-36.opt-2.pycnu[3 \KT@sddlZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlmZddZd d Zd d Zd dZdddZdddZedgZGddde ZdS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc$CsytjtjdtjtjBd}Wntk r<tjddSXd}d}|xtD]}ytj ||\}}}Wntk rPYnX|rT|tj krTt j j |rTytt|}Wnttfk rwTYnX|dkrT||krT||}}qTWWdQRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredr)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivvc_dirZvtversionr //usr/lib64/python3.6/distutils/_msvccompiler.py _find_vc2015s0  r"c sddlddl}d }d}gfdd}|j|d}|j|jxD]~\}}}}d|krLtjj|ddd} tjj| sqLytd d |j d D} Wnt t fk rwLYnX| |krL| | }}qLWy |d}Wnt k rd}YnX||fS) NrcsjjdS)N)extendfindallr )_distutils_findvs all_packagesr r!_getallDsz_find_vc2017.._getall)targetz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64ZVCZ AuxiliaryZBuildcss|]}t|VqdS)N)r).0rr r r! Psz_find_vc2017...)r) r% threadingZThreadstartjoinrrrtuplesplitrr IndexError) r,rrr'tnameZ version_strrZpackagesrrr )r%r&r! _find_vc2017:s2    r4cCs t\}}d}d|krdnd}|rztjj|ddddddd }yd dl}|j|d d d}Wntttfk rxd}YnX|st\}}|rtjj|d|dd }|st j ddStjj|d}tjj |st j d|dS| ptjj | rt j d|d}||fS)Namd64Zx64x86z..ZredistZMSVCz**zMicrosoft.VC141.CRTzvcruntime140.dllrT) recursivezMicrosoft.VC140.CRTz$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN) r4rrr.glob ImportErrorr LookupErrorr"r risfile) plat_specrr vcruntimeZvcruntime_platZvcredistr: vcvarsallr r r!_find_vcvarsall[s6        rAcCstjdrddtjjDSt|\}}|s6tdy&tjdj||tj dj ddd }Wn@tj k r}z"t j |jtd j|jWYdd}~XnXd dd d |jDD}|r||d<|S)NZDISTUTILS_USE_SDKcSsi|]\}}||jqSr )lower)r)rvaluer r r! sz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)errorszError executing {}cSs$i|]\}}}|r|r||jqSr )rB)r)r_rCr r r!rDscss|]}|jdVqdS)=N) partition)r)liner r r!r*sz_get_vc_env..py_vcruntime_redist)rgetenvenvironitemsrAr subprocessZ check_outputformatZSTDOUTdecodeZCalledProcessErrorr erroroutputcmd splitlines)r>r@r?outexcenvr r r! _get_vc_env}s(     rZcCsN|stjdjtj}x2|D]*}tjjtjj||}tjj|r|SqW|S)Nr)rrMr0pathseprr.abspathr=)Zexepathspfnr r r! _find_exes   r`r6Z x86_amd64)Zwin32z win-amd64zvcruntime140.dllc seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd)ddZd*ddZd+ddZd,ddZd-ddZd.ddZddZfdd Zd!d"Zd#d$Zd%d&Zd/d'd(ZZS)0 MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs tj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer r r!rbszMSVCCompiler.__init__NcCs>|dkrt}|tkr(tdjttt|}t|}|sDtd|jdd|_|jjt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_|jd d|_x2|jd djt j D]}|r|j|jt jqWx6|jd djt j D]}|r|j|jt jqWd|_dddddg|_|jj|jrJdndddddddg|_dddg}|js~|jd$ddddg}|d%|_|d&|_|d'|_|d(|_||_ ||_!t"j#df|jt"j#d"f|jt"j#d#f|jt"j$df|jt"j$d"f|jt"j$d#f|jt"j%df|j t"j%d"f|j t"j%d#f|j!i |_&d#|_'dS))Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exerLincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rjrk)rl)rl)rmrnro)rmrnro)(r PLAT_TO_VCVARSrrQr/rZget_pathsr0rr[r`cclinkerrircmcZmt_vcruntime_redistZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugr#Z ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsrd)rercr>Zvc_envr]dirldflagsZ ldflags_debugr r r! initializes`                      zMSVCCompiler.initializergcsTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }j|qSr ) obj_extension)r)ext)rer r!rD8sz1MSVCCompiler.object_filenames..csi|] }j|qSr ) res_extension)r)r)rer r!rD9srgc stjj|\}}r"tjj|}n2tjj|\}}|jtjjtjjfrT|dd}ytjj||St k rt dj |YnXdS)Nr8zDon't know how to compile {}) rrsplitextbasename splitdrive startswithryaltsepr.r<rrQ)r^baserrH)ext_map output_dir strip_dirr r! make_out_path>s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)reZsource_filenamesrrrr )rrrerr!object_filenames3s zMSVCCompiler.object_filenamesc Cs|js|j|j||||||} | \}} }} } |p6g} | jd|rT| j|jn | j|jd}x| D]}y| |\}}Wntk rwlYnX|rtj j |}||j krd|}nD||j krd|}d}n*||j krB|}d|}y|j|jg| ||gWqltk r<}zt|WYdd}~XqlXqln||jkrtj j|}tj j|}y\|j|jd|d||gtj jtj j|\}}tj j||d }|j|jd||gWqltk r}zt|WYdd}~XqlXqlntd j|||jg| | }|r$|jd |j||jd ||j|y|j|Wqltk r}zt|WYdd}~XqlXqlW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rdrZ_setup_compiler{r#r|rzKeyErrorrrr\ _c_extensions_cpp_extensionsrspawnrurrrdirnamervrrr.rQrs)reZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrHZrc_fileargsr r r!compileTsn               zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy,tjd|jdj||j |jg|Wqt k r}zt |WYdd}~XqXn tjd|dS)N)rz/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rdr_fix_object_argslibrary_filename _need_linkr rrir.rrr) rerZoutput_libnamerr target_langoutput_filenameZlib_argsrr r r!create_static_libs zMSVCCompiler.create_static_libcCs|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||r|j || f}dd|pgD}||||d|g}tjj |d} |dk r tjj tjj|\}}tjj | |j|}|jd|| r| |dd<| r.|j| tjj tjj|}|j|y6tjd|jdj ||j|jg||j|Wn,tk r}zt|WYdd}~XnXn tjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r )r)Zsymr r r! sz%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rdrrZ _fix_lib_argswarnstrrrrr.rr}rrrrr{r#r\Zmkpathr rrtr_copy_vcruntimerr)reZ target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr r r!linksN       zMSVCCompiler.linkcCs`|j}| stjj| rdStjj|jtkr6dStjd|t j ||}tj |t j dS)Nz Copying "%s")rwrrr=rrB _BUNDLED_DLLSr rshutilcopychmodstatS_IWRITE)rerr?r r r!rs  zMSVCCompiler._copy_vcruntimec s4tjd}z|jtjd<tj|S|tjd<XdS)Nr)rrMrrrNsuperr)rerUZold_path) __class__r r!rs    zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r )rer~r r r!library_dir_option&szMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)r)rer~r r r!runtime_library_dir_option)sz'MSVCCompiler.runtime_library_dir_optioncCs |j|S)N)r)rerir r r!library_option-szMSVCCompiler.library_optioncCs`|r|d|g}n|g}xB|D]6}x0|D](}tjj||j|}tjj|r(|Sq(WqWdSdS)NZ_d)rrr.rr=)redirsrirZ try_namesr~r3Zlibfiler r r!find_library_file0s    zMSVCCompiler.find_library_file)rrr)N)rrg)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrbrrrrrrrrrrr __classcell__r r )rr!rasL   T  [  9 ra)N)rrrrPrZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r"r4rArZr`rp frozensetrrar r r r!s$   !"  PKD]5L ! !$__pycache__/text_file.cpython-36.pycnu[3 \0@s&dZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@steZdZdZddddddddZdddZd d Zd d Zdd dZdddZ dddZ ddZ ddZ ddZ dS)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.rstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtdx>|jjD]0}||krBt||||q$t|||j|q$Wx&|jD]}||jkrbtd|qbW|dkr|j|n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsoptr+/usr/lib64/python3.6/distutils/text_file.py__init__Ns  zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.r)r rN)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|jdS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}|j|jdt|ttfrD|jdt|n|jd||jt|dj|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|j||dS)Nzerror: ) ValueErrorr')rr%r&rrrerrorszTextFile.errorcCs tjjd|j||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter')rr%r&rrrwarnsz TextFile.warncCs|jr|jd }|jd =|Sd}x|jj}|dkr:d}|jr|r|jd}|dkrXnX|dksp||ddkr|ddkrdpd}|d||}|jdkrq$n |jdd}|jo|r |dkr|jd |S|j r|j }||}t |j t r |j dd|j d<n|j |j dg|_ n:|dkr.dSt |j t rN|j dd|_ n |j d|_ |jrt|jrt|j}n"|jr|j }n|jr|j}|dks|dkr|jrq$|jr|ddkr|dd}q$|ddd kr|ddd}q$|SdS)aURead and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.rrN#r\r*z\#z2continuation line immediately precedes end-of-filez\ r2r2r2r2r2r3)rrreadlinerfindstripreplacer r.r lstripr rr!rrrstripr)rr&Z buildup_lineposZeolrrrr4sf            zTextFile.readlinecCs,g}x"|j}|dkr|S|j|qWdS)zWRead and return the list of all logical lines remaining in the current file.N)r4r)rlinesr&rrr readliness zTextFile.readlinescCs|jj|dS)zPush 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.N)rr)rr&rrr unreadlineszTextFile.unreadline)NN)N)N)N)__name__ __module__ __qualname____doc__r rrrr'r)r.r4r<r=rrrrr s"9 !  x r)rAr+rrrrrrsPKD]& )__pycache__/filelist.cpython-36.opt-2.pycnu[3 \ 2@sddlZddlZddlZddlZddlmZddlmZmZddl m Z GdddZ ddZ ej fd d Zd d ZdddZdS)N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@sxeZdZdddZddZejfddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdddZdddZdS)FileListNcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr */usr/lib64/python3.6/distutils/filelist.py__init__szFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)r msgrr r r r )s zFileList.debug_printcCs|jj|dS)N)rappend)r itemr r r r3szFileList.appendcCs|jj|dS)N)rextend)r itemsr r r r6szFileList.extendcCs@tttjj|j}g|_x |D]}|jjtjj|q WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s z FileList.sortcCsDx>tt|jdddD]$}|j||j|dkr|j|=qWdS)Nr)rangelenr)r ir r r remove_duplicatesCszFileList.remove_duplicatescCs|j}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSr )r).0wr r r Wsz1FileList._parse_template_line..r recursive-includerecursive-excludez,'%s' expects ...cSsg|] }t|qSr )r)r+r,r r r r-]sgraftprunez#'%s' expects a single zunknown action '%s')r&r'r(r))r.r/)r1r2)rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs,         zFileList._parse_template_linecCsX|j|\}}}}|dkrZ|jddj|x&|D]}|j|dds4tjd|q4Wn|dkr|jddj|x&|D]}|j|dds|tjd |q|Wn|d kr|jd dj|x&|D]}|j|d dstjd |qWnj|dkr8|jddj|x*|D]"}|j|d dstjd|qWn|dkr|jd|dj|fx,|D]$}|j||ds`tjd||q`Wn|dkr|jd|dj|fx|D]$}|j||dstjd||qWnx|dkr|jd||jd|dsTtjd|nB|dkrH|jd||jd|dsTtjd|n td|dS)Nr&zinclude  r )anchorz%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r1zgraft z+warning: no directories found matching '%s'r2zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r7r rinclude_patternrr exclude_patternr)r r3r4r5rr6patternr r r process_template_linehsf           zFileList.process_template_liner rcCspd}t||||}|jd|j|jdkr4|jx6|jD],}|j|r<|jd||jj|d}qr;r<r r r r rs    L ,rcCs&ddtj|ddD}ttjj|S)Ncss,|]$\}}}|D]}tjj||VqqdS)N)rrr)r+basedirsrfiler r r sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsr r r _find_all_simplesrQcCs6t|}|tjkr.tjtjj|d}t||}t|S)N)start) rQrrH functoolspartialrrelpathrlist)rrZmake_relr r r rs   rcCs8tj|}tj}tjdkrd}d|}tjd||}|S)N\z\\\\z\1[^%s]z((?t|}nd}|dk rt|}|t|t|t|}tj} tjdkrd} |t|t|t|}d||| ||f}n|rd||t|df}tj|S)N_rWz\\z%s\A%s%s.*%s%sz%s\A%s) isinstancestrr[compiler] partitionr#rrZ) r=r9r:rArRr^endrCZ prefix_rerZr r r r?%s(   r?)r Nr)rr[rXrSZdistutils.utilrZdistutils.errorsrrZ distutilsrrrQrHrr]r?r r r r s  i  PKD]=[Ä *__pycache__/extension.cpython-36.opt-2.pycnu[3 \)@s*ddlZddlZGdddZddZdS)Nc@seZdZdddZddZdS) ExtensionNcKst|tstdt|to,tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}djt|}d |}tj|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr+/usr/lib64/python3.6/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs4              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*r'r,rrrrrsD !rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}zhg}x\|j} | dkrfP|j | rrqT| d| d#kodknr|j d| qT|| |} || } | d} t | g} d} x| ddD]}| dk r| j |d} qt jj|d}|dd }|d d}|d$kr8| jj |q|dkrP| jj |q|dkr|jd}|d%kr| jj |dfn$| jj |d|||d dfq|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr| jj |q|dkr0| j} q|dkrB| j} q|dkrT| j} q|dkrx| jj ||s| j} q|d&kr| jj |q|j d"|qW|j | qTWWd|jX|S)'Nr)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_ws*z'%s' lines not handled yet.c.cc.cpp.cxx.c++.m.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u.a.so.sl.o.dylibzunrecognized argument '%s')r6r7r8r9r:r;r<rC)r>r?r@rArB)Zdistutils.sysconfigr.r/r0Zdistutils.text_filer1Zdistutils.utilr2readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer.r/r0r1r2varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                          rT)rGr"rrTrrrrs zPKD]y+__pycache__/versionpredicate.cpython-36.pycnu[3 \ @sdZddlZddlZddlZejdejZejdZejdZ ddZ ej ej ej ejejejdZGd d d Zdad d ZdS) zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6tj|}|std||j\}}|tjj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 2/usr/lib64/python3.6/distutils/versionpredicate.pysplitUps    r)z>=z!=c@s(eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|j}|stdtj|}|s.td||j\|_}|j}|rtj|}|sbtd||jd}dd|jdD|_|jstd|ng|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$      zVersionPredicate.__init__cCs8|jr.dd|jD}|jddj|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs*x$|jD]\}}t|||sdSqWdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr#r%r r r r rs?rcCsdtdkrtjdtja|j}tj|}|s8td||jdpDd}|rVtj j |}|jd|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r3)r)r-Zdistutils.versionroperatorr.r/rrrrltleeqgtgener$rr,r3r r r r s   nPKD]Fӎ##$__pycache__/cmd.cpython-36.opt-2.pycnu[3 \J@snddlZddlZddlZddlmZddlmZmZmZm Z m Z ddlm Z GdddZ Gddde Z dS) N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@seZdZgZddZddZddZddZd d ZdBd dZ ddZ dCddZ ddZ dDddZ dEddZddZdFddZddZd d!Zd"d#Zd$d%ZdGd&d'ZdHd)d*Zd+d,Zd-d.Zd/d0ZdId1d2ZdJd4d5ZdKd6d7ZdLd8d9ZdMd:d;ZdNdd?Z dPd@dAZ!d S)QCommandcCsbddlm}t||std|jtkr0td||_|jd|_ |j |_ d|_ d|_ d|_ dS)Nr) Distributionz$dist must be a Distribution instancezCommand is an abstract class)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r%/usr/lib64/python3.6/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|jd|_dS)N)rfinalize_options)rrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr d|j}|j||tjd|d}x\|jD]R\}}}|j|}|d dkrp|dd }t||}|j|d||ftjdqDWdS) Nr) longopt_xlatezcommand options for '%s':)levelz r=z%s = %sr&) Zdistutils.fancy_getoptr#get_command_nameannouncerINFO user_options translater)rheaderindentr#optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrruns z Command.runrcCstj||dS)N)r)rmsgr$rrrr(szCommand.announcecCs&ddlm}|r"t|tjjdS)Nr)DEBUG)Zdistutils.debugr3printsysstdoutflush)rr2r3rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr.whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs|j|d|dS)Nstring)r>)rr.r<rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||tjd|n6t|trTtdd|D}nd}|sltd||fdS)Nz,\s*|\s+css|]}t|tVqdS)N)r r:).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r:r9resplitlistallr)rr.r=okrrrensure_string_lists   zCommand.ensure_string_listcCs8|j|||}|dk r4|| r4td|||fdS)Nzerror in '%s' option: )r>r)rr.Ztesterr;Z error_fmtr<r=rrr_ensure_tested_stringszCommand._ensure_tested_stringcCs|j|tjjdddS)Nfilenamez$'%s' does not exist or is not a file)rJospathisfile)rr.rrrensure_filenames zCommand.ensure_filenamecCs|j|tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rJrLrMisdir)rr.rrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrRr __name__)rrrrr' s zCommand.get_command_namecGsJ|jj|}|jx0|D](\}}t||dkrt||t||qWdS)N)rget_command_objr!rr9)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs|jj||}|j|S)N)rrUr!)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|jj||S)N)rreinitialize_command)rrWZreinit_subcommandsrrrrY0szCommand.reinitialize_commandcCs|jj|dS)N)r run_command)rrWrrrrZ4szCommand.run_commandcCs6g}x,|jD]"\}}|dks$||r |j|q W|S)N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCstjd|j|dS)Nzwarning: %s: %s )rwarnr')rr2rrrr_Ksz Command.warncCstj||||jddS)N)r)rexecuter)rfuncargsr2r$rrrr`NszCommand.executecCstj|||jddS)N)r)rmkpathr)rnamemoderrrrdQszCommand.mkpathc Cstj|||||j ||jdS)N)r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrgTs  zCommand.copy_filec Cstj||||||j |jdS)N)r)r copy_treerr)rrhrirjrkZpreserve_symlinksr$rrrrm]s zCommand.copy_treecCstj|||jdS)N)r)r move_filer)rsrcdstr$rrrrnfszCommand.move_filecCs ddlm}||||jddS)Nr)spawn)r)Zdistutils.spawnrqr)rcmdZ search_pathr$rqrrrrqjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrsrtrrrruos zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|dj|f}|jsdtj||rv|j ||||n t j |dS)Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r:rFtupler joinrrZ newer_groupr`rdebug)rZinfilesrirarbZexec_msgZskip_msgr$rrr make_fileus  zCommand.make_file)Nr")r)N)N)N)r)r)Nr)rc)rrNr)rrrr)r)rr)NNNN)NNr)"rT __module__ __qualname__r[rrr!rr r0r1r(r8r>r@rIrJrOrQr'rVrXrYrZr^r_r`rdrgrmrnrqrurzrrrrr sD0              r c@s2eZdZd gZddZddZdd Zd d Zd S) install_misc install-dir=d!directory to install the files tocCsd|_g|_dS)N) install_diroutfiles)rrrrrszinstall_misc.initialize_optionscCs|jd|dfdS)NZinstallr)rV)rdirnamerrr_install_dir_fromszinstall_misc._install_dir_fromcCsRg|_|sdS|j|jx2|D]*}|j||j|jjtjj|j|q WdS)N)rrdrrgr\rLrMrx)rZfilelistfrrr _copy_filess  zinstall_misc._copy_filescCs|jS)N)r)rrrr get_outputsszinstall_misc.get_outputsN)r~rr)rTr{r|r*rrrrrrrrr}s  r})r5rLrDZdistutils.errorsrZ distutilsrrrrrrr r}rrrrs  PKD]Cֺ"__pycache__/version.cpython-36.pycnu[3 \90@s>dZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@sJeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r|j|dS)N)parse)selfvstringr)/usr/lib64/python3.6/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs|j|}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__)N) r __module__ __qualname____doc__rr rrrrrrrrrrs rc@s<eZdZdZejdejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|std||jddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s'r)r) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr majorminorZpatchr'Zprerelease_numrrrrs  zStrictVersion.parsecCsb|jddkr*djtt|jdd}ndjtt|j}|jr^||jdt|jd}|S)Nrr.r)r&joinr$r r')rrrrr__str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|j rF|j rFdS|jrX|j rXdS|j rj|jrjdS|jr|jr|j|jkrdS|j|jkrdSdSn dstddS)NrrFznever get herer-r-) isinstancer rr&r'AssertionError)rrrrrr s&      zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIrrr,r rrrrr]s # rc@sHeZdZdZejdejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r|j|dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd|jj|D}x:t|D].\}}yt|||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|qS)r*r).0xrrr 8sz&LooseVersion.parse..)r component_resplit enumerater%r!r&)rrZ componentsiobjrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr,CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrrr-)r.r r4r&)rrrrrr Ks    zLooseVersion._cmp)N) r rrrr0r1r2r8rrr,r r rrrrr4 s r4)rr0rrr4rrrrs >/PKD]qii&__pycache__/spawn.cpython-36.opt-2.pycnu[3 \@sddlZddlZddlmZmZddlmZddlmZdddZ dd Z dd d Z ej d krrdd lm Z dadadddZdddZdS)N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkresz _spawn_posix...cSsg|] }t|qSr)r()r)r*rrrr+kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&zunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %sz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %dr)"rrrr execvpexecvsysplatform _cfg_targetr%get_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr#Z exit_statusrrrr Xs     &     r cCs|dkrtjjdtj}|jtj}tjj|\}}tj dkrN|dkrN|d}tjj |sx*|D]"}tjj ||}tjj |r`|Sq`WdS|SdS)NPATHZwin32z.exe) r r5r6defpathr3pathseppathsplitextr/r0isfiler)r"rKpathsbaseZextpfrrrrs    r)rrr)rrr)rrr)N)r/r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr0r%r1r4r rrrrr s       QPKD]q))'__pycache__/fancy_getopt.cpython-36.pycnu[3 \xE@sdZddlZddlZddlZddlZddlTdZejdeZejdeefZ e j ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrdZx2dD]*ZedeedjeeeeqWdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZd d d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZddZd"ddZd#ddZdS)$ FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsN||_i|_|jr|ji|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr./usr/lib64/python3.6/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs,|jjx|jD]}||j|d<qWdS)Nr)rclearr)roptionrrrrQs  zFancyGetopt._build_indexcCs||_|jdS)N)rr)rrrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|jj|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs     zFancyGetopt.add_optioncCs ||jkS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)r)rrrrr has_optioncszFancyGetopt.has_optioncCs |jtS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores.) translate longopt_xlate)rrrrr get_attr_namehszFancyGetopt.get_attr_namecCs`t|tstxL|jD]@\}}||jkr= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyr/r/)r r r rrepeatrlen ValueErrorr strrrrr getr longopt_rematchrr)rrlongshorthelpr0Zalias_torrr_grok_option_tables^                   zFancyGetopt._grok_option_tablec Cs|dkrtjdd}|dkr*t}d}nd}|jdj|j}ytj|||j\}}Wn,tjk r}zt |WYdd}~XnXx|D]\}}t |dkr|ddkr|j |d}n,t |dkr|ddd kst |dd}|j j|} | r| }|j|sB|d ks"t d |jj|} | r>| }d}nd}|j|} |rt|jj| dk rtt|| dd}t|| ||jj||fqW|r||fS|SdS) aParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. Nr,TF r+rrz--zboolean option can't have value)sysargv OptionDummyr:joinr getoptr errorZDistutilsArgErrorr1r r"r r4rr rr0getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr%valr attrrrrrAsF         zFancyGetopt.getoptcCs|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsxd}xV|jD]L}|d}|d}t|}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d|} |r|g} nd g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| jd ||| dfn| jd ||fn:d ||f}| r<| jd ||| dfn| jd|x$| ddD]}| j| |qXWqW| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr,r-Nr+Nr;zOption summary:r)z --%-*s %sz --%-*s z%s (-%s)z --%-*sr/r/r/)rr1 wrap_textr)rheaderZmax_optrr7r8lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr9textZ opt_namesrrr generate_helpsF        zFancyGetopt.generate_helpcCs4|dkrtj}x |j|D]}|j|dqWdS)N )r=stdoutrSwrite)rrOfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname____doc__rrrrrrr&r'r(r:rArKrSrYrrrrrs  (  M = OrcCst|}|j||j||S)N)rr(rA)optionsZ negative_optrFrEparserrrr fancy_getoptos r`cCsi|]}dt|qS)r;)ord).0Z_wscharrrr usrccCs"|dkr gSt||kr|gS|j}|jt}tjd|}dd|D}g}x|rg}d}xZ|rt|d}|||kr|j|d|d=||}q`|r|d ddkr|d =Pq`W|r |dkr|j|dd||d|d|d<|dddkr |d=|jdj|qPW|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|] }|r|qSrr)rbZchrrr szwrap_text..rr,r;r<r/r/)r1 expandtabsrWS_TRANSresplitrr@)rRwidthZchunksrQZcur_lineZcur_lenrPrrrrNws:      rNcCs |jtS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )rr)r%rrrtranslate_longoptsrjc@seZdZdZgfddZdS)r?z_Dummy class just used as a place to hold command-line option values as instance attributes.cCsx|D]}t||dqWdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rD)rr^r%rrrrs zOptionDummy.__init__N)rZr[r\r]rrrrrr?sr?__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].) (z width: %drT)rlrmrnro)r]r=stringrgrAZdistutils.errorsZ longopt_patcompiler5Z neg_alias_rer3 maketransrrr`Z whitespacerfrNrjr?rZrRwprintr@rrrr s* T6   PKD]eo  '__pycache__/config.cpython-36.opt-2.pycnu[3 \@s8ddlZddlmZddlmZdZGdddeZdS)N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sdeZdZdZdZdZdZdddefdgZdgZd d Z d d Z d dZ ddZ ddZ ddZdS) PyPIRCCommandzhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)N~z.pypirc)ospathjoin expanduser)selfr(/usr/lib64/python3.6/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|j}tjtj|tjtjBdd}|jt||fWdQRXdS)Niw)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|j}tjj|r|jd||jp.|j}|jp:|j}t }|j ||j }d|krR|j dd}dd|j dD}|gkrd|krdg}niSx|D]}d|i} |j |d | d <xHd |jfd |jfdfD].\} } |j|| r|j || | | <q| | | <qW|dkr.||jdfkr.|j| d <| S| d|ksH| d |kr| SqWnRd |krd }|j|d r||j |d }n|j}|j |d |j |d |||jdSiS)NzUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|jdkr|jqS))strip).0serverrrr >sz.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrz server-login)rrr$r!r%)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sX                zPyPIRCCommand._read_pypirccCs8ddl}|jdd}|j|djdd}|jj|S)Nrz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rZresponser4Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)Nr)r$r%Z show_response)rrrrinitialize_optionsxsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)N)r$r'r%r()rrrrfinalize_options~s  zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs Ar)r Z configparserrZ distutils.cmdrrrrrrrs  PKD]D;^AA*__pycache__/ccompiler.cpython-36.opt-2.pycnu[3 \7@sddlZddlZddlZddlTddlmZddlmZddlm Z ddl m Z m Z ddl mZmZddlmZGd d d Zd,Zd-ddZd.d/d0d1d2d Zd!d"Zd3d#d$Zd%d&Zd'd(ZdS)4N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ ddddddZ dddgZ dpddZ d d Zd d Zd dZddZdqddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Z drd/d0Z!d1d2Z"d3d4Z#d5d6Z$d7d8Z%dsd9d:Z&dtd;d<Z'd=d>Z(dud?d@Z)dAZ*dBZ+dCZ,dvdDdEZ-dwdFdGZ.dxdHdIZ/dydJdKZ0dLdMZ1dNdOZ2dPdQZ3dzdRdSZ4d{dTdUZ5d|dWdXZ6d}dYdZZ7d~d[d\Z8dd^d_Z9ddadbZ:dcddZ;dedfZdkdlZ?ddndoZ@dS) CCompilerNczc++Zobjc)z.cz.ccz.cppz.cxxz.mrcCsf||_||_||_d|_g|_g|_g|_g|_g|_g|_ x$|j j D]}|j ||j |qHWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr+/usr/lib64/python3.6/distutils/ccompiler.py__init__UszCCompiler.__init__cKs@x:|D]2}||jkr(td||jjf|j|||qWdS)Nz$unknown executable '%s' for class %s)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dS)N) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}x&|jD]}|d|kr |S|d7}q WdS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCsdx^|D]V}t|toFt|dkoFt|dts:|ddkoFt|dtstd|ddqWdS)Nr(rzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(r-)r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss    z"CCompiler._check_macro_definitionscCs.|j|}|dk r|j|=|jj||fdS)N)r,rappend)rr)r'r*rrr define_macros zCCompiler.define_macrocCs0|j|}|dk r|j|=|f}|jj|dS)N)r,rr2)rr)r*Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|jj|dS)N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|jj|dS)N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|jj|dS)N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|jj|dS)N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|jj|dS)N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t ||}i} xRt t |D]B} || } || } t j j| d} |jt j j| | | f| | <qW||||| fS)Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr()rr$r%r0rlistrr.object_filenamesgen_preprocess_optionsranger/ospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr*srcobjextrrr_setup_compile6s8   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrNdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)rr$r%r0rrDrr.)rrrrrrr_fix_compile_argsjs   zCCompiler._fix_compile_argscCs|j||d}|ifS)N)r)rE)rrLrrMrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)Nz,'objects' must be a list or tuple of stringsz%'output_dir' must be a string or None)r$rDr.r0rr%)rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)NTnewer)Zmissing)rr r)rr output_filer[rrr _need_links  zCCompiler._need_linkc Cst|ts|g}d}t|j}x^|D]V}tjj|\}}|jj|}y |jj |}||krb|}|}Wq$t k rxYq$Xq$W|S)N) r$rDr/language_orderrHrIrJ language_mapgetindexr) rrLZlangrasourcebaserRZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)Nr)rrbr\rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc Csz|j||||||\}} }} } |j| ||} xH| D]@} y| | \}}Wntk r\w2YnX|j| ||| || q2W| S)N)rSrVKeyError_compile)rrLrrrrTrerfrMrrNrOrUrQrPrRrrrcompiles6  zCCompiler.compilecCsdS)Nr)rrQrPrRrUrfrNrrrriCszCCompiler._compilecCsdS)Nr)rroutput_libnamerrT target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrTrerf build_temprlrrrlinkis9zCCompiler.linkc Cs2|jtj||j|dd||||||| | | | dS)Nshared)lib_type)rsr SHARED_LIBRARYlibrary_filename) rrrkrrrrrqrTrerfrrrlrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|jtj||||||||| | | | dS)N)rsr SHARED_OBJECT) rrrprrrrrqrTrerfrrrlrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|jtj||j|||||d||| d| dS)N)rsr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrTrerfrlrrrlink_executables  zCCompiler.link_executablecCstdS)N)ro)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)N)ro)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)N)ro)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}tj|d} z.x|D]} | jd| q`W| jd|Wd| jXy|j|g|d} Wntk rd SXy|j| d ||d Wnt t fk rd SXdS) Nrz.cT)textwz#include "%s" z+main (int argc, char **argv) { %s(); } )rFza.out)rr) tempfileZmkstemprHfdopenwritecloserjZ CompileErrorr}Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8     zCCompiler.has_functioncCstdS)N)ro)rr7rrTrrrfind_library_file#szCCompiler.find_library_filecCs|dkr d}g}x|D]|}tjj|\}}tjj|d}|tjj|d}||jkrhtd||f|rxtjj|}|jtjj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rHrIrJ splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namercrRrrrrENs    zCCompiler.object_filenamescCs$|rtjj|}tjj|||jS)N)rHrIrrshared_lib_extension)rrrCrrrrshared_object_filename_s z CCompiler.shared_object_filenamecCs(|rtjj|}tjj|||jp"dS)Nr)rHrIrr exe_extension)rrrCrrrrr|es zCCompiler.executable_filenamestaticc Cs`|d krtdt||d}t||d}tjj|\}}|||f} |rPd}tjj||| S) Nrrtdylib xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rrtrr)rgetattrrHrIsplitr) rr9rurCrZfmtrRr5rcfilenamerrrrwks zCCompiler.library_filenamer(cCstj|dS)N)r rT)rmsglevelrrrannounce~szCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst||jddS)N)r )rr )rcmdrrrrszCCompiler.spawncCst|||jdS)N)r )rr )rrPdstrrrrszCCompiler.move_filecCst|||jddS)N)r )rr )rr)moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r()Nr()r)Ar! __module__ __qualname__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr_r^rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrSrVrWrXrYrZr]rdrgrjrirmryrvr{rsrxrzr}r~rrrrrErr|rwrrrr rrrrrrrr s  $   +  "   B  4    * +      r cygwin.*unixposixntmsvccCsV|dkrtj}|dkrtj}x4tD],\}}tj||dk sJtj||dk r"|Sq"WdS)Nr)rHr)rplatform_default_compilersrematch)osnamerpatterncompilerrrrget_default_compilers r unixccompiler UnixCCompilerstandard UNIX-style compiler _msvccompiler MSVCCompilerMicrosoft Visual C++cygwinccompilerCygwinCCompiler'Cygwin port of GNU C Compiler for Win32Mingw32CCompiler(Mingw32 port of GNU C Compiler for Win32 bcppcompiler BCPPCompilerBorland C++ Compiler)rrcygwinZmingw32ZbcppcCs\ddlm}g}x,tjD] }|jd|dt|dfqW|j||}|jddS)Nr) FancyGetoptz compiler=r-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXy*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rHr)rrrhZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2    rcCsg}x|D]}t|to2dt|ko.dkns@td|t|dkr`|jd|dq t|dkr |ddkr|jd|dq |jd|q Wx|D]}|jd|qW|S) Nr(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrNZmacror5rrrrF s &    rFc Csg}x|D]}|j|j|q Wx4|D],}|j|}t|trJ||}q(|j|q(Wx^|D]V}tjj|\}} |r|j|g| } | r|j| q|j d|q^|j|j |q^W|S)Nz6no library file corresponding to '%s' found (skipping)) r2r~rr$rDrHrIrrrr) rrrrZlib_optsr5optrZlib_dirZlib_nameZlib_filerrrgen_lib_options7s$        rrrrrrr)rrr)NN)rrr)rrr)rrr)rrr)rrr)NNrrr)rrHrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrFrrrrrsB      --PKD]y1__pycache__/versionpredicate.cpython-36.opt-1.pycnu[3 \ @sdZddlZddlZddlZejdejZejdZejdZ ddZ ej ej ej ejejejdZGd d d Zdad d ZdS) zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6tj|}|std||j\}}|tjj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 2/usr/lib64/python3.6/distutils/versionpredicate.pysplitUps    r)z>=z!=c@s(eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|j}|stdtj|}|s.td||j\|_}|j}|rtj|}|sbtd||jd}dd|jdD|_|jstd|ng|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$      zVersionPredicate.__init__cCs8|jr.dd|jD}|jddj|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs*x$|jD]\}}t|||sdSqWdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr#r%r r r r rs?rcCsdtdkrtjdtja|j}tj|}|s8td||jdpDd}|rVtj j |}|jd|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r3)r)r-Zdistutils.versionroperatorr.r/rrrrltleeqgtgener$rr,r3r r r r s   nPKD] &__pycache__/debug.cpython-36.opt-1.pycnu[3 \@sddlZejjdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr'/usr/lib64/python3.6/distutils/debug.pysPKD]`E(11-__pycache__/bcppcompiler.cpython-36.opt-2.pycnu[3 \W:@stddlZddlmZmZmZmZmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZGddde ZdS) N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZiZdgZdddgZeeZdZdZ dZ d Z Z d Z dd d ZdddZdddZdddZd ddZd!ddZd"ddZdS)# BCPPCompilerZbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer./usr/lib64/python3.6/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc Cs|j||||||\}} }} } |p$g} | jd|rB| j|jn | j|jxD| D]:} y| | \}}Wntk rwVYnXtjj|}tjj| } |j tjj | |dkrqV|dkry|j dd| |gWqVt k r}zt |WYdd}~XqVXqV||jkrd}n||jkr,d}nd}d| }y,|j |jg| | ||g||gWqVt k r}zt |WYdd}~XqVXqVW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF        (zBCPPCompiler.compilec Cs|j||\}}|j||d}|j||r~|dg|}|r:y|j|jg|Wqtk rz}zt|WYdd}~XqXn tjd|dS)N)r*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs  zBCPPCompiler.create_static_libc Cs|j||\}}|j|||\}}}|r8tjdt||dk rNtjj||}|j||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x&|pgD]}|jd||fqW|jt||fd |ttjj|}|g}g}xF|D]>}tjjtjj|\}}|d kr|j|n |j|qfWx$|D]}|jd tjj|qW|jd |j||jd |g|jdx<|D]4}|j||| }|dkr(|j|n |j|qW|jd|jd|jd |g|jd |j|| r| |dd<| r|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnXn tjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|                    zBCPPCompiler.linkc Csv|r"|d}|d|d||f}n |d|f}xB|D]6}x0|D](}tjj||j|}tjj|r>|Sq>Wq4WdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s      zBCPPCompiler.find_library_filercCs|dkr d}g}x|D]}tjjtjj|\}}||jddgkrTtd||f|rdtjj|}|dkr|jtjj|||q|dkr|jtjj||dq|jtjj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"    zBCPPCompiler.object_filenamesc Cs|jd||\}}}t||}dg|} |dk r>| jd||rN|| dd<|r\| j|| j||js~|dks~t||r|r|jtjj |y|j | Wn2t k r} zt | t | WYdd} ~ XnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr)NNNNN)__name__ __module__ __qualname__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsH   B  |  r)r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PKD]f7-__pycache__/archive_util.cpython-36.opt-2.pycnu[3 \F! @s@ddlZddlmZddlZy ddlZWnek r@dZYnXddlmZddlm Z ddl m Z ddl m Z yddlmZWnek rdZYnXyddlmZWnek rdZYnXd d Zd d Zd ddZd!ddZed"gdfed#gdfed$gdfed%gdfed&gdfegdfdZddZd'ddZdS)(N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)N)rKeyError)nameresultr ./usr/lib64/python3.6/distutils/archive_util.py_get_gids  rc CsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)Nr )rr )r r r r r_get_uid+s  rgzipc s.dddddd}dddd d }|dk r:||jkr:td |d } |d krZ| |j|d7} ttjj| |dddl} tj dt t fdd} |s| j | d||} z| j || dWd| jX|d kr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)NZgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr)dry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer%rtarZcompressed_namecmdr )rrrrr make_tarball7s<          r2c Cs|d}ttjj||dtdkrp|r.d}nd}ytd|||g|dWn tk rjtd|YnXn:tjd|||sytj |dtj d }Wn&t k rtj |dtj d }YnX|tj krtjjtjj|d }|j||tjd |xtj|D]\}} } x>| D]6} tjjtjj|| d }|j||tjd |qWxJ| D]B} tjjtjj|| }tjj|rV|j||tjd |qVWqW|j|S) Nz.zip)rz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr"r#r$zipfilerrrr&ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfiler)) r-r.r/rZ zip_filenameZ zipoptionsr3r#dirpathZdirnames filenamesr r r r make_zipfilesJ          r?rzgzip'ed tar-filerzbzip2'ed tar-filerzxz'ed tar-filezcompressed tar filezuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr0r3cCsx|D]}|tkr|SqWdS)N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss rBcCstj}|dk r6tjd|tjj|}|s6tj||dkrDtj}d|i} y t|} Wn t k rxt d|YnX| d} x| dD]\} } | | | <qW|dkr|| d<|| d<z| ||f| }Wd|dk rtjd |tj|X|S) Nzchanging into '%s'rzunknown archive format '%s'rr3rrzchanging back to '%s') r"getcwdrdebugr#abspathchdirr7r@r r )r-rAZroot_dirr.r/rrrZsave_cwdkwargsZ format_infofuncargvalfilenamer r r make_archives2       rM)rrrNN)rr)rr)rr)rr)rr)rN)NNrrNN)r"warningsrr+r5 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr2r?r@rBrMr r r rs@            G =      PKD]^zz)__pycache__/__init__.cpython-36.opt-1.pycnu[3 \@s&dZddlZejdejjdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr*/usr/lib64/python3.6/distutils/__init__.py sPKD](ߟ '__pycache__/config.cpython-36.opt-1.pycnu[3 \@s<dZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sheZdZdZdZdZdZdZdddefdgZdgZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduser)selfr(/usr/lib64/python3.6/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|j}tjtj|tjtjBdd}|jt||fWdQRXdS)zCreates a default .pypirc file.iwN)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|j}tjj|r|jd||jp.|j}|jp:|j}t }|j ||j }d|krR|j dd}dd|j dD}|gkrd|krdg}niSx|D]}d|i} |j |d | d <xHd |jfd |jfdfD].\} } |j|| r|j || | | <q| | | <qW|dkr.||jdfkr.|j| d <| S| d|ksH| d |kr| SqWnRd|krd}|j|d r||j |d }n|j}|j |d |j |d |||jdSiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|jdkr|jqS))strip).0serverrrr >sz.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrNz server-login)rrr$r!r%)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sX                zPyPIRCCommand._read_pypirccCs8ddl}|jdd}|j|djdd}|jj|S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rZresponser4Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_response)rrrrinitialize_optionsxsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r$r'r%r()rrrrfinalize_options~s  zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname____doc__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs"Ar)r=r Z configparserrZ distutils.cmdrrrrrrrs   PKD]~#C..*__pycache__/sysconfig.cpython-36.opt-1.pycnu[3 4bVjN @sdZddlZddlZddlZddlZddlmZejjej Z ejjej Z ejjej ZejjejZdejkrejjejdZnejjejjejZejdkrejjd,rejjejjeZd d Zeed dZeoejdkoejjd-rejjejjeZd d ZeZdZyes.ejZWne k rFYnXddZ!d.ddZ"d/ddZ#ddZ$ddZ%ddZ&d0ddZ'ej(dZ)ej(dZ*ej(dZ+d1d d!Z,d"d#Z-da.d$d%Z/d&d'Z0d(d)Z1d*d+Z2dS)2aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEnt\pcbuild\win32\pcbuild\amd64cCs.x(dD] }tjjtjj|d|rdSqWdS)N Setup.dist Setup.localModulesTF)rr)ospathisfilejoin)dfnr+/usr/lib64/python3.6/distutils/sysconfig.py_is_python_source_dir)s r_homecCstr ttSttS)N) _sys_homer project_baserrrr _python_build2srcCsdtjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. z%d.%dN)sys version_inforrrrget_python_versionDsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjjt dd}tjj |Sdt t }tjj|d|Stjdkrtjj|dSt dtjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonincluderzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr name python_buildrrr r get_config_varnormpathr build_flagsr) plat_specificprefixZincdirZ python_dirrrrget_python_incLs     r)cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tjj||dt}|r`|Stjj|dSnrAZccZcxxoptZcflagsZccsharedZldsharedZ shlib_suffixarZar_flagsZnewccZcppr?Zcc_cmdrrrrBs\                         rBcCsDtr,tjdkr"tjjtptd}q6tp(t}n tdd}tjj|dS)z2Return full pathname of installed pyconfig.h file.rPCr)r'z pyconfig-64.h)r#r r"r r rrr))inc_dirrrrget_config_h_filenames    rLcCs\trtjjtptdStddd}djtt }t t j drL|dt j j 7}tjj||dS)zAReturn full pathname of installed Makefile from the Python build.Makefilerr)r'r.z config-{}{} _multiarchz-%s)r#r r r rrr/formatrr&hasattrrimplementationrN)Zlib_dirZ config_filerrrget_makefile_filenames  rRc Cs|dkr i}tjd}tjd}xx|j}|s0P|j|}|rz|jdd\}}y t|}Wntk rnYnX|||<q"|j|}|r"d||jd<q"W|S)zParse a config.h-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. Nz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rrr)recompilereadlinematchgroupint ValueError)fpg define_rxundef_rxlinemnvrrrparse_config_hs(      rbz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c Csddlm}||ddddd}|dkr*i}i}i}x|j}|dkrFPtj|}|r4|jdd\}} | j} | jdd } d | kr| ||<q4y t| } Wn$t k r| jdd ||<Yq4X| ||<q4Wd} x|rxt |D]} || } t j | pt j | }|rx|jd}d}||kr2t||}n||krBd}nx|tjkrZtj|}n`|| kr| jdr| dd| krd }n$d||krd}nt|d|}n d ||<}|r~| |jd}| d|j||} d |kr| || <nzy t| } Wn"t k r*| j|| <Yn X| || <|| =| jdr~| dd| kr~| dd} | |kr~| || <q|| =qWqW|jx.|jD]"\}} t| tr| j||<qW|j||S)zParse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. r)TextFilersurrogateescape)Zstrip_commentsZ skip_blanksZ join_lineserrorsNrz$$r$r5r;r=TFPY_)r5r;r=)Zdistutils.text_filercrU _variable_rxrVrWstripreplacerXrYlist _findvar1_rxsearch _findvar2_rxstrr rErFendstartcloseitems isinstanceupdate)rr[rcrZdonenotdoner^r_r`ratmpvrenamed_variablesr"valuefounditemafterkrrrparse_makefiles                       rcCsZxTtj|ptj|}|rP|j\}}|d||j|jd||d}qPqW|S)aExpand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. rrN)rmrnrospangetrW)svarsr_Zbegrqrrrexpand_makefile_varss *rc CsVtjjddjtjtjttjddd}t |t t dgd}|j }ia t j|dS) z7Initialize the module as appropriate for POSIX systems._PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rNr)abir@ multiarchbuild_time_varsrN)r rErrOrabiflagsr@getattrrQ __import__globalslocalsrrCrv)r"_temprrrr _init_posixsrcCs~i}tddd|d<tddd|d<tdd|d<tjd|d<d |d <tjd d |d <tjjtjj t j |d<|a dS)z+Initialize the module as appropriate for NTrr)r'r.LIBDEST BINLIBDEST)r' INCLUDEPY EXT_SUFFIXz.exeEXE.rVERSIONBINDIRN) r/r)_impextension_suffixesrrkr r dirnameabspathr executablerC)r[rrr_init_ntsrcGs^tdkr(tjdtj}|r(|niattd<ttd<tjd}|dk rV|td<tjdt}tjdkrtrtj j t }tj j ||}ntj j t }tj j tj j|td<totjdkr t}tj jtd o|tjkr tj j |td}tj j|td<tjd kr(d dl}|jt|rVg}x|D]}|jtj|q8W|StSdS) aWith no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. NZ_init_r( exec_prefixrSOrrr0r)rCrrr r"r-r,rr#r rrRr rr%isabsgetcwdrr@rAcustomize_config_varsappend)argsfuncrrbaserAvalsr"rrrrDs@       rDcCs*|dkrddl}|jdtdtj|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) rrNz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningrDr)r"rrrrr$sr$)rr)rr)rN)rrN)N)N)3__doc__rr rSrrerr r%r(r-rr, base_prefixr!base_exec_prefixr rErrrrr"lowerendswithrrrrr#r&rAttributeErrorrr)r/rBrLrRrbrTrirmrorrrCrrrDr$rrrr sZ      # +I      jJPKD] &__pycache__/debug.cpython-36.opt-2.pycnu[3 \@sddlZejjdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr'/usr/lib64/python3.6/distutils/debug.pysPKD]yE'(__pycache__/unixccompiler.cpython-36.pycnu[3 _Vj:@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execs@tj|||\}}}tjd}|r6||kr6|j||||fS)z'Remove standard library path from rpathLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir) __class__//usr/lib64/python3.6/distutils/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc Cs|jd||}|\}}}t||} |j| } |r>| jd|g|rN|| dd<|r\| j|| j||js~|dks~t||r|r|jtj j |y|j | Wn*t k r} zt | WYdd} ~ XnXdS)Nz-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr#r#r$ preprocess^s$      zUnixCCompiler.preprocessc Csp|j}tjdkr tj|||}y |j|||d|g|Wn*tk rj}zt|WYdd}~XnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r#r#r$_compilexs   zUnixCCompiler._compilercCs|j||\}}|j||d}|j||r|jtjj||j|j|g||j |j ry|j|j |gWqt k r}zt |WYdd}~XqXn t jd|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr?Zoutput_libnamer;r@ target_langoutput_filenamer2r#r#r$create_static_libs zUnixCCompiler.create_static_libcCs|j||\}}|j|||}|\}}}t||||}t|ttdfsPtd|dk rftjj ||}|j ||r||j |d|g}| rdg|dd<| r| |dd<| r|j | |j tjj|y|tjkr|jdd}n|jdd}| dkrR|jrRd}tjj|ddkrDd}xd||krB|d7}q(W|j|||<tjd krjtj||}|j||Wn,tk r}zt|WYdd}~XnXn tjd |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=r zskipping %s (up-to-date))r<rr isinstancestrtype TypeErrorr(r)joinr>r?r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;rr r!Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerir2r#r#r$linksH      zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCstjjtjd}tjdddkr,d|StjdddkrFd|Stjddd krz|j|rnd d|gSd d|gStjddd kstjddd krd|gS|j|rtjddkrd|Sd|Snd|SdS)NCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrOrr#r#r$runtime_library_dir_options    $  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_option szUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptjd}tjd|} | dkrfd } n | jd } x|D]} tj j | |} tj j | |} tj j | |}tj j | |}tjdko| j d s| j d o| j d  rBtj j | | d d|} tj j | | d d|} tj j | | d d|}tj j | | d d|}tj j | rT| Stj j |rf|Stj j | rx| Stj j |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr CFLAGSz-isysroot\s+(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrYr@Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrOr[r\r^r]r#r#r$find_library_file s>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rCrNrPrRrXrZrh __classcell__r#r#)r"r$r -sF       6,r )__doc__r(r4raZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r#r#r#r$s    PKD] ư*__pycache__/file_util.cpython-36.opt-2.pycnu[3 \@sVddlZddlmZddlmZddddZdd d Zdd dZdddZddZ dS)N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)NhardsymicNCsd}d}zvyt|d}Wn4tk rN}ztd||jfWYdd}~XnXtjj|rytj|Wn4tk r}ztd||jfWYdd}~XnXyt|d}Wn4tk r}ztd||jfWYdd}~XnXxy|j|}Wn6tk r*}ztd||jfWYdd}~XnX|s4Py|j |Wqtk rx}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS)Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.6/distutils/file_util.py_copy_file_contentssF $ """*rcCsddlm}ddlm} m} m} m} tjj |s %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater,verbosedry_runrrrrrdiractionstrrr copy_fileCsT!               r6c(Csddlm}m}m}m}m}ddl} |dkr:tjd|||rB|S||sVt d|||rrt j j |||}n||rt d||f|||st d||fd} yt j ||WnPtk r } z2| j\} } | | jkrd } nt d ||| fWYdd} ~ XnX| rt|||d yt j|Wnhtk r} zJ| j\} } yt j|Wntk rpYnXt d |||| fWYdd} ~ XnX|S) Nr)rr!r"r$r%rzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r1zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr!r"r$r%errnorr*rr r r#renamer argsZEXDEVr6r)rrr1r2rr!r"r$r%r7Zcopy_itrZnummsgrrr move_filesR       " "r;c Cs:t|d}z x|D]}|j|dqWWd|jXdS)Nw )r rr)filenamecontentsflinerrr write_files   rB@)rC)rrrNrr)rr) r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrrs   3 c =PKD] __pycache__/debug.cpython-36.pycnu[3 \@sddlZejjdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr'/usr/lib64/python3.6/distutils/debug.pysPKD];T>$__pycache__/log.cpython-36.opt-2.pycnu[3 \@shdZdZdZdZdZddlZGdddZeZejZej Z ej Z ej Z ej Z ej Z d d Zd d ZdS) Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr %/usr/lib64/python3.6/distutils/log.py__init__sz Log.__init__c Cs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }y|j d|Wn:t k r|j }|j|dj|}|j d|YnX|jdS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs|j|||dS)N)r")r rrr r r r log'szLog.logcGs|jt||dS)N)r"r)r rr r r r debug*sz Log.debugcGs|jt||dS)N)r"r)r rr r r r info-szLog.infocGs|jt||dS)N)r"r)r rr r r r warn0szLog.warncGs|jt||dS)N)r"r)r rr r r r error3sz Log.errorcGs|jt||dS)N)r"r)r rr r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r"r#r$r%r&r'r(r r r r rs rcCstj}|t_|S)N) _global_logr)roldr r r set_thresholdAsr.cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r.rrr)vr r r set_verbosityGs   r0)rrrrrrrr,r#r$r%r&r'r(r.r0r r r r s+PKD](ߟ !__pycache__/config.cpython-36.pycnu[3 \@s<dZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sheZdZdZdZdZdZdZdddefdgZdgZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduser)selfr(/usr/lib64/python3.6/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|j}tjtj|tjtjBdd}|jt||fWdQRXdS)zCreates a default .pypirc file.iwN)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|j}tjj|r|jd||jp.|j}|jp:|j}t }|j ||j }d|krR|j dd}dd|j dD}|gkrd|krdg}niSx|D]}d|i} |j |d | d <xHd |jfd |jfdfD].\} } |j|| r|j || | | <q| | | <qW|dkr.||jdfkr.|j| d <| S| d|ksH| d |kr| SqWnRd|krd}|j|d r||j |d }n|j}|j |d |j |d |||jdSiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|jdkr|jqS))strip).0serverrrr >sz.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrNz server-login)rrr$r!r%)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sX                zPyPIRCCommand._read_pypirccCs8ddl}|jdd}|j|djdd}|jj|S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rZresponser4Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_response)rrrrinitialize_optionsxsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r$r'r%r()rrrrfinalize_options~s  zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname____doc__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs"Ar)r=r Z configparserrZ distutils.cmdrrrrrrrs   PKD]DA88'__pycache__/msvccompiler.cpython-36.pycnu[3 \\@sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZy,ddlZdZeZejZejZejZejZWnhek ry4ddlZddlZdZeZejZejZejZejZWnek rejdYnXYnXerejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkrej+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnyt||}Wntk r"dSXg}d}x||j kr>|}d|}y"|j|jg| |g|gWqhtk r8}zt|WYdd}~XqhXqhn||jkrtj j|}tj j|}yl|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqhtk r}zt|WYdd}~XqhXqhntd||fd |}y&|j|jg| | ||g|Wqhtk rj}zt|WYdd}~XqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rXrkZ_setup_compilerextendrhrgr/rMr-abspath _c_extensions_cpp_extensionsrrspawnrbrrrtdirnamercrmrqrfr`)r)Zsourcesrvr'Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrwZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWsj              zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy|j|jg|Wqtk r}zt|WYdd}~XqXn t j d|dS)N)rvz/OUT:zskipping %s (up-to-date)) rXrk_fix_object_argslibrary_filename _need_linkr}rZrrr r) r)rZoutput_libnamervr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libcCs|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|jd|qW||||d|g}|dk rLtjjtjj|\}}tjj tjj|d|j|}|jd|| r^| |dd<| rn|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnXn tjd|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:z/OUT:rz/IMPLIB:zskipping %s (up-to-date))rXrkrZ _fix_lib_argswarnstrr rMr-rfrrZ EXECUTABLErjrirrmrqr~rryZmkpathr}rarrr r)r)Z target_descrrrvZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksV       zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:r)r)dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjdjdD]*}tjjtjj||}tjj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr\)r]rMr-rfrzisfiler^rD)r)Zexer1fnrrrr_5s   zMSVCCompiler.find_exex86cCstsgS|d}|jdkr,d|j|jf}nd|j|f}xHtD]@}t||}|r@|jdkrr|jj||jdS||jdSq@W|jdkrx,tD]$}t|d|jdk r|jd PqWgS) zGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. z dirsrRz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr\r:z%s\6.0NzIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrSrUr,r rVr6rDr)r)r-platformrrrrrrrdKs(        zMSVCCompiler.get_msvc_pathscCs6|dkr|jd}n |j|}|r2dj|tj|<dS)zSet environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. rZZlibraryr\N)rdrfrMr^)r)rr1rrrreos   zMSVCCompiler.set_path_env_var)rrr)rrl)NNNrNNN)NrN) NNNNNrNNNN)r)r)r7r8r9__doc__Z compiler_typeZ executablesr{r|rrrtrprsruZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr+rkrxrrrrrrrr_rdrerrrrrQsP  B  V  F  $rQg @z3Importing new compiler from distutils.msvc9compiler)rQ)r&).rrArMZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr,rr rr&rHrLrPrQrZOldMSVCCompilerZdistutils.msvc9compilerrrrrs^      - 9   PKD]GPX X %__pycache__/core.cpython-36.opt-2.pycnu[3 \"@sddlZddlZddlmZddlTddlmZddlmZddl m Z ddl m Z dZ d d Zdadad3Zd4Zd.d/Zd5d1d2ZdS)6N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstjj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr&/usr/lib64/python3.6/distutils/core.py gen_usage s r distclassr script_argsoptionsnameversionauthor author_email maintainermaintainer_emailurllicense descriptionlong_descriptionkeywords platforms classifiers download_urlrequiresprovides obsoletessources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_args swig_optsexport_symbolsdependslanguagec,Ks|jd}|r|d=nt}d|kr8tjjtjd|d<d|krRtjdd|d<y||a}WnLtk r}z0d|krt d|nt d|d|fWYdd}~XnXt d kr|S|j t rt d |jt d kr|Sy |j}Wn:tk r*}zt t|jd |WYdd}~XnXt rBt d |jt dkrP|S|ry |jWntk rt dYntk r}z0t rtjjd|fnt d|fWYdd}~XnBttfk r }z t rnt dt|WYdd}~XnX|S)Nrr rrrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`% " (   "rGruncCs|d krtd|f|atjj}d|i}yZzH|tjd<|dk rP|tjdd<t|d }t|j|WdQRXWd|t_daXWntk rYnXt dkrt d |t S) Nr4r5r6rHz"invalid value for 'stop_after': %r__file__rr3rbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?)r4r5r6rH) ValueErrorr<r8r9copyopenexecreadr;r: RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups(    rS)rr rrrrrrrrrrrrrrr r!r"r#r$)rr%r&r'r(r)r*r+r,r-r.r/r0r1r2)NrH)rr8Zdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr<r:Zsetup_keywordsZextension_keywordsrGrSrrrr s0     qPKD]5L ! !*__pycache__/text_file.cpython-36.opt-1.pycnu[3 \0@s&dZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@steZdZdZddddddddZdddZd d Zd d Zdd dZdddZ dddZ ddZ ddZ ddZ dS)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.rstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtdx>|jjD]0}||krBt||||q$t|||j|q$Wx&|jD]}||jkrbtd|qbW|dkr|j|n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsoptr+/usr/lib64/python3.6/distutils/text_file.py__init__Ns  zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.r)r rN)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|jdS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}|j|jdt|ttfrD|jdt|n|jd||jt|dj|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|j||dS)Nzerror: ) ValueErrorr')rr%r&rrrerrorszTextFile.errorcCs tjjd|j||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter')rr%r&rrrwarnsz TextFile.warncCs|jr|jd }|jd =|Sd}x|jj}|dkr:d}|jr|r|jd}|dkrXnX|dksp||ddkr|ddkrdpd}|d||}|jdkrq$n |jdd}|jo|r |dkr|jd |S|j r|j }||}t |j t r |j dd|j d<n|j |j dg|_ n:|dkr.dSt |j t rN|j dd|_ n |j d|_ |jrt|jrt|j}n"|jr|j }n|jr|j}|dks|dkr|jrq$|jr|ddkr|dd}q$|ddd kr|ddd}q$|SdS)aURead and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.rrN#r\r*z\#z2continuation line immediately precedes end-of-filez\ r2r2r2r2r2r3)rrreadlinerfindstripreplacer r.r lstripr rr!rrrstripr)rr&Z buildup_lineposZeolrrrr4sf            zTextFile.readlinecCs,g}x"|j}|dkr|S|j|qWdS)zWRead and return the list of all logical lines remaining in the current file.N)r4r)rlinesr&rrr readliness zTextFile.readlinescCs|jj|dS)zPush 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.N)rr)rr&rrr unreadlineszTextFile.unreadline)NN)N)N)N)__name__ __module__ __qualname____doc__r rrrr'r)r.r4r<r=rrrrr s"9 !  x r)rAr+rrrrrrsPKD]f  $__pycache__/file_util.cpython-36.pycnu[3 \@sZdZddlZddlmZddlmZddddZdd d ZdddZdddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)NhardsymicNCsd}d}zvyt|d}Wn4tk rN}ztd||jfWYdd}~XnXtjj|rytj|Wn4tk r}ztd||jfWYdd}~XnXyt|d}Wn4tk r}ztd||jfWYdd}~XnXxy|j|}Wn6tk r*}ztd||jfWYdd}~XnX|s4Py|j |Wqtk rx}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.6/distutils/file_util.py_copy_file_contentssF $ """*rcCsddlm}ddlm} m} m} m} tjj |s %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater,verbosedry_runrrrrrdiractionstrrr copy_fileCsT!               r6c(Csddlm}m}m}m}m}ddl} |dkr:tjd|||rB|S||sVt d|||rrt j j |||}n||rt d||f|||st d||fd } yt j ||WnPtk r } z2| j\} } | | jkrd } nt d ||| fWYdd} ~ XnX| rt|||d yt j|Wnhtk r} zJ| j\} } yt j|Wntk rpYnXt d |||| fWYdd} ~ XnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr!r"r$r%Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r1zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr!r"r$r%errnorr*rr r r#renamer argsZEXDEVr6r)rrr1r2rr!r"r$r%r7Zcopy_itrZnummsgrrr move_filesR       " "r;c Cs:t|d}z x|D]}|j|dqWWd|jXdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r rr)filenamecontentsflinerrr write_files   rB@)rC)rrrNrr)rr) __doc__r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrrs   3 c =PKD]dS<<__pycache__/util.cpython-36.pycnu[3 \5Q@sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZdaddZddZd(ddZdaaaddZddZd)ddZddZd*ddZd d!Zd+d"d#Z d,d$d%Z!Gd&d'd'Z"dS)-zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorcCstjdkrnd}tjj|}|d)kr(tjStjjd|}tj|t||j}|dkr\dS|dkrhdStjSd tjkrtjd Stjd kst td  rtjStj \}}}}}|jj d d }|j dd}|j d d}|dddkrd||fS|dddkrV|ddkrd}dt |dd|ddf}ddd} |d| tj 7}n|dd d!krtd||fS|ddd"krd#|||fS|dd$d%krd%}tjd&tj} | j|} | r| j}n>|dd$d'krddl} ddl} | j| jj|||\}}}d(|||fS)*aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. for IRIX the architecture isn't particularly important (IRIX only runs on SGI hardware), but for Linux the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u irix-5.3 irix64-6.2 Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win-ia64 (64bit Windows on Itanium) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntz bit ()amd64z win-amd64itaniumzwin-ia64_PYTHON_HOST_PLATFORMposixuname/ _-Nlinuxz%s-%ssunosr5solarisz%d.%s32bit64bit)ilz.%sirixaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionfindplatformlenlowerenvironhasattrrreplaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigget_platform_osx sysconfigget_config_vars)prefixijlookosnamehostreleaser'machinebitnessrel_remr6 distutilsrF&/usr/lib64/python3.6/distutils/util.py get_platformsX            rHcCs~tjdkr|S|s|S|ddkr.td||ddkrFtd||jd}xd|krf|jdqRW|srtjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. rrzpath '%s' cannot be absoluterzpath '%s' cannot end with '/'.r#)r$sep ValueErrorsplitremovecurdirpathjoin)pathnamepathsrFrFrG convert_pathos       rScCstjdkr._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)r]r1subKeyErrorrK)sr_r`varrFrFrG subst_varss  reerror: cCs |t|S)N)r^)excr:rFrFrGgrok_environment_errorsrhcCs(tjdtjatjdatjdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r1r2string whitespace _wordchars_re _squote_re _dquote_rerFrFrFrG _init_regexs rncCstdkrt|j}g}d}x`|rtj||}|j}|t|kr\|j|d|P||tjkr|j|d|||dj }d}n||dkr|d|||dd}|d}n||dkrt j||}n*||dkrt j||}nt d|||dkr"t d|||j\}}|d|||d|d||d}|jd }|t|kr"|j|Pq"W|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. NrrTr'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rkrnstripr4endr*appendrirjlstriprlrm RuntimeErrorrKspan)rcZwordsposrDrrZbegrFrFrG split_quoteds@         ,   rxcCsP|dkr6d|j|f}|dddkr6|ddd}tj||sL||dS) aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rrz,)rr ry)__name__rinfo)funcargsmsgverbosedry_runrFrFrGexecutes  rcCs2|j}|dkrdS|dkr dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. yyesttrueon1rnnoffalseoff0rzinvalid truth value %rN)rrrrrr)rrrrrr)r+rK)valrFrFrG strtobool0s rrcCsTddl}tjrtd|dkr*do(|dk}|s8yddlm} | d\} } Wn.tk rzddlm} d| d} } YnXtj d| |s| dk rt j | d } n t | d } | j d | j d jtt|d | j d |||||f| jtjg}|j|j|j| t||dtt j| fd| |dnddlm}x|D]}|dddkrhqL|dkr|dkrdn|}tjj||d}n tjj|}|}|r|dt||krtd||f|t|d}|rt j j||}t j j!|}|rL|st"||r.DistutilsRefactoringToolc_stj|f|dS)N)rerror)selfr~r}kwrFrFrG log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dS)N)rr{)rr~r}rFrFrG log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dS)N)rr)rr~r}rFrFrG log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)rz __module__ __qualname__rrrrFrFrFrGDistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrrFrFrGrun_2to3s  rcCsddlm}ddlm}ddlm}|} tj} tj|z | j Wdtj| X| j | j dd<|rx(|j D]} | j } | sqt| j| qtWg} xV| j D]L} tjj|| }|tjj||tjj|| |dd}|dr| j|qWtdd | D|||d | S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNr)updatecSsg|]}|jjdr|qS)z.py)r+endswith).0fnrFrFrG sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrr$getcwdchdirfindallZallfilesr splitlinesrqZprocess_template_linerOrPdirnamersr)srcdesttemplaterrrrrrZfilelistrNlineZcopiedfilenameZoutnameresrFrFrGcopydir_run_2to3s4        rc@s$eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jS)N)rrrr)rrrFrFrGr,szMixin2to3.run_2to3)rzrr__doc__rrrrrFrFrFrGrs r)rf)Nrr)rrNNrrN)NNN)NNNN)#rr$r1importlib.utilrrir&Zdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrrErrrHrSrWrYr]rerhrkrlrmrnrxrrrrrrrrFrFrFrGs@     ]  =    PKD]W6=$__pycache__/log.cpython-36.opt-1.pycnu[3 \@sldZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr %/usr/lib64/python3.6/distutils/log.py__init__sz Log.__init__c Cs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }y|j d|Wn:t k r|j }|j|dj|}|j d|YnX|jdS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs|j|||dS)N)r")r rrr r r r log'szLog.logcGs|jt||dS)N)r"r)r rr r r r debug*sz Log.debugcGs|jt||dS)N)r"r)r rr r r r info-szLog.infocGs|jt||dS)N)r"r)r rr r r r warn0szLog.warncGs|jt||dS)N)r"r)r rr r r r error3sz Log.errorcGs|jt||dS)N)r"r)r rr r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r"r#r$r%r&r'r(r r r r rs rcCstj}|t_|S)N) _global_logr)roldr r r set_thresholdAsr.cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r.rrr)vr r r set_verbosityGs   r0)__doc__rrrrrrrr,r#r$r%r&r'r(r.r0r r r r s +PKD]*&(__pycache__/version.cpython-36.opt-1.pycnu[3 \90@s>dZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@sJeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r|j|dS)N)parse)selfvstringr)/usr/lib64/python3.6/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs|j|}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__)N) r __module__ __qualname____doc__rr rrrrrrrrrrs rc@s<eZdZdZejdejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|std||jddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s'r)r) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr majorminorZpatchr'Zprerelease_numrrrrs  zStrictVersion.parsecCsb|jddkr*djtt|jdd}ndjtt|j}|jr^||jdt|jd}|S)Nrr.r)r&joinr$r r')rrrrr__str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|j rF|j rFdS|jrX|j rXdS|j rj|jrjdS|jr|jr|j|jkrdS|j|jkrdSdSndS)Nrrr-r-) isinstancer rr&r')rrrrrr s&      zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIrrr,r rrrrr]s # rc@sHeZdZdZejdejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r|j|dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd|jj|D}x:t|D].\}}yt|||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|qS)r*r).0xrrr 8sz&LooseVersion.parse..)r component_resplit enumerater%r!r&)rrZ componentsiobjrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr,CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrrr-)r.r r3r&)rrrrrr Ks    zLooseVersion._cmp)N) r rrrr/r0r1r7rrr,r r rrrrr3 s r3)rr/rrr3rrrrs >/PKD]B::__pycache__/cmd.cpython-36.pycnu[3 \J@srdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ Gdd d e ZdS) ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@s"eZdZdZgZddZddZddZdd Zd d Z dCddZ ddZ dDddZ ddZ dEddZdFddZddZdGddZdd Zd!d"Zd#d$Zd%d&ZdHd'd(ZdId*d+Zd,d-Zd.d/Zd0d1ZdJd2d3ZdKd5d6ZdLd7d8ZdMd9d:ZdNd;d<ZdOd=d>Z dPd?d@Z!dQdAdBZ"d S)RCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsbddlm}t||std|jtkr0td||_|jd|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r%/usr/lib64/python3.6/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|jd|_dS)N)rfinalize_options)rrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr d|j}|j||tjd|d}x\|jD]R\}}}|j|}|d dkrp|dd }t||}|j|d||ftjdqDWdS) Nr) longopt_xlatezcommand options for '%s':)levelz r=z%s = %sr&) Zdistutils.fancy_getoptr#get_command_nameannouncerINFO user_options translater)rheaderindentr#optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrruns z Command.runrcCstj||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N)r)rmsgr$rrrr(szCommand.announcecCs&ddlm}|r"t|tjjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr3printsysstdoutflush)rr2r3rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr.whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs|j|d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)r>)rr.r<rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||tjd|n6t|trTtdd|D}nd}|sltd||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdS)N)r r:).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r:r9resplitlistallr)rr.r=okrrrensure_string_lists   zCommand.ensure_string_listcCs8|j|||}|dk r4|| r4td|||fdS)Nzerror in '%s' option: )r>r)rr.Ztesterr;Z error_fmtr<r=rrr_ensure_tested_stringszCommand._ensure_tested_stringcCs|j|tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rJospathisfile)rr.rrrensure_filenames zCommand.ensure_filenamecCs|j|tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rJrLrMisdir)rr.rrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrRr __name__)rrrrr' s zCommand.get_command_namecGsJ|jj|}|jx0|D](\}}t||dkrt||t||qWdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr!rr9)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs|jj||}|j|S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrUr!)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|jj||S)N)rreinitialize_command)rrWZreinit_subcommandsrrrrY0szCommand.reinitialize_commandcCs|jj|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rrWrrrrZ4szCommand.run_commandcCs6g}x,|jD]"\}}|dks$||r |j|q W|S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCstjd|j|dS)Nzwarning: %s: %s )rwarnr')rr2rrrr_Ksz Command.warncCstj||||jddS)N)r)rexecuter)rfuncargsr2r$rrrr`NszCommand.executecCstj|||jddS)N)r)rmkpathr)rnamemoderrrrdQszCommand.mkpathc Cstj|||||j ||jdS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.))r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrgTs  zCommand.copy_filec Cstj||||||j |jdS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. )r)r copy_treerr)rrhrirjrkZpreserve_symlinksr$rrrrm]s zCommand.copy_treecCstj|||jdS)z$Move a file respecting dry-run flag.)r)r move_filer)rsrcdstr$rrrrnfszCommand.move_filecCs ddlm}||||jddS)z2Spawn an external command respecting dry-run flag.r)spawn)rN)Zdistutils.spawnrqr)rcmdZ search_pathr$rqrrrrqjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrsrtrrrruos zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|dj|f}|jsdtj||rv|j ||||n t j |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r:rFtupler joinrrZ newer_groupr`rdebug)rZinfilesrirarbZexec_msgZskip_msgr$rrr make_fileus  zCommand.make_file)Nr")r)N)N)N)r)r)Nr)rc)rrNr)rrrr)r)rr)NNNN)NNr)#rT __module__ __qualname____doc__r[rrr!rr r0r1r(r8r>r@rIrJrOrQr'rVrXrYrZr^r_r`rdrgrmrnrqrurzrrrrr sF0              r c@s6eZdZdZdgZddZddZd d Zd d Zd S) install_miscz{Common base class for installing some files in a subdirectory. Currently used by install_data and install_scripts. install-dir=d!directory to install the files tocCsd|_g|_dS)N) install_diroutfiles)rrrrrszinstall_misc.initialize_optionscCs|jd|dfdS)NZinstallr)rV)rdirnamerrr_install_dir_fromszinstall_misc._install_dir_fromcCsRg|_|sdS|j|jx2|D]*}|j||j|jjtjj|j|q WdS)N)rrdrrgr\rLrMrx)rZfilelistfrrr _copy_filess  zinstall_misc._copy_filescCs|jS)N)r)rrrr get_outputsszinstall_misc.get_outputsN)rrr) rTr{r|r}r*rrrrrrrrr~s  r~)r}r5rLrDZdistutils.errorsrZ distutilsrrrrrrr r~rrrrs  PKD]ECC.__pycache__/msvc9compiler.cpython-36.opt-1.pycnu[3 \w@sTdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"d&kZ#e#rd Z$d Z%d Z&n d Z$dZ%dZ&ddddZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,ddZ-d'd d!Z.e*Z/e/d"kr@ed#e/Gd$d%d%e Z0dS)(a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32 z1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86amd64Zia64)r z win-amd64zwin-ia64c@sPeZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCs:x,tD]$}|j||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedr//usr/lib64/python3.6/distutils/msvc9compiler.py get_valueAs     z Reg.get_valuecCsnyt||}Wntk r"dSXg}d}xz$(FrameworkVersion)) r@r;NET_BASErr WINSDK_BASErrrr rrr9)r=r>prhrrrrrr<s.    zMacroExpander.load_macroscCs(x"|jjD]\}}|j||}q W|S)N)r9itemsreplace)r=r1r%vrrrsubszMacroExpander.subN)r2r3r4r?r@r<rIrrrrr8{sr8cCsd}tjj|}|d krdS|t|}tj|djdd\}}t|dd d}|dkrf|d7}t|ddd }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.rN r g$@r)sysr>findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions  rWcCs4g}x*|D]"}tjj|}||kr |j|q W|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osrnormpathr!)pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r[cCs@|jtj}g}x|D]}||kr|j|qWtjj|}|S)z8Remove duplicate values of an environment variable. )rSrXpathsepr!join)ZvariableZoldListZnewListr$Z newVariablerrrremoveDuplicatess   r^c Cst|}ytjd|d}Wn"tk r>tjdd}YnX| sTtjj| rd|}tj j |d}|rtjj|rtjj |tj tj d}tjj |}tjj|stjd|dSntjd||stjd dStjj |d }tjj|r|Stjd dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCrAz%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r:rrrr debugrXrisdirenvirongetr]pardirabspathisfile)r>r;rAZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rgc Cs8t|}td}i}|dkr$tdtjd||tjd||ftjtjd }z|j\}}|j d krvt|j d |j d }xr|j d D]d}t j |}d |krq|j}|j d d\} } | j} | |kr| jtjr| dd} t| || <qWWd|jj|jjXt|t|kr4ttt|j|S)zDLaunch vcvarsall.bat and read the settings from its environment includeliblibpathrNzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr. =r)rhrirjrrN)rgsetrr r_ subprocessPopenPIPEZ communicatewaitr-rSrr)stripr(endswithrXr\r^rkcloserlrR ValueErrorstrlistkeys) r>ZarchrfZ interestingresultpopenrkrllinerr+rrrquery_vcvarsalls<         r~g @z(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd.ddZd/ddZd0ddZd1ddZd2ddZd3ddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd4d*d+Zd,d-ZdS)5 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8tj||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr?VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r=verboseZdry_runZforcerrrr?JszMSVCCompiler.__init__NcCs|dkrt}d$}||kr(td|fdtjkrfdtjkrf|jdrfd|_d|_d |_d |_d |_ n|tksx|dkrt |}nt td t |}t t |}|d j tj|_|dtjd<|dtjd<t|jdkrtd|j|jd|_|jd|_|jd |_|jd |_|jd |_ y,x&tjd j dD]}|jj|q||j kr>|}d|}y"|j|jg| |g|gWqhtk r8}zt|WYdd}~XqhXqhn||jkrtj j|}tj j|}yl|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqhtk r}zt|WYdd}~XqhXqhntd||fd |}y&|j|jg| | ||g|Wqhtk rj}zt|WYdd}~XqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compiler!extendrrrrXrrd _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr]r)r=Zsourcesrr9Z include_dirsr_ extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy|j|jg|Wqtk r}zt|WYdd}~XqXn t j d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrirrr r_) r=rZoutput_libnamerr_ target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libcCsX|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|jd|qW||||d|g}tjj|d} |dk rPtjjtjj|\}}tjj | |j|}|jd||j|| || rp| |dd<| r|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnX|j||}|dk rT|\}}d||f}y|jdd d ||gWn,tk rD}zt|WYdd}~XnXn tjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrxr rXrr]rr EXECUTABLErrr!rrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r_)r= target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr_rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink8sl           zMSVCCompiler.linkcCs,tjj|tjj|d}|jd|dS)Nz .manifestz/MANIFESTFILE:)rXrr]rr!)r=rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|jdr|jddd}PqWdS|tjkr>d}nd}|j|}|dkrXdS||fS)Nz/MANIFESTFILE::rr ) startswithrSrr_remove_visual_c_ref)r=rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |j}Wd|jXtjdtj}tj|d|}d}tj|d|}tjdtj}tj||dkrrdSt|d}z|j||S|jXWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrvrerDOTALLrIsearchwriteOSError)r=Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r=dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjdjdD]*}tjjtjj||}tjj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr)rrXrr]rdrerarS)r=ZexerDfnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r) r2r3r4r5Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr?rrrrrrrrrrrrrrrrrr,sR  X  V  R + rl)r)1r5rXrprPrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyr Z EnumValuer'errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r:rCrBrrr8rWr[r^rgr~rrrrrrsN  >. # )  PKD]4Scr@normcaseZsrc_extensionsr rArCrB obj_extension)r/Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess      z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrH)__name__ __module__ __qualname____doc__r+rLZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr$r9rDrNrrrrrYs ; Krc@seZdZdZdZdddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rc Csxtj|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rHz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %s)rr r!r"r#) rr$r*r) is_cygwingccr r-r,r.r)r/r0r1r2r3Z entry_pointrrrr$s&   zMingw32CCompiler.__init__N)rrr)rOrPrQrRr+r$rrrrrSsrSokznot okZ uncertaincCsddlm}dtjkrtdfS|j}y@t|}z(d|jkrJtd|fStd|fSWd|j XWn.t k r}zt d ||j ffSd}~XnXdS) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'Nzcouldn't read '%s': %s) distutilsrVrrr&get_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rVfnconfig_hexcrrrr%Hs    r%s(\d+\.\d+(\.\d+)*)c Csl|jd}t|dkrdSt|dtdj}z |j}Wd|jXtj|}|dkrZdSt |j dj S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNT)shellstdoutr) splitrrrrdrZr\ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rocCsdddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)ro).0rjrrr sz get_versions..)tuple)Zcommandsrrrr(s r(cCstddg}|jjdS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rmrrrrTs rT)'rRr=rr; subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rWr Zdistutils.versionrZdistutils.spawnrrrrSr&r[r^r%compilerfror(rTrrrrs0)     ;1+ PKD] 3 *__pycache__/sysconfig.cpython-36.opt-2.pycnu[3 4bVjN @sddlZddlZddlZddlZddlmZejjejZ ejjej Z ejjej Z ejjejZdejkrejjejdZnejjejjejZejdkrejjd+rejjejjeZdd Zeed dZeoejdkoejjd,r ejjejjeZd d ZeZd Zyes*ejZWnek rBYnXddZ d-ddZ!d.ddZ"ddZ#ddZ$ddZ%d/ddZ&ej'dZ(ej'dZ)ej'dZ*d0dd Z+d!d"Z,da-d#d$Z.d%d&Z/d'd(Z0d)d*Z1dS)1N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEnt\pcbuild\win32\pcbuild\amd64cCs.x(dD] }tjjtjj|d|rdSqWdS)N Setup.dist Setup.localModulesTF)rr)ospathisfilejoin)dfnr+/usr/lib64/python3.6/distutils/sysconfig.py_is_python_source_dir)s r_homecCstr ttSttS)N) _sys_homer project_baserrrr _python_build2srcCsdtjddS)Nz%d.%d)sys version_inforrrrget_python_versionDsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjjt dd}tjj |Sdt t }tjj|d|Stjdkrtjj|dSt dtjdS)NposixsrcdirZIncludepythonincluderzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr name python_buildrrr r get_config_varnormpathr build_flagsr) plat_specificprefixZincdirZ python_dirrrrget_python_incLs     r)cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tjj||dt}|r`|Stjj|dSnrAZccZcxxoptZcflagsZccsharedZldsharedZ shlib_suffixarZar_flagsZnewccZcppr?Zcc_cmdrrrrBs\                         rBcCsDtr,tjdkr"tjjtptd}q6tp(t}n tdd}tjj|dS)NrPCr)r'z pyconfig-64.h)r#r r"r r rrr))inc_dirrrrget_config_h_filenames    rLcCs\trtjjtptdStddd}djtt }t t j drL|dt j j 7}tjj||dS)NMakefilerr)r'r.z config-{}{} _multiarchz-%s)r#r r r rrr/formatrr&hasattrrimplementationrN)Zlib_dirZ config_filerrrget_makefile_filenames  rRc Cs|dkr i}tjd}tjd}xx|j}|s0P|j|}|rz|jdd\}}y t|}Wntk rnYnX|||<q"|j|}|r"d||jd<q"W|S)Nz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rrr)recompilereadlinematchgroupint ValueError)fpg define_rxundef_rxlinemnvrrrparse_config_hs(      rbz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c Csddlm}||ddddd}|dkr*i}i}i}x|j}|dkrFPtj|}|r4|jdd\}} | j} | jdd} d | kr| ||<q4y t| } Wn$t k r| jdd ||<Yq4X| ||<q4Wd} x|rxt |D]} || } t j | pt j | }|rx|jd}d }||kr2t||}n||krBd}nx|tjkrZtj|}n`|| kr| jdr| dd| krd}n$d||krd}nt|d|}n d||<}|r~| |jd}| d|j||} d |kr| || <nzy t| } Wn"t k r*| j|| <Yn X| || <|| =| jdr~| dd| kr~| dd} | |kr~| || <q|| =qWqW|jx.|jD]"\}} t| tr| j||<qW|j||S)Nr)TextFilersurrogateescape)Zstrip_commentsZ skip_blanksZ join_lineserrorsrz$$r$r5r;r=TFPY_)r5r;r=)Zdistutils.text_filercrU _variable_rxrVrWstripreplacerXrYlist _findvar1_rxsearch _findvar2_rxstrr rErFendstartcloseitems isinstanceupdate)rr[rcrZdonenotdoner^r_r`ratmpvrenamed_variablesr"valuefounditemafterkrrrparse_makefiles                       rcCsZxTtj|ptj|}|rP|j\}}|d||j|jd||d}qPqW|S)Nrr)rmrnrospangetrW)svarsr_Zbegrqrrrexpand_makefile_varss *rc CsVtjjddjtjtjttjddd}t |t t dgd}|j }ia t j|dS)N_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rNr)abir@ multiarchbuild_time_varsr)r rErrOrabiflagsr@getattrrQ __import__globalslocalsrrCrv)r"_temprrrr _init_posixsrcCs~i}tddd|d<tddd|d<tdd|d<tjd|d<d |d <tjd d |d <tjjtjj t j |d<|a dS)Nrr)r'r.LIBDEST BINLIBDEST)r' INCLUDEPY EXT_SUFFIXz.exeEXE.rVERSIONBINDIR) r/r)_impextension_suffixesrrkr r dirnameabspathr executablerC)r[rrr_init_ntsrcGs^tdkr(tjdtj}|r(|niattd<ttd<tjd}|dk rV|td<tjdt}tjdkrtrtj j t }tj j ||}ntj j t }tj j tj j|td<totjdkr t}tj jtd o|tjkr tj j |td}tj j|td<tjdkr(d dl}|jt|rVg}x|D]}|jtj|q8W|StSdS) NZ_init_r( exec_prefixrSOrrr0r)rCrrr r"r-r,rr#r rrRr rr%isabsgetcwdrr@rAcustomize_config_varsappend)argsfuncrrbaserAvalsr"rrrrDs@       rDcCs*|dkrddl}|jdtdtj|S)Nrrz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningrDr)r"rrrrr$sr$)rr)rr)rN)rrN)N)N)2rr rSrrerr r%r(r-rr, base_prefixr!base_exec_prefixr rErrrrr"lowerendswithrrrrr#r&rAttributeErrorrr)r/rBrLrRrbrTrirmrorrrCrrrDr$rrrr sX      # +I      jJPKD]OS  *__pycache__/text_file.cpython-36.opt-2.pycnu[3 \0@s"ddlZddlZGdddZdS)Nc@speZdZddddddddZdddZdd Zd d Zdd d ZdddZdddZ ddZ ddZ ddZ dS)TextFilerstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtdx>|jjD]0}||krBt||||q$t|||j|q$Wx&|jD]}||jkrbtd|qbW|dkr|j|n||_||_d|_g|_ dS)Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsoptr+/usr/lib64/python3.6/distutils/text_file.py__init__Ns  zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)Nr)r r)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|jdS)N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}|j|jdt|ttfrD|jdt|n|jd||jt|dj|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|j||dS)Nzerror: ) ValueErrorr')rr%r&rrrerrorszTextFile.errorcCs tjjd|j||ddS)Nz warning:  )sysstderrwriter')rr%r&rrrwarnsz TextFile.warncCs|jr|jd }|jd =|Sd}x|jj}|dkr:d}|jr|r|jd}|d krXnX|dksp||ddkr|ddkrdpd}|d||}|jdkrq$n |jdd}|jo|r |dkr|jd|S|j r|j }||}t |j t r |j dd|j d<n|j |j dg|_ n:|dkr.dSt |j t rN|j dd|_ n |j d|_ |jrt|jrt|j}n"|jr|j }n|jr|j}|dks|dkr|jrq$|jr|ddkr|dd}q$|ddd kr|ddd}q$|SdS)Nrr#r\r*z\#z2continuation line immediately precedes end-of-filez\ r2r2r2r2r2r3)rrreadlinerfindstripreplacer r.r lstripr rr!rrrstripr)rr&Z buildup_lineposZeolrrrr4sf            zTextFile.readlinecCs,g}x"|j}|dkr|S|j|qWdS)N)r4r)rlinesr&rrr readliness zTextFile.readlinescCs|jj|dS)N)rr)rr&rrr unreadlineszTextFile.unreadline)NN)N)N)N) __name__ __module__ __qualname__r rrrr'r)r.r4r<r=rrrrr s ; !  x r)r+rrrrrrsPKD]nQQ'__pycache__/bcppcompiler.cpython-36.pycnu[3 \W:@sxdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zdd dZdddZdddZd ddZd!ddZd"ddZd#ddZdS)$ BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer./usr/lib64/python3.6/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc Cs|j||||||\}} }} } |p$g} | jd|rB| j|jn | j|jxD| D]:} y| | \}}Wntk rwVYnXtjj|}tjj| } |j tjj | |dkrqV|dkry|j dd| |gWqVt k r}zt |WYdd}~XqVXqV||jkrd}n||jkr,d}nd}d| }y,|j |jg| | ||g||gWqVt k r}zt |WYdd}~XqVXqVW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF        (zBCPPCompiler.compilec Cs|j||\}}|j||d}|j||r~|dg|}|r:y|j|jg|Wqtk rz}zt|WYdd}~XqXn tjd|dS)N)r*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs  zBCPPCompiler.create_static_libc Cs|j||\}}|j|||\}}}|r8tjdt||dk rNtjj||}|j||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x&|pgD]}|jd||fqW|jt||fd |ttjj|}|g}g}xF|D]>}tjjtjj|\}}|d kr|j|n |j|qfWx$|D]}|jd tjj|qW|jd |j||jd |g|jdx<|D]4}|j||| }|dkr(|j|n |j|qW|jd|jd|jd |g|jd |j|| r| |dd<| r|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnXn tjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|                    zBCPPCompiler.linkc Csv|r"|d}|d|d||f}n |d|f}xB|D]6}x0|D](}tjj||j|}tjj|r>|Sq>Wq4WdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s      zBCPPCompiler.find_library_filercCs|dkr d}g}x|D]}tjjtjj|\}}||jddgkrTtd||f|rdtjj|}|dkr|jtjj|||q|dkr|jtjj||dq|jtjj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"    zBCPPCompiler.object_filenamesc Cs|jd||\}}}t||}dg|} |dk r>| jd||rN|| dd<|r\| j|| j||js~|dks~t||r|r|jtjj |y|j | Wn2t k r} zt | t | WYdd} ~ XnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr)NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsJ   B  |  r)r^r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PKD]S۬#__pycache__/dir_util.cpython-36.pycnu[3 \b@spdZddlZddlZddlmZmZddlmZiadddZ dd d Z dd d Z d dZ dddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logc Cspt|tstd|ftjj|}g}tjj|s<|dkr@|Stjtjj |rV|Stjj |\}}|g}x6|r|rtjj| rtjj |\}}|j d|qnWx|D]}tjj ||}tjj |} tj| rq|dkrt jd||s`ytj||WnVtk rT} z8| jtjko*tjj|sDtd|| jdfWYdd} ~ XnX|j|dt| <qW|S) aCreate a directory and any missing ancestor directories. If the directory already exists (or if 'name' is the empty string, which means the current directory, which of course exists), then do nothing. Raise DistutilsFileError if unable to create some directory along the way (eg. some sub-path exists, but is a file rather than a directory). If 'verbose' is true, print a one-line summary of each mkdir to stdout. Return the list of directories actually created. z(mkpath: 'name' must be a string (got %r)rrz creating %szcould not create '%s': %sN) isinstancestrrospathnormpathisdir _path_createdgetabspathsplitinsertjoinrinfomkdirOSErrorerrnoZEEXISTrargsappend) namemodeverbosedry_runZ created_dirsheadtailZtailsdZabs_headexcr#*/usr/lib64/python3.6/distutils/dir_util.pymkpaths>       &  r%cCsVt}x(|D] }|jtjj|tjj|q Wx t|D]}t||||dq:WdS)aCreate all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. )rrN)setaddr r rdirnamesortedr%)Zbase_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs   r-cCsfddlm}| r,tjj| r,td|ytj|} Wn>tk rx} z"|rVg} ntd|| jfWYdd} ~ XnX|st ||dg} x| D]} tjj || } tjj || }| j drq|otjj | rtj | }|dkrtjd |||stj||| j|qtjj| r>| jt| |||||||d q|| ||||||d | j|qW| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sN)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr.nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCslxVtj|D]H}tjj||}tjj|rDtjj| rDt||q |jtj|fq W|jtj |fdS)zHelper for remove_tree().N) r r/r rrr2_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=cCs|dkrtjd||rdSg}t||xp|D]h}y2|d|dtjj|d}|tkrdt|=Wq0tk r}ztjd||WYdd}~Xq0Xq0WdS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees    rDcCs6tjj|\}}|ddtjkr2||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)__doc__r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$s  ?  D PKD]͢%__pycache__/dist.cpython-36.opt-1.pycnu[3 \ @sdZddlZddlZddlZddlmZy ddlZWnek rLdZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZejd ZGd d d ZGd d d ZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$c@speZdZdZd~ddddgZdZdddddddddddddddddddddgZd>d?eDZddiZdd@dAZ dBdCZ ddEdFZ dGdHZ ddIdJZ dKdLZdMdNZdOdPZdQdRZddgfdSdTZdUdVZdWdXZdYdZZd[d\Zd]d^Zd_d`ZddadbZddcddZddfdgZejfdhdiZdjdkZdldmZ dndoZ!dpdqZ"drdsZ#dtduZ$dvdwZ%dxdyZ&dzd{Z'd|d}Z(dS) DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. verbosevrun verbosely (default)quietq!run quietly (turns verbosity off)dry-runndon't actually do anythinghelphshow detailed help message no-user-cfgN-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package help-commandslist all available commandsnameprint package nameversionVprint package versionfullnameprint -authorprint the author's name author-email print the author's email address maintainerprint the maintainer's namemaintainer-email$print the maintainer's email addresscontact7print the maintainer's name if known, else the author's contact-email@print the maintainer's email address if known, else the author'surlprint the URL for this packagelicense print the license of the packagelicencealias for --license descriptionprint the package descriptionlong-description"print the long package description platformsprint the list of platforms classifiersprint the list of classifierskeywordsprint the list of keywordsprovides+print the list of packages/modules providedrequires+print the list of packages/modules required obsoletes0print the list of packages/modules made obsoletecCsg|]}t|dqS)r)r).0xrH&/usr/lib64/python3.6/distutils/dist.py sszDistribution.cCsd|_d|_d|_x|jD]}t||dqWt|_x,|jjD] }d|}t||t|j|q@Wi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r8|jd}|dk rH|d=xD|jD]8\}}|j |}x"|jD]\} } d| f|| <q(Wq Wd|kr|d|d <|d=d } t!dk r~t!j"| nt#j$j%| d x|jD]\} } t&|jd | rt|jd | | njt&|j| rt|j| | nLt&|| rt|| | n2d t'| } t!dk r"t!j"| nt#j$j%| d qWd|_(|j dk r|x0|j D]&} | j)dsdP| dkrRd|_(PqRW|j*dS)a0Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. rrget_Noptionsz setup scriptr4r2z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+r dry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfZattrsattrbasenameZ method_namerMcommandZ cmd_optionsopt_dictoptvalmsgkeyargrHrHrI__init__zs                   zDistribution.__init__cCs&|jj|}|dkr"i}|j|<|S)zGet the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. N)r[re)rrrudictrHrHrIrgs zDistribution.get_option_dictrLc Csddlm}|dkr"t|jj}|dk r@|j|||d}|sV|j|ddSxt|D]l}|jj|}|dkr|j|d|q\|j|d|||}x$|jdD]}|j|d|qWq\WdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:rN)pprintr~sortedr[keysannounceresplit) rrheadercommandsindentr~Zcmd_namervoutlinerHrHrIdump_option_dicts&s&    zDistribution.dump_option_dictscCsg}ttjjtjdj}tjj|d}tjj|rB|j |tj dkrRd}nd}|j rtjjtjj d|}tjj|r|j |d}tjj|r|j |t r|jdd j||S) aFind as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerjmodules__file__joinisfileappendrro expanduserr r)rrfilesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerHrHrIfind_config_filesBs&       zDistribution.find_config_filescCsddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|j}trb|jd|}x|D]}tr|jd||j |xf|j D]Z}|j |}|j |}x@|D]8} | dkr| |kr|j || } | jdd} || f|| <qWqW|jqnWd|jkrx|jdjD]\} \} } |jj | } yF| rRt|| t|  n(| dkrnt|| t| n t|| | Wn,tk r} zt| WYdd} ~ XnXqWdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %s__name__rO_globalr rP)r rP)Z configparserrrjr base_prefix frozensetrr rreadZsectionsrMrgrereplacer|r[rf negative_optrRr ValueErrorDistutilsOptionError)rr filenamesrZignore_optionsparserfilenameZsectionrMrvrwrxsrcaliasryrHrHrIparse_config_filesrsJ               zDistribution.parse_config_filescCs|j}g|_t||j}|j|j|jddi|j|j|d}|j }t j |j |j |rhdSx |r|j||}|dkrjdSqjW|jr|j|t|jdk|jddS|jstddS) aParse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). r4r2)argsobjectNr)display_optionsrzno commands suppliedT)_get_toplevel_optionsrrrset_negative_aliasesrZ set_aliasesgetoptrZZget_option_orderr Z set_verbosityr handle_display_options_parse_command_optsr _show_helplenDistutilsArgError)rrZtoplevel_optionsrr option_orderrHrHrIparse_command_lines,       zDistribution.parse_command_linecCs |jdgS)zReturn the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. command-packages=N0list of packages that provide distutils commands)rNr)global_options)rrrHrHrIrsz"Distribution._get_toplevel_optionscCsddlm}|d}tj|s*td||jj|y|j|}Wn*tk rn}zt |WYdd}~XnXt ||st d|t |dot |jtsd}t |||j}t |dr|j}|j|jt |d rt |jtrt|j}ng}|j|j|j||j||j|d d\}} t | d rV| jrV|j|d|gd dSt |d rt |jtrd} xP|jD]F\} } } }t | |j| r|d } t|r|nt d || fq|W| rdS|j|}x&t| jD]\}}d|f||<qW|S)aParse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. r)Commandzinvalid command name '%s'Nz&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrr)rrzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrrget_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrm isinstancerlistrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablergvarsrf)rrrrrruZ cmd_classryrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncrvrvaluerHrHrIrsb                   z Distribution._parse_command_optscCsTxNdD]F}t|j|}|dkr qt|trdd|jdD}t|j||qWdS)zSet final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. r>r:NcSsg|] }|jqSrH)strip)rFZelmrHrHrIrJ_sz1Distribution.finalize_options..,)r>r:)rVrTrstrrrR)rrrsrrHrHrIrqUs   zDistribution.finalize_optionsc Cs ddlm}ddlm}|rR|r*|j}n|j}|j||j|jdt d|rt|j|j |jd t dx|j D]z}t |t rt||r|} n |j|} t| drt | jtr|j| jt| jn |j| j|jd | jt dq|Wt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r) gen_usage)rz Global options:rLz*Information display options (just display z!information, ignore any commands)rzOptions for '%s' command:NzKInformation display options (just display information, ignore any commands))distutils.corerrrrrrZ print_help common_usageprintrrrtyperrrmrrrrrrY) rrrrrrrrrMruklassrHrHrIrbs6           zDistribution._show_helpc Csddlm}|jr4|jtdt||jdSd}i}x|jD]}d||d<qDWxt|D]l\}}|r^|j|r^t|}t |j d|}|dkrtdj |n |dkrtd j |nt|d}q^W|S)zIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. r)rrLrrKr>r:rr<r@rBrDrN)r>r:)r<r@rBrD) rrZ help_commandsprint_commandsrrYrrerrVrTr) rrrrZany_display_optionsZis_display_optionoptionrwrxrrHrHrIrs,  z#Distribution.handle_display_optionscCsnt|dx\|D]T}|jj|}|s0|j|}y |j}Wntk rRd}YnXtd|||fqWdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :z(no description available)z %-*s %sN)rrWrerr6AttributeError)rrrr max_lengthcmdrr6rHrHrIprint_command_lists      zDistribution.print_command_listcCsddl}|jj}i}x|D] }d||<qWg}x&|jjD]}|j|s:|j|q:Wd}x$||D]}t||krdt|}qdW|j|d||rt |j|d|dS)anPrint out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrzStandard commandszExtra commands) distutils.commandru__all__rWrrerrrr)rrr std_commandsis_stdrextra_commandsrrHrHrIrs*     zDistribution.print_commandsc Csddl}|jj}i}x|D] }d||<qWg}x&|jjD]}|j|s:|j|q:Wg}x\||D]P}|jj|}|s|j|}y |j}Wnt k rd}YnX|j||fqdW|S)a>Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrz(no description available)) rrurrWrrerrr6r) rrrrrrrrvrr6rHrHrIget_command_lists(        zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|jdD}d|krD|jdd||_|S)z9Return a list of packages from which commands are loaded.NrLcSsg|]}|dkr|jqS)rL)r)rFZpkgrHrHrIrJsz5Distribution.get_command_packages..rzdistutils.commandr)rXrrrinsert)rrZpkgsrHrHrIget_command_packagess  z!Distribution.get_command_packagescCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk r^wYnXyt||}Wn&tk rt d|||fYnX||j|<|SWt d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) rWrer __import__rjr ImportErrorrVrr)rrrurZpkgnameZ module_nameZ klass_namemodulerHrHrIrs(   zDistribution.get_command_classcCsn|jj|}| rj|rjtr(|jd||j|}||}|j|<d|j|<|jj|}|rj|j|||S)aReturn the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. z.z1error in %s: command '%s' has no such option '%s')get_command_namergr rrfZboolean_optionsrrrrrRrrmrr) rrrcZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringryrHrHrIr]s>           z!Distribution._set_command_optionsrcCsddlm}t||s&|}|j|}n|j}|js8|S|jd|_d|j|<|j||r|x|j D]}|j ||qhW|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. r)r) rrrrrZ finalizedZinitialize_optionsrdrZget_sub_commandsreinitialize_command)rrruZreinit_subcommandsrrsubrHrHrIrs     z!Distribution.reinitialize_commandcCstj||dS)N)r )rrrylevelrHrHrIrszDistribution.announcecCsx|jD]}|j|qWdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)r run_command)rrrrHrHrI run_commandss zDistribution.run_commandscCsD|jj|rdStjd||j|}|j|jd|j|<dS)aDo whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). Nz running %sr)rdrer inforZensure_finalizedZrun)rrrurrHrHrIrs   zDistribution.run_commandcCst|jp|jpgdkS)Nr)rr\r])rrrHrHrIhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkS)Nr)r`r)rrrHrHrIhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkS)Nr)r^r)rrrHrHrIhas_c_librariesszDistribution.has_c_librariescCs|jp|jS)N)rr)rrrHrHrI has_modulesszDistribution.has_modulescCs|jot|jdkS)Nr)r_r)rrrHrHrI has_headersszDistribution.has_headerscCs|jot|jdkS)Nr)rar)rrrHrHrI has_scriptsszDistribution.has_scriptscCs|jot|jdkS)Nr)rbr)rrrHrHrIhas_data_filesszDistribution.has_data_filescCs|jo|j o|j S)N)rrr)rrrHrHrIis_pures zDistribution.is_pure)r r rr)rrr)rrr)rrr)rNr)rNr)rNr)rr r!)r"Nr#)r$Nr%)r&Nr')r(Nr))r*Nr+)r,Nr-)r.Nr/)r0Nr1)r2Nr3)r4Nr5)r6Nr7)r8Nr9)r:Nr;)r<Nr=)r>Nr?)r@NrA)rBNrC)rDNrE)N)NNrL)N)r)N)r))r __module__ __qualname____doc__rrrrQrr|rgrrrrrrrqrrrrrrrrrrr INFOrrrrrrrrrrrrHrHrHrIr s    " 0 :C [  1(!" &  , ) r c@seZdZdZdOZdPddZddZddZddZdd Z d!d"Z d#d$Z d%d&Z d'd(Z d)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZeZd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZ dMdNZ!dS)QrSz]Dummy class to hold the distribution meta-data: name, version, author, and so forth. rrr$ author_emailr(maintainer_emailr0r2r6long_descriptionr>r:r"r, contact_emailr< download_urlr@rBrDNcCs|dk r|jt|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenrrr$rr(rr0r2r6rr>r:r<r r@rBrD)rrrrHrHrIr|s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ nd |_ |d|_ |d|_dkr|dj d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|S)NUNKNOWNrH)rr)ryrHrI _read_fieldsz7DistributionMetadata.read_pkg_file.._read_fieldcsj|d}|gkrdS|S)N)Zget_all)rvalues)ryrHrI _read_list#s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionrrZsummaryr$Nz author-emailz home-pager2z download-urlr6r>rplatformZ classifierz1.1rBr@rD)rrrr6r$r(rrr0r2r rrr>r:r<rBr@rD)rrfilerrZmetadata_versionrH)ryrIr s:                 z"DistributionMetadata.read_pkg_filec Cs2ttjj|dddd}|j|WdQRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwzUTF-8)encodingN)r rrrwrite_pkg_file)rrZbase_dirZpkg_inforHrHrIwrite_pkg_infoMs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|jd||jd|j|jd|j|jd|j|jd|j |jd|j |jd |j |jd |j |jr|jd |jt |j}|jd |d j|j}|r|jd||j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS)z9Write the PKG-INFO format data to a file object. z1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r@rBrDr<r rlget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)rrrrZ long_descr>rHrHrIrTs0  z#DistributionMetadata.write_pkg_filecCs$x|D]}|jd||fqWdS)Nz%s: %s )rl)rrrrrrrHrHrIr vs z DistributionMetadata._write_listcCs |jpdS)Nr )r)rrrHrHrIr|szDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r)rrrHrHrIrsz DistributionMetadata.get_versioncCsd|j|jfS)Nz%s-%s)rr)rrrHrHrI get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdS)Nr )r$)rrrHrHrI get_authorszDistributionMetadata.get_authorcCs |jpdS)Nr )r)rrrHrHrIget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdS)Nr )r()rrrHrHrIget_maintainersz#DistributionMetadata.get_maintainercCs |jpdS)Nr )r)rrrHrHrIget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr )r(r$)rrrHrHrIrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr )rr)rrrHrHrIrsz&DistributionMetadata.get_contact_emailcCs |jpdS)Nr )r0)rrrHrHrIrszDistributionMetadata.get_urlcCs |jpdS)Nr )r2)rrrHrHrIrsz DistributionMetadata.get_licensecCs |jpdS)Nr )r6)rrrHrHrIrsz$DistributionMetadata.get_descriptioncCs |jpdS)Nr )r)rrrHrHrIrsz)DistributionMetadata.get_long_descriptioncCs |jpgS)N)r>)rrrHrHrIrsz!DistributionMetadata.get_keywordscCs |jp dgS)Nr )r:)rrrHrHrIr!sz"DistributionMetadata.get_platformscCs |jpgS)N)r<)rrrHrHrIr"sz$DistributionMetadata.get_classifierscCs |jpdS)Nr )r )rrrHrHrIget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgS)N)rB)rrrHrHrIr#sz!DistributionMetadata.get_requirescCs,ddl}x|D]}|jj|qW||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterB)rrrrr rHrHrI set_requiress z!DistributionMetadata.set_requirescCs |jpgS)N)r@)rrrHrHrIr$sz!DistributionMetadata.get_providescCs:dd|D}x |D]}ddl}|jj|qW||_dS)NcSsg|] }|jqSrH)r)rFr rHrHrIrJsz5DistributionMetadata.set_provides..r)r,r-Zsplit_provisionr@)rrrr rrHrHrI set_providess  z!DistributionMetadata.set_providescCs |jpgS)N)rD)rrrHrHrIr%sz"DistributionMetadata.get_obsoletescCs,ddl}x|D]}|jj|qW||_dS)Nr)r,r-r.rD)rrrrr rHrHrI set_obsoletess z"DistributionMetadata.set_obsoletes)rrr$rr(rr0r2r6rr>r:r"r,r r<r r@rBrD)N)"rrrrrUr|r rrr rrr&r'r(r)r*rrrrZ get_licencerrrr!r"r+r#r/r$r0r%r1rHrHrHrIrSsH 4"rScCs(g}x|D]}|j|ddq W|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r)rMZ new_optionsZ help_tuplerHrHrIrs r)rrjrreZemailrrhrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrr Zdistutils.debugr compilerr rSrrHrHrHrIs2      ]ZPKD]$D$D(__pycache__/msvc9compiler.cpython-36.pycnu[3 \w@sTdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"d&kZ#e#rd Z$d Z%d Z&n d Z$dZ%dZ&ddddZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,ddZ-d'd d!Z.e*Z/e/d"kr@ed#e/Gd$d%d%e Z0dS)(a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32 z1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86amd64Zia64)r z win-amd64zwin-ia64c@sPeZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCs:x,tD]$}|j||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedr//usr/lib64/python3.6/distutils/msvc9compiler.py get_valueAs     z Reg.get_valuecCsnyt||}Wntk r"dSXg}d}xz$(FrameworkVersion)) r@r;NET_BASErr WINSDK_BASErrrr rrr9)r=r>prhrrrrrr<s.    zMacroExpander.load_macroscCs(x"|jjD]\}}|j||}q W|S)N)r9itemsreplace)r=r1r%vrrrsubszMacroExpander.subN)r2r3r4r?r@r<rIrrrrr8{sr8cCsd}tjj|}|d krdS|t|}tj|djdd\}}t|dd d}|dkrf|d7}t|ddd }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.rN r g$@r)sysr>findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions  rWcCs4g}x*|D]"}tjj|}||kr |j|q W|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osrnormpathr!)pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r[cCs@|jtj}g}x|D]}||kr|j|qWtjj|}|S)z8Remove duplicate values of an environment variable. )rSrXpathsepr!join)ZvariableZoldListZnewListr$Z newVariablerrrremoveDuplicatess   r^c Cst|}ytjd|d}Wn"tk r>tjdd}YnX| sTtjj| rd|}tj j |d}|rtjj|rtjj |tj tj d}tjj |}tjj|stjd|dSntjd||stjd dStjj |d }tjj|r|Stjd dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCrAz%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r:rrrr debugrXrisdirenvirongetr]pardirabspathisfile)r>r;rAZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rgc Cs8t|}td}i}|dkr$tdtjd||tjd||ftjtjd }z|j\}}|j d krvt|j d |j d }xr|j d D]d}t j |}d |krq|j}|j d d\} } | j} | |kr| jtjr| dd} t| || <qWWd|jj|jjXt|t|kr4ttt|j|S)zDLaunch vcvarsall.bat and read the settings from its environment includeliblibpathrNzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr. =r)rhrirjrrN)rgsetrr r_ subprocessPopenPIPEZ communicatewaitr-rSrr)stripr(endswithrXr\r^rkcloserlrR ValueErrorstrlistkeys) r>ZarchrfZ interestingresultpopenrkrllinerr+rrrquery_vcvarsalls<         r~g @z(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd.ddZd/ddZd0ddZd1ddZd2ddZd3ddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd4d*d+Zd,d-ZdS)5 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8tj||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr?VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r=verboseZdry_runZforcerrrr?JszMSVCCompiler.__init__NcCs0|j std|dkrt}d%}||kr8td|fdtjkrvdtjkrv|jdrvd|_d |_d |_ d |_ d |_ n|tks|dkrt |}nt td t |}t t|}|djtj|_|dtjd<|dtjd<t|jdkrtd|j|jd|_|jd |_|jd |_ |jd |_ |jd |_ y,x&tjdjdD]}|jj|qNWWntk r|YnXt|j|_dj|jtjd<d|_|jdkrdddddg|_ddddddg|_n&ddddddg|_dddddddg|_ddd g|_|jd!krddd"d#g|_dg|_d$|_dS)&Nzdon't init multiple timesr win-amd64win-ia64z--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exe_rrirhrzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.;rz/nologoz/Oxz/MDz/W3z/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOz/INCREMENTAL:noz/DEBUGT)r rr) rAssertionErrorr rrXrafind_execclinkerrircmcPLAT_TO_VCVARSr~rrSr\rrRZ_MSVCCompiler__productr!rr[r]Zpreprocess_optionsrcompile_optionscompile_options_debugldflags_sharedrldflags_shared_debugZldflags_static)r=rZok_platsZ plat_specZvc_envrDrrr initializeUsf                   zMSVCCompiler.initializecCs|dkr d}g}x|D]}tjj|\}}tjj|d}|tjj|d}||jkrdtd||rttjj|}||jkr|j tjj |||j q||j kr|j tjj |||j q|j tjj |||j qW|S)NrrzDon't know how to compile %s)rXrsplitext splitdriveisabssrc_extensionsrbasename_rc_extensionsr!r] res_extension_mc_extensions obj_extension)r=Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenamess(         zMSVCCompiler.object_filenamesc Cst|js|j|j||||||} | \}} }} } |p6g} | jd|rT| j|jn | j|jx | D]}y| |\}}Wntk rwhYnX|rtj j |}||j krd|}nT||j krd|}n>||j kr>|}d|}y"|j|jg| |g|gWqhtk r8}zt|WYdd}~XqhXqhn||jkrtj j|}tj j|}yl|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqhtk r}zt|WYdd}~XqhXqhntd||fd |}y&|j|jg| | ||g|Wqhtk rj}zt|WYdd}~XqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compiler!extendrrrrXrrd _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr]r)r=Zsourcesrr9Z include_dirsr_ extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy|j|jg|Wqtk r}zt|WYdd}~XqXn t j d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrirrr r_) r=rZoutput_libnamerr_ target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libcCsX|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|jd|qW||||d|g}tjj|d} |dk rPtjjtjj|\}}tjj | |j|}|jd||j|| || rp| |dd<| r|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnX|j||}|dk rT|\}}d||f}y|jdd d ||gWn,tk rD}zt|WYdd}~XnXn tjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrxr rXrr]rr EXECUTABLErrr!rrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r_)r= target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr_rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink8sl           zMSVCCompiler.linkcCs,tjj|tjj|d}|jd|dS)Nz .manifestz/MANIFESTFILE:)rXrr]rr!)r=rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|jdr|jddd}PqWdS|tjkr>d}nd}|j|}|dkrXdS||fS)Nz/MANIFESTFILE::rr ) startswithrSrr_remove_visual_c_ref)r=rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |j}Wd|jXtjdtj}tj|d|}d}tj|d|}tjdtj}tj||dkrrdSt|d}z|j||S|jXWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrvrerDOTALLrIsearchwriteOSError)r=Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r=dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjdjdD]*}tjjtjj||}tjj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr)rrXrr]rdrerarS)r=ZexerDfnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r) r2r3r4r5Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr?rrrrrrrrrrrrrrrrrr,sR  X  V  R + rl)r)1r5rXrprPrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyr Z EnumValuer'errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r:rCrBrrr8rWr[r^rgr~rrrrrrsN  >. # )  PKD]0Ah(__pycache__/version.cpython-36.opt-2.pycnu[3 \90@s:ddlZGdddZGdddeZGdddeZdS)Nc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)VersionNcCs|r|j|dS)N)parse)selfvstringr)/usr/lib64/python3.6/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs|j|}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs|j|}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__)N) r __module__ __qualname__rr rrrrrrrrrrs rc@s8eZdZejdejejBZddZddZ ddZ dS) StrictVersionz)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|std||jddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s'r)r) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrrmajorminorZpatchr&Zprerelease_numrrrrs  zStrictVersion.parsecCsb|jddkr*djtt|jdd}ndjtt|j}|jr^||jdt|jd}|S)Nrr.r)r%joinr#r r&)rrrrr__str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|j rF|j rFdS|jrX|j rXdS|j rj|jrjdS|jr|jr|j|jkrdS|j|jkrdSdSndS)Nrrr,r,) isinstancer rr%r&)rrrrrr s&      zStrictVersion._cmpN) r rrrecompileVERBOSEASCIIrrr+r rrrrr]s % rc@sDeZdZejdejZd ddZddZddZ d d Z d d Z dS) LooseVersionz(\d+ | [a-z]+ | \.)NcCs|r|j|dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd|jj|D}x:t|D].\}}yt|||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|qS)r)r).0xrrr 8sz&LooseVersion.parse..)r component_resplit enumerater$r r%)rrZ componentsiobjrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr+CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrrr,)r-r r2r%)rrrrrr Ks    zLooseVersion._cmp)N) r rrr.r/r0r6rrr+r r rrrrr2 s ! r2)r.rrr2rrrrs>/PKD]f  *__pycache__/file_util.cpython-36.opt-1.pycnu[3 \@sZdZddlZddlmZddlmZddddZdd d ZdddZdddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)NhardsymicNCsd}d}zvyt|d}Wn4tk rN}ztd||jfWYdd}~XnXtjj|rytj|Wn4tk r}ztd||jfWYdd}~XnXyt|d}Wn4tk r}ztd||jfWYdd}~XnXxy|j|}Wn6tk r*}ztd||jfWYdd}~XnX|s4Py|j |Wqtk rx}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.6/distutils/file_util.py_copy_file_contentssF $ """*rcCsddlm}ddlm} m} m} m} tjj |s %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater,verbosedry_runrrrrrdiractionstrrr copy_fileCsT!               r6c(Csddlm}m}m}m}m}ddl} |dkr:tjd|||rB|S||sVt d|||rrt j j |||}n||rt d||f|||st d||fd } yt j ||WnPtk r } z2| j\} } | | jkrd } nt d ||| fWYdd} ~ XnX| rt|||d yt j|Wnhtk r} zJ| j\} } yt j|Wntk rpYnXt d |||| fWYdd} ~ XnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr!r"r$r%Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r1zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr!r"r$r%errnorr*rr r r#renamer argsZEXDEVr6r)rrr1r2rr!r"r$r%r7Zcopy_itrZnummsgrrr move_filesR       " "r;c Cs:t|d}z x|D]}|j|dqWWd|jXdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r rr)filenamecontentsflinerrr write_files   rB@)rC)rrrNrr)rr) __doc__r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrrs   3 c =PKD]iN==.__pycache__/msvc9compiler.cpython-36.opt-2.pycnu[3 \w@sPddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlZejZejZejZejZejejejejfZej dkoej!d%kZ"e"rd Z#d Z$d Z%n d Z#d Z$dZ%ddddZ&GdddZ'GdddZ(ddZ)ddZ*ddZ+ddZ,d&dd Z-e)Z.e.d!krr?r;rHrrrrr7{sr7cCsd}tjj|}|d krdS|t|}tj|djdd\}}t|dd d}|dkrf|d7}t|ddd}|dkrd }|dkr||SdS) NzMSC v.r r g$@r)sysr=findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions  rVcCs4g}x*|D]"}tjj|}||kr |j|q W|S)N)osrnormpathr!)pathsZ reduced_pathsrCZnprrrnormalize_and_reduce_pathss   rZcCs@|jtj}g}x|D]}||kr|j|qWtjj|}|S)N)rRrWpathsepr!join)ZvariableZoldListZnewListr$Z newVariablerrrremoveDuplicatess   r]c Cst|}ytjd|d}Wn"tk r>tjdd}YnX| sTtjj| rd|}tj j |d}|rtjj|rtjj |tj tj d}tjj |}tjj|stjd|dSntjd||stjddStjj |d }tjj|r|Stjd dS) Nz %s\Setup\VCr@z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r9rrrr debugrWrisdirenvirongetr\pardirabspathisfile)r=r:r@ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rfc Cs8t|}td}i}|dkr$tdtjd||tjd||ftjtjd}z|j\}}|j d krvt|j d |j d }xr|j d D]d}t j |}d |krq|j}|j d d \} } | j} | |kr| jtjr| dd} t| || <qWWd|jj|jjXt|t|kr4ttt|j|S)NincludeliblibpathrzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr. =r)rgrhrirrM)rfsetrr r^ subprocessPopenPIPEZ communicatewaitr-rRrr)stripr(endswithrWr[r]rjcloserkrQ ValueErrorstrlistkeys) r=ZarchreZ interestingresultpopenrjrklinerr+rrrquery_vcvarsalls<         r}g @z(VC %0.1f is not supported by this modulec @seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd-ddZd.ddZd/ddZd0ddZd1ddZd2ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd3d)d*Zd+d,ZdS)4 MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8tj||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr>VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r<verboseZdry_runZforcerrrr>JszMSVCCompiler.__init__NcCs|dkrt}d$}||kr(td|fdtjkrfdtjkrf|jdrfd|_d|_d |_d |_d |_ n|tksx|dkrt |}nt td t |}t t |}|d j tj|_|dtjd<|dtjd<t|jdkrtd|j|jd|_|jd|_|jd |_|jd |_|jd |_ y,x&tjd j dD]}|jj|q||j kr>|}d|}y"|j|jg| |g|gWqhtk r8}zt|WYdd}~XqhXqhn||jkrtj j|}tj j|}yl|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqhtk r}zt|WYdd}~XqhXqhntd||fd |}y&|j|jg| | ||g|Wqhtk rj}zt|WYdd}~XqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compiler!extendrrrrWrrc _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr\r)r<Zsourcesrr8Z include_dirsr^ extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js|j|j||\}}|j||d}|j||r|d|g}|rJy|j|jg|Wqtk r}zt|WYdd}~XqXn t j d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrhrrr r^) r<rZoutput_libnamerr^ target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libcCsX|js|j|j||\}}|j|||}|\}}}|rL|jdt|t||||}|dk rptjj ||}|j ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|jd|qW||||d|g}tjj|d} |dk rPtjjtjj|\}}tjj | |j|}|jd||j|| || rp| |dd<| r|j| |jtjj|y|j|jg|Wn,tk r}zt|WYdd}~XnX|j||}|dk rT|\}}d||f}y|jdd d ||gWn,tk rD}zt|WYdd}~XnXn tjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrwr rWrr\rr EXECUTABLErrr!rrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r^)r< target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr^rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink8sl           zMSVCCompiler.linkcCs,tjj|tjj|d}|jd|dS)Nz .manifestz/MANIFESTFILE:)rWrr\rr!)r<rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|jdr|jddd}PqWdS|tjkr>d}nd}|j|}|dkrXdS||fS)Nz/MANIFESTFILE::rr ) startswithrRrr_remove_visual_c_ref)r<rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |j}Wd|jXtjdtj}tj|d|}d}tj|d|}tjdtj}tj||dkrrdSt|d}z|j||S|jXWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrurerDOTALLrHsearchwriteOSError)r<Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r<dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjdjdD]*}tjjtjj||}tjj|rH|SqHW|S)NZPathr)rrWrr\rcrdr`rR)r<ZexerCfnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r)r2r3r4Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr>rrrrrrrrrrrrrrrrrr~,sP  X  V  R + r~l)r)0rWrorOrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyr Z EnumValuer'errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r9rBrArrr7rVrZr]rfr}rr~rrrrsL  >. # )  PKD]c  -__pycache__/fancy_getopt.cpython-36.opt-2.pycnu[3 \xE@sddlZddlZddlZddlZddlTdZejdeZejdeefZe j ddZ Gdd d Z d d Z d d ejDZddZddZGdddZedkrdZx2dD]*ZedeedjeeeeqWdS)N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdddZddZddZddd Zd d Zd d ZddZ ddZ ddZ ddZ d ddZ ddZd!ddZd"ddZdS)# FancyGetoptNcCsN||_i|_|jr|ji|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr./usr/lib64/python3.6/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs,|jjx|jD]}||j|d<qWdS)Nr)rclearr)roptionrrrrQs  zFancyGetopt._build_indexcCs||_|jdS)N)rr)rrrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|jj|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs     zFancyGetopt.add_optioncCs ||jkS)N)r)rrrrr has_optioncszFancyGetopt.has_optioncCs |jtS)N) translate longopt_xlate)rrrrr get_attr_namehszFancyGetopt.get_attr_namecCsRxL|jD]@\}}||jkr.td|||f||jkr td|||fq WdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs|j|d||_dS)Nr )r#r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs|j|d||_dS)Nznegative alias)r#r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|jji|_x|jD]}t|dkrH|\}}}d}n(t|dkrb|\}}}}ntd|ft|t  st|dkrt d||dkpt|t ot|dkst d|||j|<|jj ||dd kr|r|d }|dd}d|j |<nF|j j|}|dk rB|j |r8t d ||f||jd<d|j |<|jj|}|dk r|j ||j |krt d ||ftj|st d ||j||j|<|r&|jj |||j|d<q&WdS)Nrzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2z:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyr,r,)r r r rrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchrr)rrlongshorthelpr-Zalias_torrr_grok_option_tables^                   zFancyGetopt._grok_option_tablec Csr|dkrtjdd}|dkr*t}d}nd}|jdj|j}ytj|||j\}}Wn,tjk r}zt |WYdd}~XnXx|D]\}}t |dkr|ddkr|j |d}n |dd}|j j |} | r| }|j|s |jj |} | r| }d}nd}|j|} |r<|jj | dk rsB        zFancyGetopt.getoptcCs|jdkrtdn|jSdS)Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsxd}xV|jD]L}|d}|d}t|}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d|} |r|g} ndg} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| jd ||| dfn| jd ||fn:d ||f}| r<| jd ||| dfn| jd |x$| ddD]}| j| |qXWqW| S)Nrr)r*r(Nr9zOption summary:r&z --%-*s %sz --%-*s z%s (-%s)z --%-*sr,r,r,)rr. wrap_textr)rheaderZmax_optrr5r6lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr7textZ opt_namesrrr generate_helpsF        zFancyGetopt.generate_helpcCs4|dkrtj}x |j|D]}|j|dqWdS)N )r:stdoutrPwrite)rrLfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname__rrrrrrr#r$r%r8r>rHrPrVrrrrrs (  M = OrcCst|}|j||j||S)N)rr%r>)optionsZ negative_optrCrBparserrrr fancy_getoptos r\cCsi|]}dt|qS)r9)ord).0Z_wscharrrr usr_cCs"|dkr gSt||kr|gS|j}|jt}tjd|}dd|D}g}x|rg}d}xZ|rt|d}|||kr|j|d|d=||}q`|r|dddkr|d =Pq`W|r |dkr|j|dd||d|d|d<|dddkr |d=|jdj|qPW|S) Nz( +|-+)cSsg|] }|r|qSrr)r^Zchrrr szwrap_text..rr)r9r,r,)r. expandtabsrWS_TRANSresplitrr=)rOwidthZchunksrNZcur_lineZcur_lenrMrrrrKws:      rKcCs |jtS)N)rr)r"rrrtranslate_longoptsrgc@seZdZgfddZdS)r<cCsx|D]}t||dqWdS)N)rA)rrZr"rrrrs zOptionDummy.__init__N)rWrXrYrrrrrr<sr<__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].) (z width: %drQ)rirjrkrl)r:stringrdr>Zdistutils.errorsZ longopt_patcompiler3Z neg_alias_rer1 maketransrrr\Z whitespacercrKrgr<rWrOwprintr=rrrr s( T6   PKD]B \ \msvccompiler.pynu["""distutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. """ # Written by Perry Stoll # hacked by Robin Becker and Thomas Heller to do a better job of # finding DevStudio (through the registry) import sys, os from distutils.errors import \ DistutilsExecError, DistutilsPlatformError, \ CompileError, LibError, LinkError from distutils.ccompiler import \ CCompiler, gen_preprocess_options, gen_lib_options from distutils import log _can_read_reg = False try: import winreg _can_read_reg = True hkey_mod = winreg RegOpenKeyEx = winreg.OpenKeyEx RegEnumKey = winreg.EnumKey RegEnumValue = winreg.EnumValue RegError = winreg.error except ImportError: try: import win32api import win32con _can_read_reg = True hkey_mod = win32con RegOpenKeyEx = win32api.RegOpenKeyEx RegEnumKey = win32api.RegEnumKey RegEnumValue = win32api.RegEnumValue RegError = win32api.error except ImportError: log.info("Warning: Can't read registry to find the " "necessary compiler setting\n" "Make sure that Python modules winreg, " "win32api or win32con are installed.") pass if _can_read_reg: HKEYS = (hkey_mod.HKEY_USERS, hkey_mod.HKEY_CURRENT_USER, hkey_mod.HKEY_LOCAL_MACHINE, hkey_mod.HKEY_CLASSES_ROOT) def read_keys(base, key): """Return list of registry keys.""" try: handle = RegOpenKeyEx(base, key) except RegError: return None L = [] i = 0 while True: try: k = RegEnumKey(handle, i) except RegError: break L.append(k) i += 1 return L def read_values(base, key): """Return dict of registry keys and values. All names are converted to lowercase. """ try: handle = RegOpenKeyEx(base, key) except RegError: return None d = {} i = 0 while True: try: name, value, type = RegEnumValue(handle, i) except RegError: break name = name.lower() d[convert_mbcs(name)] = convert_mbcs(value) i += 1 return d def convert_mbcs(s): dec = getattr(s, "decode", None) if dec is not None: try: s = dec("mbcs") except UnicodeError: pass return s class MacroExpander: def __init__(self, version): self.macros = {} self.load_macros(version) def set_macro(self, macro, path, key): for base in HKEYS: d = read_values(base, path) if d: self.macros["$(%s)" % macro] = d[key] break def load_macros(self, version): vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version self.set_macro("VCInstallDir", vsbase + r"\Setup\VC", "productdir") self.set_macro("VSInstallDir", vsbase + r"\Setup\VS", "productdir") net = r"Software\Microsoft\.NETFramework" self.set_macro("FrameworkDir", net, "installroot") try: if version > 7.0: self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1") else: self.set_macro("FrameworkSDKDir", net, "sdkinstallroot") except KeyError as exc: # raise DistutilsPlatformError( """Python was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.""") p = r"Software\Microsoft\NET Framework Setup\Product" for base in HKEYS: try: h = RegOpenKeyEx(base, p) except RegError: continue key = RegEnumKey(h, 0) d = read_values(base, r"%s\%s" % (p, key)) self.macros["$(FrameworkVersion)"] = d["version"] def sub(self, s): for k, v in self.macros.items(): s = s.replace(k, v) return s def get_build_version(): """Return the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. """ prefix = "MSC v." i = sys.version.find(prefix) if i == -1: return 6 i = i + len(prefix) s, rest = sys.version[i:].split(" ", 1) majorVersion = int(s[:-2]) - 6 if majorVersion >= 13: # v13 was skipped and should be v14 majorVersion += 1 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: minorVersion = 0 if majorVersion >= 6: return majorVersion + minorVersion # else we don't know what version of the compiler this is return None def get_build_architecture(): """Return the processor architecture. Possible results are "Intel" or "AMD64". """ prefix = " bit (" i = sys.version.find(prefix) if i == -1: return "Intel" j = sys.version.find(")", i) return sys.version[i+len(prefix):j] def normalize_and_reduce_paths(paths): """Return a list of normalized paths with duplicates removed. The current order of paths is maintained. """ # Paths are normalized so things like: /a and /a/ aren't both preserved. reduced_paths = [] for p in paths: np = os.path.normpath(p) # XXX(nnorwitz): O(n**2), if reduced_paths gets long perhaps use a set. if np not in reduced_paths: reduced_paths.append(np) return reduced_paths class MSVCCompiler(CCompiler) : """Concrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.""" compiler_type = 'msvc' # Just set this so CCompiler's constructor doesn't barf. We currently # don't use the 'set_executables()' bureaucracy provided by CCompiler, # as it really isn't necessary for this sort of single-compiler class. # Would be nice to have a consistent interface with UnixCCompiler, # though, so it's worth thinking about. executables = {} # Private class data (need to distinguish C from C++ source for compiler) _c_extensions = ['.c'] _cpp_extensions = ['.cc', '.cpp', '.cxx'] _rc_extensions = ['.rc'] _mc_extensions = ['.mc'] # Needed for the filename generation methods provided by the # base class, CCompiler. src_extensions = (_c_extensions + _cpp_extensions + _rc_extensions + _mc_extensions) res_extension = '.res' obj_extension = '.obj' static_lib_extension = '.lib' shared_lib_extension = '.dll' static_lib_format = shared_lib_format = '%s%s' exe_extension = '.exe' def __init__(self, verbose=0, dry_run=0, force=0): CCompiler.__init__ (self, verbose, dry_run, force) self.__version = get_build_version() self.__arch = get_build_architecture() if self.__arch == "Intel": # x86 if self.__version >= 7: self.__root = r"Software\Microsoft\VisualStudio" self.__macros = MacroExpander(self.__version) else: self.__root = r"Software\Microsoft\Devstudio" self.__product = "Visual Studio version %s" % self.__version else: # Win64. Assume this was built with the platform SDK self.__product = "Microsoft SDK compiler %s" % (self.__version + 6) self.initialized = False def initialize(self): self.__paths = [] if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"): # Assume that the SDK set up everything alright; don't try to be # smarter self.cc = "cl.exe" self.linker = "link.exe" self.lib = "lib.exe" self.rc = "rc.exe" self.mc = "mc.exe" else: self.__paths = self.get_msvc_paths("path") if len(self.__paths) == 0: raise DistutilsPlatformError("Python was built with %s, " "and extensions need to be built with the same " "version of the compiler, but it isn't installed." % self.__product) self.cc = self.find_exe("cl.exe") self.linker = self.find_exe("link.exe") self.lib = self.find_exe("lib.exe") self.rc = self.find_exe("rc.exe") # resource compiler self.mc = self.find_exe("mc.exe") # message compiler self.set_path_env_var('lib') self.set_path_env_var('include') # extend the MSVC path with the current path try: for p in os.environ['path'].split(';'): self.__paths.append(p) except KeyError: pass self.__paths = normalize_and_reduce_paths(self.__paths) os.environ['path'] = ";".join(self.__paths) self.preprocess_options = None if self.__arch == "Intel": self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX' , '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX', '/Z7', '/D_DEBUG'] else: # Win64 self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GS-' , '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GS-', '/Z7', '/D_DEBUG'] self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO'] if self.__version >= 7: self.ldflags_shared_debug = [ '/DLL', '/nologo', '/INCREMENTAL:no', '/DEBUG' ] else: self.ldflags_shared_debug = [ '/DLL', '/nologo', '/INCREMENTAL:no', '/pdb:None', '/DEBUG' ] self.ldflags_static = [ '/nologo'] self.initialized = True # -- Worker methods ------------------------------------------------ def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): # Copied from ccompiler.py, extended to return .res as 'object'-file # for .rc input file if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: (base, ext) = os.path.splitext (src_name) base = os.path.splitdrive(base)[1] # Chop off the drive base = base[os.path.isabs(base):] # If abs, chop off leading / if ext not in self.src_extensions: # Better to raise an exception instead of silently continuing # and later complain about sources and targets having # different lengths raise CompileError ("Don't know how to compile %s" % src_name) if strip_dir: base = os.path.basename (base) if ext in self._rc_extensions: obj_names.append (os.path.join (output_dir, base + self.res_extension)) elif ext in self._mc_extensions: obj_names.append (os.path.join (output_dir, base + self.res_extension)) else: obj_names.append (os.path.join (output_dir, base + self.obj_extension)) return obj_names def compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): if not self.initialized: self.initialize() compile_info = self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs) macros, objects, extra_postargs, pp_opts, build = compile_info compile_opts = extra_preargs or [] compile_opts.append ('/c') if debug: compile_opts.extend(self.compile_options_debug) else: compile_opts.extend(self.compile_options) for obj in objects: try: src, ext = build[obj] except KeyError: continue if debug: # pass the full pathname to MSVC in debug mode, # this allows the debugger to find the source file # without asking the user to browse for it src = os.path.abspath(src) if ext in self._c_extensions: input_opt = "/Tc" + src elif ext in self._cpp_extensions: input_opt = "/Tp" + src elif ext in self._rc_extensions: # compile .RC to .RES file input_opt = src output_opt = "/fo" + obj try: self.spawn([self.rc] + pp_opts + [output_opt] + [input_opt]) except DistutilsExecError as msg: raise CompileError(msg) continue elif ext in self._mc_extensions: # Compile .MC to .RC file to .RES file. # * '-h dir' specifies the directory for the # generated include file # * '-r dir' specifies the target directory of the # generated RC file and the binary message resource # it includes # # For now (since there are no options to change this), # we use the source-directory for the include file and # the build directory for the RC file and message # resources. This works at least for win32all. h_dir = os.path.dirname(src) rc_dir = os.path.dirname(obj) try: # first compile .MC to .RC and .H file self.spawn([self.mc] + ['-h', h_dir, '-r', rc_dir] + [src]) base, _ = os.path.splitext (os.path.basename (src)) rc_file = os.path.join (rc_dir, base + '.rc') # then compile .RC to .RES file self.spawn([self.rc] + ["/fo" + obj] + [rc_file]) except DistutilsExecError as msg: raise CompileError(msg) continue else: # how to handle this file? raise CompileError("Don't know how to compile %s to %s" % (src, obj)) output_opt = "/Fo" + obj try: self.spawn([self.cc] + compile_opts + pp_opts + [input_opt, output_opt] + extra_postargs) except DistutilsExecError as msg: raise CompileError(msg) return objects def create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None): if not self.initialized: self.initialize() (objects, output_dir) = self._fix_object_args(objects, output_dir) output_filename = self.library_filename(output_libname, output_dir=output_dir) if self._need_link(objects, output_filename): lib_args = objects + ['/OUT:' + output_filename] if debug: pass # XXX what goes here? try: self.spawn([self.lib] + lib_args) except DistutilsExecError as msg: raise LibError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): if not self.initialized: self.initialize() (objects, output_dir) = self._fix_object_args(objects, output_dir) fixed_args = self._fix_lib_args(libraries, library_dirs, runtime_library_dirs) (libraries, library_dirs, runtime_library_dirs) = fixed_args if runtime_library_dirs: self.warn ("I don't know what to do with 'runtime_library_dirs': " + str (runtime_library_dirs)) lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, libraries) if output_dir is not None: output_filename = os.path.join(output_dir, output_filename) if self._need_link(objects, output_filename): if target_desc == CCompiler.EXECUTABLE: if debug: ldflags = self.ldflags_shared_debug[1:] else: ldflags = self.ldflags_shared[1:] else: if debug: ldflags = self.ldflags_shared_debug else: ldflags = self.ldflags_shared export_opts = [] for sym in (export_symbols or []): export_opts.append("/EXPORT:" + sym) ld_args = (ldflags + lib_opts + export_opts + objects + ['/OUT:' + output_filename]) # The MSVC linker generates .lib and .exp files, which cannot be # suppressed by any linker switches. The .lib files may even be # needed! Make sure they are generated in the temporary build # directory. Since they have different names for debug and release # builds, they can go into the same directory. if export_symbols is not None: (dll_name, dll_ext) = os.path.splitext( os.path.basename(output_filename)) implib_file = os.path.join( os.path.dirname(objects[0]), self.library_filename(dll_name)) ld_args.append ('/IMPLIB:' + implib_file) if extra_preargs: ld_args[:0] = extra_preargs if extra_postargs: ld_args.extend(extra_postargs) self.mkpath(os.path.dirname(output_filename)) try: self.spawn([self.linker] + ld_args) except DistutilsExecError as msg: raise LinkError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function, in # ccompiler.py. def library_dir_option(self, dir): return "/LIBPATH:" + dir def runtime_library_dir_option(self, dir): raise DistutilsPlatformError( "don't know how to set runtime library search path for MSVC++") def library_option(self, lib): return self.library_filename(lib) def find_library_file(self, dirs, lib, debug=0): # Prefer a debugging library if found (and requested), but deal # with it if we don't have one. if debug: try_names = [lib + "_d", lib] else: try_names = [lib] for dir in dirs: for name in try_names: libfile = os.path.join(dir, self.library_filename (name)) if os.path.exists(libfile): return libfile else: # Oops, didn't find it in *any* of 'dirs' return None # Helper methods for using the MSVC registry settings def find_exe(self, exe): """Return path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. """ for p in self.__paths: fn = os.path.join(os.path.abspath(p), exe) if os.path.isfile(fn): return fn # didn't find it; try existing path for p in os.environ['Path'].split(';'): fn = os.path.join(os.path.abspath(p),exe) if os.path.isfile(fn): return fn return exe def get_msvc_paths(self, path, platform='x86'): """Get a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. """ if not _can_read_reg: return [] path = path + " dirs" if self.__version >= 7: key = (r"%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories" % (self.__root, self.__version)) else: key = (r"%s\6.0\Build System\Components\Platforms" r"\Win32 (%s)\Directories" % (self.__root, platform)) for base in HKEYS: d = read_values(base, key) if d: if self.__version >= 7: return self.__macros.sub(d[path]).split(";") else: return d[path].split(";") # MSVC 6 seems to create the registry entries we need only when # the GUI is run. if self.__version == 6: for base in HKEYS: if read_values(base, r"%s\6.0" % self.__root) is not None: self.warn("It seems you have Visual Studio 6 installed, " "but the expected registry settings are not present.\n" "You must at least run the Visual Studio GUI once " "so that these entries are created.") break return [] def set_path_env_var(self, name): """Set environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. """ if name == "lib": p = self.get_msvc_paths("library") else: p = self.get_msvc_paths(name) if p: os.environ[name] = ';'.join(p) if get_build_version() >= 8.0: log.debug("Importing new compiler from distutils.msvc9compiler") OldMSVCCompiler = MSVCCompiler from distutils.msvc9compiler import MSVCCompiler # get_build_architecture not really relevant now we support cross-compile from distutils.msvc9compiler import MacroExpander PKD]1xExEfancy_getopt.pynu["""distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object """ import sys, string, re import getopt from distutils.errors import * # Much like command_re in distutils.core, this is close to but not quite # the same as a Python NAME -- except, in the spirit of most GNU # utilities, we use '-' in place of '_'. (The spirit of LISP lives on!) # The similarities to NAME are again not a coincidence... longopt_pat = r'[a-zA-Z](?:[a-zA-Z0-9-]*)' longopt_re = re.compile(r'^%s$' % longopt_pat) # For recognizing "negative alias" options, eg. "quiet=!verbose" neg_alias_re = re.compile("^(%s)=!(%s)$" % (longopt_pat, longopt_pat)) # This is used to translate long options to legitimate Python identifiers # (for use as attributes of some object). longopt_xlate = str.maketrans('-', '_') class FancyGetopt: """Wrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false """ def __init__(self, option_table=None): # The option table is (currently) a list of tuples. The # tuples may have 3 or four values: # (long_option, short_option, help_string [, repeatable]) # if an option takes an argument, its long_option should have '=' # appended; short_option should just be a single character, no ':' # in any case. If a long_option doesn't have a corresponding # short_option, short_option should be None. All option tuples # must have long options. self.option_table = option_table # 'option_index' maps long option names to entries in the option # table (ie. those 3-tuples). self.option_index = {} if self.option_table: self._build_index() # 'alias' records (duh) alias options; {'foo': 'bar'} means # --foo is an alias for --bar self.alias = {} # 'negative_alias' keeps track of options that are the boolean # opposite of some other option self.negative_alias = {} # These keep track of the information in the option table. We # don't actually populate these structures until we're ready to # parse the command-line, since the 'option_table' passed in here # isn't necessarily the final word. self.short_opts = [] self.long_opts = [] self.short2long = {} self.attr_name = {} self.takes_arg = {} # And 'option_order' is filled up in 'getopt()'; it records the # original order of options (and their values) on the command-line, # but expands short options, converts aliases, etc. self.option_order = [] def _build_index(self): self.option_index.clear() for option in self.option_table: self.option_index[option[0]] = option def set_option_table(self, option_table): self.option_table = option_table self._build_index() def add_option(self, long_option, short_option=None, help_string=None): if long_option in self.option_index: raise DistutilsGetoptError( "option conflict: already an option '%s'" % long_option) else: option = (long_option, short_option, help_string) self.option_table.append(option) self.option_index[long_option] = option def has_option(self, long_option): """Return true if the option table for this parser has an option with long name 'long_option'.""" return long_option in self.option_index def get_attr_name(self, long_option): """Translate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores.""" return long_option.translate(longopt_xlate) def _check_alias_dict(self, aliases, what): assert isinstance(aliases, dict) for (alias, opt) in aliases.items(): if alias not in self.option_index: raise DistutilsGetoptError(("invalid %s '%s': " "option '%s' not defined") % (what, alias, alias)) if opt not in self.option_index: raise DistutilsGetoptError(("invalid %s '%s': " "aliased option '%s' not defined") % (what, alias, opt)) def set_aliases(self, alias): """Set the aliases for this option parser.""" self._check_alias_dict(alias, "alias") self.alias = alias def set_negative_aliases(self, negative_alias): """Set the negative aliases for this option parser. 'negative_alias' should be a dictionary mapping option names to option names, both the key and value must already be defined in the option table.""" self._check_alias_dict(negative_alias, "negative alias") self.negative_alias = negative_alias def _grok_option_table(self): """Populate the various data structures that keep tabs on the option table. Called by 'getopt()' before it can do anything worthwhile. """ self.long_opts = [] self.short_opts = [] self.short2long.clear() self.repeat = {} for option in self.option_table: if len(option) == 3: long, short, help = option repeat = 0 elif len(option) == 4: long, short, help, repeat = option else: # the option table is part of the code, so simply # assert that it is correct raise ValueError("invalid option tuple: %r" % (option,)) # Type- and value-check the option names if not isinstance(long, str) or len(long) < 2: raise DistutilsGetoptError(("invalid long option '%s': " "must be a string of length >= 2") % long) if (not ((short is None) or (isinstance(short, str) and len(short) == 1))): raise DistutilsGetoptError("invalid short option '%s': " "must a single character or None" % short) self.repeat[long] = repeat self.long_opts.append(long) if long[-1] == '=': # option takes an argument? if short: short = short + ':' long = long[0:-1] self.takes_arg[long] = 1 else: # Is option is a "negative alias" for some other option (eg. # "quiet" == "!verbose")? alias_to = self.negative_alias.get(long) if alias_to is not None: if self.takes_arg[alias_to]: raise DistutilsGetoptError( "invalid negative alias '%s': " "aliased option '%s' takes a value" % (long, alias_to)) self.long_opts[-1] = long # XXX redundant?! self.takes_arg[long] = 0 # If this is an alias option, make sure its "takes arg" flag is # the same as the option it's aliased to. alias_to = self.alias.get(long) if alias_to is not None: if self.takes_arg[long] != self.takes_arg[alias_to]: raise DistutilsGetoptError( "invalid alias '%s': inconsistent with " "aliased option '%s' (one of them takes a value, " "the other doesn't" % (long, alias_to)) # Now enforce some bondage on the long option name, so we can # later translate it to an attribute name on some object. Have # to do this a bit late to make sure we've removed any trailing # '='. if not longopt_re.match(long): raise DistutilsGetoptError( "invalid long option name '%s' " "(must be letters, numbers, hyphens only" % long) self.attr_name[long] = self.get_attr_name(long) if short: self.short_opts.append(short) self.short2long[short[0]] = long def getopt(self, args=None, object=None): """Parse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. """ if args is None: args = sys.argv[1:] if object is None: object = OptionDummy() created_object = True else: created_object = False self._grok_option_table() short_opts = ' '.join(self.short_opts) try: opts, args = getopt.getopt(args, short_opts, self.long_opts) except getopt.error as msg: raise DistutilsArgError(msg) for opt, val in opts: if len(opt) == 2 and opt[0] == '-': # it's a short option opt = self.short2long[opt[1]] else: assert len(opt) > 2 and opt[:2] == '--' opt = opt[2:] alias = self.alias.get(opt) if alias: opt = alias if not self.takes_arg[opt]: # boolean option? assert val == '', "boolean option can't have value" alias = self.negative_alias.get(opt) if alias: opt = alias val = 0 else: val = 1 attr = self.attr_name[opt] # The only repeating option at the moment is 'verbose'. # It has a negative option -q quiet, which should set verbose = 0. if val and self.repeat.get(attr) is not None: val = getattr(object, attr, 0) + 1 setattr(object, attr, val) self.option_order.append((opt, val)) # for opts if created_object: return args, object else: return args def get_option_order(self): """Returns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. """ if self.option_order is None: raise RuntimeError("'getopt()' hasn't been called yet") else: return self.option_order def generate_help(self, header=None): """Generate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. """ # Blithely assume the option table is good: probably wouldn't call # 'generate_help()' unless you've already called 'getopt()'. # First pass: determine maximum length of long option names max_opt = 0 for option in self.option_table: long = option[0] short = option[1] l = len(long) if long[-1] == '=': l = l - 1 if short is not None: l = l + 5 # " (-x)" where short == 'x' if l > max_opt: max_opt = l opt_width = max_opt + 2 + 2 + 2 # room for indent + dashes + gutter # Typical help block looks like this: # --foo controls foonabulation # Help block for longest option looks like this: # --flimflam set the flim-flam level # and with wrapped text: # --flimflam set the flim-flam level (must be between # 0 and 100, except on Tuesdays) # Options with short names will have the short name shown (but # it doesn't contribute to max_opt): # --foo (-f) controls foonabulation # If adding the short option would make the left column too wide, # we push the explanation off to the next line # --flimflam (-l) # set the flim-flam level # Important parameters: # - 2 spaces before option block start lines # - 2 dashes for each long option name # - min. 2 spaces between option and explanation (gutter) # - 5 characters (incl. space) for short option name # Now generate lines of help text. (If 80 columns were good enough # for Jesus, then 78 columns are good enough for me!) line_width = 78 text_width = line_width - opt_width big_indent = ' ' * opt_width if header: lines = [header] else: lines = ['Option summary:'] for option in self.option_table: long, short, help = option[:3] text = wrap_text(help, text_width) if long[-1] == '=': long = long[0:-1] # Case 1: no short option at all (makes life easy) if short is None: if text: lines.append(" --%-*s %s" % (max_opt, long, text[0])) else: lines.append(" --%-*s " % (max_opt, long)) # Case 2: we have a short option, so we have to include it # just after the long option else: opt_names = "%s (-%s)" % (long, short) if text: lines.append(" --%-*s %s" % (max_opt, opt_names, text[0])) else: lines.append(" --%-*s" % opt_names) for l in text[1:]: lines.append(big_indent + l) return lines def print_help(self, header=None, file=None): if file is None: file = sys.stdout for line in self.generate_help(header): file.write(line + "\n") def fancy_getopt(options, negative_opt, object, args): parser = FancyGetopt(options) parser.set_negative_aliases(negative_opt) return parser.getopt(args, object) WS_TRANS = {ord(_wschar) : ' ' for _wschar in string.whitespace} def wrap_text(text, width): """wrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. """ if text is None: return [] if len(text) <= width: return [text] text = text.expandtabs() text = text.translate(WS_TRANS) chunks = re.split(r'( +|-+)', text) chunks = [ch for ch in chunks if ch] # ' - ' results in empty strings lines = [] while chunks: cur_line = [] # list of chunks (to-be-joined) cur_len = 0 # length of current line while chunks: l = len(chunks[0]) if cur_len + l <= width: # can squeeze (at least) this chunk in cur_line.append(chunks[0]) del chunks[0] cur_len = cur_len + l else: # this line is full # drop last chunk if all space if cur_line and cur_line[-1][0] == ' ': del cur_line[-1] break if chunks: # any chunks left to process? # if the current line is still empty, then we had a single # chunk that's too big too fit on a line -- so we break # down and break it up at the line width if cur_len == 0: cur_line.append(chunks[0][0:width]) chunks[0] = chunks[0][width:] # all-whitespace chunks at the end of a line can be discarded # (and we know from the re.split above that if a chunk has # *any* whitespace, it is *all* whitespace) if chunks[0][0] == ' ': del chunks[0] # and store this line in the list-of-all-lines -- as a single # string, of course! lines.append(''.join(cur_line)) return lines def translate_longopt(opt): """Convert a long option name to a valid Python identifier by changing "-" to "_". """ return opt.translate(longopt_xlate) class OptionDummy: """Dummy class just used as a place to hold command-line option values as instance attributes.""" def __init__(self, options=[]): """Create a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.""" for opt in options: setattr(self, opt, None) if __name__ == "__main__": text = """\ Tra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)""" for w in (10, 20, 30, 40): print("width: %d" % w) print("\n".join(wrap_text(text, w))) print() PKD]Bspawn.pynu["""distutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. """ import sys import os from distutils.errors import DistutilsPlatformError, DistutilsExecError from distutils.debug import DEBUG from distutils import log def spawn(cmd, search_path=1, verbose=0, dry_run=0): """Run another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. cmd[0] is the program to run and cmd[1:] are the rest of its arguments. There is no way to run a program with a name different from that of its executable. If 'search_path' is true (the default), the system's executable search path will be used to find the program; otherwise, cmd[0] must be the exact path to the executable. If 'dry_run' is true, the command will not actually be run. Raise DistutilsExecError if running the program fails in any way; just return on success. """ # cmd is documented as a list, but just in case some code passes a tuple # in, protect our %-formatting code against horrible death cmd = list(cmd) if os.name == 'posix': _spawn_posix(cmd, search_path, dry_run=dry_run) elif os.name == 'nt': _spawn_nt(cmd, search_path, dry_run=dry_run) else: raise DistutilsPlatformError( "don't know how to spawn programs on platform '%s'" % os.name) def _nt_quote_args(args): """Quote command-line arguments for DOS/Windows conventions. Just wraps every argument which contains blanks in double quotes, and returns a new argument list. """ # XXX this doesn't seem very robust to me -- but if the Windows guys # say it'll work, I guess I'll have to accept it. (What if an arg # contains quotes? What other magic characters, other than spaces, # have to be escaped? Is there an escaping mechanism other than # quoting?) for i, arg in enumerate(args): if ' ' in arg: args[i] = '"%s"' % arg return args def _spawn_nt(cmd, search_path=1, verbose=0, dry_run=0): executable = cmd[0] cmd = _nt_quote_args(cmd) if search_path: # either we find one or it stays the same executable = find_executable(executable) or executable log.info(' '.join([executable] + cmd[1:])) if not dry_run: # spawn for NT requires a full path to the .exe try: rc = os.spawnv(os.P_WAIT, executable, cmd) except OSError as exc: # this seems to happen when the command isn't found if not DEBUG: cmd = executable raise DistutilsExecError( "command %r failed: %s" % (cmd, exc.args[-1])) if rc != 0: # and this reflects the command running but failing if not DEBUG: cmd = executable raise DistutilsExecError( "command %r failed with exit status %d" % (cmd, rc)) if sys.platform == 'darwin': from distutils import sysconfig _cfg_target = None _cfg_target_split = None def _spawn_posix(cmd, search_path=1, verbose=0, dry_run=0): log.info(' '.join(cmd)) if dry_run: return executable = cmd[0] exec_fn = search_path and os.execvp or os.execv env = None if sys.platform == 'darwin': global _cfg_target, _cfg_target_split if _cfg_target is None: _cfg_target = sysconfig.get_config_var( 'MACOSX_DEPLOYMENT_TARGET') or '' if _cfg_target: _cfg_target_split = [int(x) for x in _cfg_target.split('.')] if _cfg_target: # ensure that the deployment target of build process is not less # than that used when the interpreter was built. This ensures # extension modules are built with correct compatibility values cur_target = os.environ.get('MACOSX_DEPLOYMENT_TARGET', _cfg_target) if _cfg_target_split > [int(x) for x in cur_target.split('.')]: my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: ' 'now "%s" but "%s" during configure' % (cur_target, _cfg_target)) raise DistutilsPlatformError(my_msg) env = dict(os.environ, MACOSX_DEPLOYMENT_TARGET=cur_target) exec_fn = search_path and os.execvpe or os.execve pid = os.fork() if pid == 0: # in the child try: if env is None: exec_fn(executable, cmd) else: exec_fn(executable, cmd, env) except OSError as e: if not DEBUG: cmd = executable sys.stderr.write("unable to execute %r: %s\n" % (cmd, e.strerror)) os._exit(1) if not DEBUG: cmd = executable sys.stderr.write("unable to execute %r for unknown reasons" % cmd) os._exit(1) else: # in the parent # Loop until the child either exits or is terminated by a signal # (ie. keep waiting if it's merely stopped) while True: try: pid, status = os.waitpid(pid, 0) except OSError as exc: if not DEBUG: cmd = executable raise DistutilsExecError( "command %r failed: %s" % (cmd, exc.args[-1])) if os.WIFSIGNALED(status): if not DEBUG: cmd = executable raise DistutilsExecError( "command %r terminated by signal %d" % (cmd, os.WTERMSIG(status))) elif os.WIFEXITED(status): exit_status = os.WEXITSTATUS(status) if exit_status == 0: return # hey, it succeeded! else: if not DEBUG: cmd = executable raise DistutilsExecError( "command %r failed with exit status %d" % (cmd, exit_status)) elif os.WIFSTOPPED(status): continue else: if not DEBUG: cmd = executable raise DistutilsExecError( "unknown error executing %r: termination status %d" % (cmd, status)) def find_executable(executable, path=None): """Tries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. """ _, ext = os.path.splitext(executable) if (sys.platform == 'win32') and (ext != '.exe'): executable = executable + '.exe' if os.path.isfile(executable): return executable if path is None: path = os.environ.get('PATH', None) if path is None: try: path = os.confstr("CS_PATH") except (AttributeError, ValueError): # os.confstr() or CS_PATH is not available path = os.defpath # bpo-35755: Don't use os.defpath if the PATH environment variable is # set to an empty string # PATH='' doesn't match, whereas PATH=':' looks in the current directory if not path: return None paths = path.split(os.pathsep) for p in paths: f = os.path.join(p, executable) if os.path.isfile(f): # the file exists, we have a shot at spawn working return f return None PKD]ˆбlog.pynu["""A simple log mechanism styled after PEP 282.""" # The class here is styled after PEP 282 so that it could later be # replaced with a standard Python logging implementation. DEBUG = 1 INFO = 2 WARN = 3 ERROR = 4 FATAL = 5 import sys class Log: def __init__(self, threshold=WARN): self.threshold = threshold def _log(self, level, msg, args): if level not in (DEBUG, INFO, WARN, ERROR, FATAL): raise ValueError('%s wrong log level' % str(level)) if level >= self.threshold: if args: msg = msg % args if level in (WARN, ERROR, FATAL): stream = sys.stderr else: stream = sys.stdout try: stream.write('%s\n' % msg) except UnicodeEncodeError: # emulate backslashreplace error handler encoding = stream.encoding msg = msg.encode(encoding, "backslashreplace").decode(encoding) stream.write('%s\n' % msg) stream.flush() def log(self, level, msg, *args): self._log(level, msg, args) def debug(self, msg, *args): self._log(DEBUG, msg, args) def info(self, msg, *args): self._log(INFO, msg, args) def warn(self, msg, *args): self._log(WARN, msg, args) def error(self, msg, *args): self._log(ERROR, msg, args) def fatal(self, msg, *args): self._log(FATAL, msg, args) _global_log = Log() log = _global_log.log debug = _global_log.debug info = _global_log.info warn = _global_log.warn error = _global_log.error fatal = _global_log.fatal def set_threshold(level): # return the old threshold for use from tests old = _global_log.threshold _global_log.threshold = level return old def set_verbosity(v): if v <= 0: set_threshold(WARN) elif v == 1: set_threshold(INFO) elif v >= 2: set_threshold(DEBUG) PKD]Z^@^@cygwinccompiler.pynu["""distutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). """ # problems: # # * if you use a msvc compiled python version (1.5.2) # 1. you have to insert a __GNUC__ section in its config.h # 2. you have to generate an import library for its dll # - create a def-file for python??.dll # - create an import library using # dlltool --dllname python15.dll --def python15.def \ # --output-lib libpython15.a # # see also http://starship.python.net/crew/kernr/mingw32/Notes.html # # * We put export_symbols in a def-file, and don't use # --export-all-symbols because it doesn't worked reliable in some # tested configurations. And because other windows compilers also # need their symbols specified this no serious problem. # # tested configurations: # # * cygwin gcc 2.91.57/ld 2.9.4/dllwrap 0.2.4 works # (after patching python's config.h and for C++ some other include files) # see also http://starship.python.net/crew/kernr/mingw32/Notes.html # * mingw32 gcc 2.95.2/ld 2.9.4/dllwrap 0.2.4 works # (ld doesn't support -shared, so we use dllwrap) # * cygwin gcc 2.95.2/ld 2.10.90/dllwrap 2.10.90 works now # - its dllwrap doesn't work, there is a bug in binutils 2.10.90 # see also http://sources.redhat.com/ml/cygwin/2000-06/msg01274.html # - using gcc -mdll instead dllwrap doesn't work without -static because # it tries to link against dlls instead their import libraries. (If # it finds the dll first.) # By specifying -static we force ld to link against the import libraries, # this is windows standard and there are normally not the necessary symbols # in the dlls. # *** only the version of June 2000 shows these problems # * cygwin gcc 3.2/ld 2.13.90 works # (ld supports -shared) # * mingw gcc 3.2/ld 2.13 works # (ld supports -shared) import os import sys import copy from subprocess import Popen, PIPE, check_output import re from distutils.ccompiler import gen_preprocess_options, gen_lib_options from distutils.unixccompiler import UnixCCompiler from distutils.file_util import write_file from distutils.errors import (DistutilsExecError, CCompilerError, CompileError, UnknownFileError) from distutils import log from distutils.version import LooseVersion from distutils.spawn import find_executable def get_msvcr(): """Include the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. """ msc_pos = sys.version.find('MSC v.') if msc_pos != -1: msc_ver = sys.version[msc_pos+6:msc_pos+10] if msc_ver == '1300': # MSVC 7.0 return ['msvcr70'] elif msc_ver == '1310': # MSVC 7.1 return ['msvcr71'] elif msc_ver == '1400': # VS2005 / MSVC 8.0 return ['msvcr80'] elif msc_ver == '1500': # VS2008 / MSVC 9.0 return ['msvcr90'] elif msc_ver == '1600': # VS2010 / MSVC 10.0 return ['msvcr100'] else: raise ValueError("Unknown MS Compiler version %s " % msc_ver) class CygwinCCompiler(UnixCCompiler): """ Handles the Cygwin port of the GNU C compiler to Windows. """ compiler_type = 'cygwin' obj_extension = ".o" static_lib_extension = ".a" shared_lib_extension = ".dll" static_lib_format = "lib%s%s" shared_lib_format = "%s%s" exe_extension = ".exe" def __init__(self, verbose=0, dry_run=0, force=0): UnixCCompiler.__init__(self, verbose, dry_run, force) status, details = check_config_h() self.debug_print("Python's GCC status: %s (details: %s)" % (status, details)) if status is not CONFIG_H_OK: self.warn( "Python's pyconfig.h doesn't seem to support your compiler. " "Reason: %s. " "Compiling may fail because of undefined preprocessor macros." % details) self.gcc_version, self.ld_version, self.dllwrap_version = \ get_versions() self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" % (self.gcc_version, self.ld_version, self.dllwrap_version) ) # ld_version >= "2.10.90" and < "2.13" should also be able to use # gcc -mdll instead of dllwrap # Older dllwraps had own version numbers, newer ones use the # same as the rest of binutils ( also ld ) # dllwrap 2.10.90 is buggy if self.ld_version >= "2.10.90": self.linker_dll = "gcc" else: self.linker_dll = "dllwrap" # ld_version >= "2.13" support -shared so use it instead of # -mdll -static if self.ld_version >= "2.13": shared_option = "-shared" else: shared_option = "-mdll -static" # Hard-code GCC because that's what this is all about. # XXX optimization, warnings etc. should be customizable. self.set_executables(compiler='gcc -mcygwin -O -Wall', compiler_so='gcc -mcygwin -mdll -O -Wall', compiler_cxx='g++ -mcygwin -O -Wall', linker_exe='gcc -mcygwin', linker_so=('%s -mcygwin %s' % (self.linker_dll, shared_option))) # cygwin and mingw32 need different sets of libraries if self.gcc_version == "2.91.57": # cygwin shouldn't need msvcrt, but without the dlls will crash # (gcc version 2.91.57) -- perhaps something about initialization self.dll_libraries=["msvcrt"] self.warn( "Consider upgrading to a newer version of gcc") else: # Include the appropriate MSVC runtime library if Python was built # with MSVC 7.0 or later. self.dll_libraries = get_msvcr() def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): """Compiles the source by spawning GCC and windres if needed.""" if ext == '.rc' or ext == '.res': # gcc needs '.res' and '.rc' compiled to object files !!! try: self.spawn(["windres", "-i", src, "-o", obj]) except DistutilsExecError as msg: raise CompileError(msg) else: # for other files use the C-compiler try: self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + extra_postargs) except DistutilsExecError as msg: raise CompileError(msg) def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): """Link the objects.""" # use separate copies, so we can modify the lists extra_preargs = copy.copy(extra_preargs or []) libraries = copy.copy(libraries or []) objects = copy.copy(objects or []) # Additional libraries libraries.extend(self.dll_libraries) # handle export symbols by creating a def-file # with executables this only works with gcc/ld as linker if ((export_symbols is not None) and (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): # (The linker doesn't do anything if output is up-to-date. # So it would probably better to check if we really need this, # but for this we had to insert some unchanged parts of # UnixCCompiler, and this is not what we want.) # we want to put some files in the same directory as the # object files are, build_temp doesn't help much # where are the object files temp_dir = os.path.dirname(objects[0]) # name of dll to give the helper files the same base name (dll_name, dll_extension) = os.path.splitext( os.path.basename(output_filename)) # generate the filenames for these files def_file = os.path.join(temp_dir, dll_name + ".def") lib_file = os.path.join(temp_dir, 'lib' + dll_name + ".a") # Generate .def file contents = [ "LIBRARY %s" % os.path.basename(output_filename), "EXPORTS"] for sym in export_symbols: contents.append(sym) self.execute(write_file, (def_file, contents), "writing %s" % def_file) # next add options for def-file and to creating import libraries # dllwrap uses different options than gcc/ld if self.linker_dll == "dllwrap": extra_preargs.extend(["--output-lib", lib_file]) # for dllwrap we have to use a special option extra_preargs.extend(["--def", def_file]) # we use gcc/ld here and can be sure ld is >= 2.9.10 else: # doesn't work: bfd_close build\...\libfoo.a: Invalid operation #extra_preargs.extend(["-Wl,--out-implib,%s" % lib_file]) # for gcc/ld the def-file is specified as any object files objects.append(def_file) #end: if ((export_symbols is not None) and # (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): # who wants symbols and a many times larger output file # should explicitly switch the debug mode on # otherwise we let dllwrap/ld strip the output file # (On my machine: 10KiB < stripped_file < ??100KiB # unstripped_file = stripped_file + XXX KiB # ( XXX=254 for a typical python extension)) if not debug: extra_preargs.append("-s") UnixCCompiler.link(self, target_desc, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, None, # export_symbols, we do this in our def-file debug, extra_preargs, extra_postargs, build_temp, target_lang) # -- Miscellaneous methods ----------------------------------------- def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): """Adds supports for rc and res files.""" if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: # use normcase to make sure '.rc' is really '.rc' and not '.RC' base, ext = os.path.splitext(os.path.normcase(src_name)) if ext not in (self.src_extensions + ['.rc','.res']): raise UnknownFileError("unknown file type '%s' (from '%s')" % \ (ext, src_name)) if strip_dir: base = os.path.basename (base) if ext in ('.res', '.rc'): # these need to be compiled to object files obj_names.append (os.path.join(output_dir, base + ext + self.obj_extension)) else: obj_names.append (os.path.join(output_dir, base + self.obj_extension)) return obj_names # the same as cygwin plus some additional parameters class Mingw32CCompiler(CygwinCCompiler): """ Handles the Mingw32 port of the GNU C compiler to Windows. """ compiler_type = 'mingw32' def __init__(self, verbose=0, dry_run=0, force=0): CygwinCCompiler.__init__ (self, verbose, dry_run, force) # ld_version >= "2.13" support -shared so use it instead of # -mdll -static if self.ld_version >= "2.13": shared_option = "-shared" else: shared_option = "-mdll -static" # A real mingw32 doesn't need to specify a different entry point, # but cygwin 2.91.57 in no-cygwin-mode needs it. if self.gcc_version <= "2.91.57": entry_point = '--entry _DllMain@12' else: entry_point = '' if is_cygwingcc(): raise CCompilerError( 'Cygwin gcc cannot be used with --compiler=mingw32') self.set_executables(compiler='gcc -O -Wall', compiler_so='gcc -mdll -O -Wall', compiler_cxx='g++ -O -Wall', linker_exe='gcc', linker_so='%s %s %s' % (self.linker_dll, shared_option, entry_point)) # Maybe we should also append -mthreads, but then the finished # dlls need another dll (mingwm10.dll see Mingw32 docs) # (-mthreads: Support thread-safe exception handling on `Mingw32') # no additional libraries needed self.dll_libraries=[] # Include the appropriate MSVC runtime library if Python was built # with MSVC 7.0 or later. self.dll_libraries = get_msvcr() # Because these compilers aren't configured in Python's pyconfig.h file by # default, we should at least warn the user if he is using an unmodified # version. CONFIG_H_OK = "ok" CONFIG_H_NOTOK = "not ok" CONFIG_H_UNCERTAIN = "uncertain" def check_config_h(): """Check if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". """ # XXX since this function also checks sys.version, it's not strictly a # "pyconfig.h" check -- should probably be renamed... from distutils import sysconfig # if sys.version contains GCC then python was compiled with GCC, and the # pyconfig.h file should be OK if "GCC" in sys.version: return CONFIG_H_OK, "sys.version mentions 'GCC'" # let's see if __GNUC__ is mentioned in python.h fn = sysconfig.get_config_h_filename() try: config_h = open(fn) try: if "__GNUC__" in config_h.read(): return CONFIG_H_OK, "'%s' mentions '__GNUC__'" % fn else: return CONFIG_H_NOTOK, "'%s' does not mention '__GNUC__'" % fn finally: config_h.close() except OSError as exc: return (CONFIG_H_UNCERTAIN, "couldn't read '%s': %s" % (fn, exc.strerror)) RE_VERSION = re.compile(br'(\d+\.\d+(\.\d+)*)') def _find_exe_version(cmd): """Find the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. """ executable = cmd.split()[0] if find_executable(executable) is None: return None out = Popen(cmd, shell=True, stdout=PIPE).stdout try: out_string = out.read() finally: out.close() result = RE_VERSION.search(out_string) if result is None: return None # LooseVersion works with strings # so we need to decode our bytes return LooseVersion(result.group(1).decode()) def get_versions(): """ Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. """ commands = ['gcc -dumpversion', 'ld -v', 'dllwrap --version'] return tuple([_find_exe_version(cmd) for cmd in commands]) def is_cygwingcc(): '''Try to determine if the gcc that would be used is from cygwin.''' out_string = check_output(['gcc', '-dumpmachine']) return out_string.strip().endswith(b'cygwin') PKD],|;|;unixccompiler.pynu["""distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' """ import os, sys, re from distutils import sysconfig from distutils.dep_util import newer from distutils.ccompiler import \ CCompiler, gen_preprocess_options, gen_lib_options from distutils.errors import \ DistutilsExecError, CompileError, LibError, LinkError from distutils import log if sys.platform == 'darwin': import _osx_support # XXX Things not currently handled: # * optimization/debug/warning flags; we just use whatever's in Python's # Makefile and live with it. Is this adequate? If not, we might # have to have a bunch of subclasses GNUCCompiler, SGICCompiler, # SunCCompiler, and I suspect down that road lies madness. # * even if we don't know a warning flag from an optimization flag, # we need some way for outsiders to feed preprocessor/compiler/linker # flags in to us -- eg. a sysadmin might want to mandate certain flags # via a site config file, or a user might want to set something for # compiling this module distribution only via the setup.py command # line, whatever. As long as these options come from something on the # current system, they can be as system-dependent as they like, and we # should just happily stuff them into the preprocessor/compiler/linker # options and carry on. class UnixCCompiler(CCompiler): compiler_type = 'unix' # These are used by CCompiler in two places: the constructor sets # instance attributes 'preprocessor', 'compiler', etc. from them, and # 'set_executable()' allows any of these to be set. The defaults here # are pretty generic; they will probably have to be set by an outsider # (eg. using information discovered by the sysconfig about building # Python extensions). executables = {'preprocessor' : None, 'compiler' : ["cc"], 'compiler_so' : ["cc"], 'compiler_cxx' : ["cc"], 'linker_so' : ["cc", "-shared"], 'linker_exe' : ["cc"], 'archiver' : ["ar", "-cr"], 'ranlib' : None, } if sys.platform[:6] == "darwin": executables['ranlib'] = ["ranlib"] # Needed for the filename generation methods provided by the base # class, CCompiler. NB. whoever instantiates/uses a particular # UnixCCompiler instance should set 'shared_lib_ext' -- we set a # reasonable common default here, but it's not necessarily used on all # Unices! src_extensions = [".c",".C",".cc",".cxx",".cpp",".m"] obj_extension = ".o" static_lib_extension = ".a" shared_lib_extension = ".so" dylib_lib_extension = ".dylib" xcode_stub_lib_extension = ".tbd" static_lib_format = shared_lib_format = dylib_lib_format = "lib%s%s" xcode_stub_lib_format = dylib_lib_format if sys.platform == "cygwin": exe_extension = ".exe" def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs): """Remove standard library path from rpath""" libraries, library_dirs, runtime_library_dirs = super( self.__class__, self)._fix_lib_args(libraries, library_dirs, runtime_library_dirs) libdir = sysconfig.get_config_var('LIBDIR') if runtime_library_dirs and (libdir in runtime_library_dirs): runtime_library_dirs.remove(libdir) return libraries, library_dirs, runtime_library_dirs def preprocess(self, source, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None): fixed_args = self._fix_compile_args(None, macros, include_dirs) ignore, macros, include_dirs = fixed_args pp_opts = gen_preprocess_options(macros, include_dirs) pp_args = self.preprocessor + pp_opts if output_file: pp_args.extend(['-o', output_file]) if extra_preargs: pp_args[:0] = extra_preargs if extra_postargs: pp_args.extend(extra_postargs) pp_args.append(source) # We need to preprocess: either we're being forced to, or we're # generating output to stdout, or there's a target output file and # the source file is newer than the target (or the target doesn't # exist). if self.force or output_file is None or newer(source, output_file): if output_file: self.mkpath(os.path.dirname(output_file)) try: self.spawn(pp_args) except DistutilsExecError as msg: raise CompileError(msg) def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): compiler_so = self.compiler_so if sys.platform == 'darwin': compiler_so = _osx_support.compiler_fixup(compiler_so, cc_args + extra_postargs) try: self.spawn(compiler_so + cc_args + [src, '-o', obj] + extra_postargs) except DistutilsExecError as msg: raise CompileError(msg) def create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None): objects, output_dir = self._fix_object_args(objects, output_dir) output_filename = \ self.library_filename(output_libname, output_dir=output_dir) if self._need_link(objects, output_filename): self.mkpath(os.path.dirname(output_filename)) self.spawn(self.archiver + [output_filename] + objects + self.objects) # Not many Unices required ranlib anymore -- SunOS 4.x is, I # think the only major Unix that does. Maybe we need some # platform intelligence here to skip ranlib if it's not # needed -- or maybe Python's configure script took care of # it for us, hence the check for leading colon. if self.ranlib: try: self.spawn(self.ranlib + [output_filename]) except DistutilsExecError as msg: raise LibError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): objects, output_dir = self._fix_object_args(objects, output_dir) fixed_args = self._fix_lib_args(libraries, library_dirs, runtime_library_dirs) libraries, library_dirs, runtime_library_dirs = fixed_args lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, libraries) if not isinstance(output_dir, (str, type(None))): raise TypeError("'output_dir' must be a string or None") if output_dir is not None: output_filename = os.path.join(output_dir, output_filename) if self._need_link(objects, output_filename): ld_args = (objects + self.objects + lib_opts + ['-o', output_filename]) if debug: ld_args[:0] = ['-g'] if extra_preargs: ld_args[:0] = extra_preargs if extra_postargs: ld_args.extend(extra_postargs) self.mkpath(os.path.dirname(output_filename)) try: if target_desc == CCompiler.EXECUTABLE: linker = self.linker_exe[:] else: linker = self.linker_so[:] if target_lang == "c++" and self.compiler_cxx: # skip over environment variable settings if /usr/bin/env # is used to set up the linker's environment. # This is needed on OSX. Note: this assumes that the # normal and C++ compiler have the same environment # settings. i = 0 if os.path.basename(linker[0]) == "env": i = 1 while '=' in linker[i]: i += 1 if os.path.basename(linker[i]) == 'ld_so_aix': # AIX platforms prefix the compiler with the ld_so_aix # script, so we need to adjust our linker index offset = 1 else: offset = 0 linker[i+offset] = self.compiler_cxx[i] if sys.platform == 'darwin': linker = _osx_support.compiler_fixup(linker, ld_args) self.spawn(linker + ld_args) except DistutilsExecError as msg: raise LinkError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function, in # ccompiler.py. def library_dir_option(self, dir): return "-L" + dir def _is_gcc(self, compiler_name): return "gcc" in compiler_name or "g++" in compiler_name def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php # ?func=detail&aid=445902&group_id=5470&atid=105470 # Linkers on different platforms need different options to # specify that directories need to be added to the list of # directories searched for dependencies when a dynamic library # is sought. GCC on GNU systems (Linux, FreeBSD, ...) has to # be told to pass the -R option through to the linker, whereas # other compilers and gcc on other systems just know this. # Other compilers may need something slightly different. At # this time, there's no way to determine this information from # the configuration data stored in the Python installation, so # we use this hack. compiler = os.path.basename(sysconfig.get_config_var("CC")) if sys.platform[:6] == "darwin": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:7] == "freebsd": return "-Wl,-rpath=" + dir elif sys.platform[:5] == "hp-ux": if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] else: if self._is_gcc(compiler): # gcc on non-GNU systems does not need -Wl, but can # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably # safest to keep doing so. if sysconfig.get_config_var("GNULD") == "yes": # GNU ld needs an extra option to get a RUNPATH # instead of just an RPATH. return "-Wl,--enable-new-dtags,-R" + dir else: return "-Wl,-R" + dir else: # No idea how --enable-new-dtags would be passed on to # ld if this system was using GNU ld. Don't know if a # system like this even exists. return "-R" + dir def library_option(self, lib): return "-l" + lib def find_library_file(self, dirs, lib, debug=0): shared_f = self.library_filename(lib, lib_type='shared') dylib_f = self.library_filename(lib, lib_type='dylib') xcode_stub_f = self.library_filename(lib, lib_type='xcode_stub') static_f = self.library_filename(lib, lib_type='static') if sys.platform == 'darwin': # On OSX users can specify an alternate SDK using # '-isysroot', calculate the SDK root if it is specified # (and use it further on) # # Note that, as of Xcode 7, Apple SDKs may contain textual stub # libraries with .tbd extensions rather than the normal .dylib # shared libraries installed in /. The Apple compiler tool # chain handles this transparently but it can cause problems # for programs that are being built with an SDK and searching # for specific libraries. Callers of find_library_file need to # keep in mind that the base filename of the returned SDK library # file might have a different extension from that of the library # file installed on the running system, for example: # /Applications/Xcode.app/Contents/Developer/Platforms/ # MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/ # usr/lib/libedit.tbd # vs # /usr/lib/libedit.dylib cflags = sysconfig.get_config_var('CFLAGS') m = re.search(r'-isysroot\s*(\S+)', cflags) if m is None: sysroot = '/' else: sysroot = m.group(1) for dir in dirs: shared = os.path.join(dir, shared_f) dylib = os.path.join(dir, dylib_f) static = os.path.join(dir, static_f) xcode_stub = os.path.join(dir, xcode_stub_f) if sys.platform == 'darwin' and ( dir.startswith('/System/') or ( dir.startswith('/usr/') and not dir.startswith('/usr/local/'))): shared = os.path.join(sysroot, dir[1:], shared_f) dylib = os.path.join(sysroot, dir[1:], dylib_f) static = os.path.join(sysroot, dir[1:], static_f) xcode_stub = os.path.join(sysroot, dir[1:], xcode_stub_f) # We're second-guessing the linker here, with not much hard # data to go on: GCC seems to prefer the shared library, so I'm # assuming that *all* Unix C compilers do. And of course I'm # ignoring even GCC's "-static" option. So sue me. if os.path.exists(dylib): return dylib elif os.path.exists(xcode_stub): return xcode_stub elif os.path.exists(shared): return shared elif os.path.exists(static): return static # Oops, didn't find it in *any* of 'dirs' return None PKD],{''READMEnu[This directory contains the Distutils package. There's a full documentation available at: http://docs.python.org/distutils/ The Distutils-SIG web page is also a good starting point: http://www.python.org/sigs/distutils-sig/ WARNING : Distutils must remain compatible with 2.3 $Id$ PKD]]4:)) extension.pynu["""distutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.""" import os import warnings # This class is really only used by the "build_ext" command, so it might # make sense to put it in distutils.command.build_ext. However, that # module is already big enough, and I want to make this class a bit more # complex to simplify some common cases ("foo" module in "foo.c") and do # better error-checking ("foo.c" actually exists). # # Also, putting this in build_ext.py means every setup script would have to # import that large-ish module (indirectly, through distutils.core) in # order to do anything. class Extension: """Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. """ # When adding arguments to this constructor, be sure to update # setup_keywords in core.py. def __init__(self, name, sources, include_dirs=None, define_macros=None, undef_macros=None, library_dirs=None, libraries=None, runtime_library_dirs=None, extra_objects=None, extra_compile_args=None, extra_link_args=None, export_symbols=None, swig_opts = None, depends=None, language=None, optional=None, **kw # To catch unknown keywords ): if not isinstance(name, str): raise AssertionError("'name' must be a string") if not (isinstance(sources, list) and all(isinstance(v, str) for v in sources)): raise AssertionError("'sources' must be a list of strings") self.name = name self.sources = sources self.include_dirs = include_dirs or [] self.define_macros = define_macros or [] self.undef_macros = undef_macros or [] self.library_dirs = library_dirs or [] self.libraries = libraries or [] self.runtime_library_dirs = runtime_library_dirs or [] self.extra_objects = extra_objects or [] self.extra_compile_args = extra_compile_args or [] self.extra_link_args = extra_link_args or [] self.export_symbols = export_symbols or [] self.swig_opts = swig_opts or [] self.depends = depends or [] self.language = language self.optional = optional # If there are unknown keyword options, warn about them if len(kw) > 0: options = [repr(option) for option in kw] options = ', '.join(sorted(options)) msg = "Unknown Extension options: %s" % options warnings.warn(msg) def __repr__(self): return '<%s.%s(%r) at %#x>' % ( self.__class__.__module__, self.__class__.__qualname__, self.name, id(self)) def read_setup_file(filename): """Reads a Setup file and returns Extension instances.""" from distutils.sysconfig import (parse_makefile, expand_makefile_vars, _variable_rx) from distutils.text_file import TextFile from distutils.util import split_quoted # First pass over the file to gather "VAR = VALUE" assignments. vars = parse_makefile(filename) # Second pass to gobble up the real content: lines of the form # ... [ ...] [ ...] [ ...] file = TextFile(filename, strip_comments=1, skip_blanks=1, join_lines=1, lstrip_ws=1, rstrip_ws=1) try: extensions = [] while True: line = file.readline() if line is None: # eof break if _variable_rx.match(line): # VAR=VALUE, handled in first pass continue if line[0] == line[-1] == "*": file.warn("'%s' lines not handled yet" % line) continue line = expand_makefile_vars(line, vars) words = split_quoted(line) # NB. this parses a slightly different syntax than the old # makesetup script: here, there must be exactly one extension per # line, and it must be the first word of the line. I have no idea # why the old syntax supported multiple extensions per line, as # they all wind up being the same. module = words[0] ext = Extension(module, []) append_next_word = None for word in words[1:]: if append_next_word is not None: append_next_word.append(word) append_next_word = None continue suffix = os.path.splitext(word)[1] switch = word[0:2] ; value = word[2:] if suffix in (".c", ".cc", ".cpp", ".cxx", ".c++", ".m", ".mm"): # hmm, should we do something about C vs. C++ sources? # or leave it up to the CCompiler implementation to # worry about? ext.sources.append(word) elif switch == "-I": ext.include_dirs.append(value) elif switch == "-D": equals = value.find("=") if equals == -1: # bare "-DFOO" -- no value ext.define_macros.append((value, None)) else: # "-DFOO=blah" ext.define_macros.append((value[0:equals], value[equals+2:])) elif switch == "-U": ext.undef_macros.append(value) elif switch == "-C": # only here 'cause makesetup has it! ext.extra_compile_args.append(word) elif switch == "-l": ext.libraries.append(value) elif switch == "-L": ext.library_dirs.append(value) elif switch == "-R": ext.runtime_library_dirs.append(value) elif word == "-rpath": append_next_word = ext.runtime_library_dirs elif word == "-Xlinker": append_next_word = ext.extra_link_args elif word == "-Xcompiler": append_next_word = ext.extra_compile_args elif switch == "-u": ext.extra_link_args.append(word) if not value: append_next_word = ext.extra_link_args elif suffix in (".a", ".so", ".sl", ".o", ".dylib"): # NB. a really faithful emulation of makesetup would # append a .o file to extra_objects only if it # had a slash in it; otherwise, it would s/.o/.c/ # and append it to sources. Hmmmm. ext.extra_objects.append(word) else: file.warn("unrecognized argument '%s'" % word) extensions.append(ext) finally: file.close() return extensions PKD]F!F!archive_util.pynu["""distutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).""" import os from warnings import warn import sys try: import zipfile except ImportError: zipfile = None from distutils.errors import DistutilsExecError from distutils.spawn import spawn from distutils.dir_util import mkpath from distutils import log try: from pwd import getpwnam except ImportError: getpwnam = None try: from grp import getgrnam except ImportError: getgrnam = None def _get_gid(name): """Returns a gid, given a group name.""" if getgrnam is None or name is None: return None try: result = getgrnam(name) except KeyError: result = None if result is not None: return result[2] return None def _get_uid(name): """Returns an uid, given a user name.""" if getpwnam is None or name is None: return None try: result = getpwnam(name) except KeyError: result = None if result is not None: return result[2] return None def make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, owner=None, group=None): """Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. """ tar_compression = {'gzip': 'gz', 'bzip2': 'bz2', 'xz': 'xz', None: '', 'compress': ''} compress_ext = {'gzip': '.gz', 'bzip2': '.bz2', 'xz': '.xz', 'compress': '.Z'} # flags for compression program, each element of list will be an argument if compress is not None and compress not in compress_ext.keys(): raise ValueError( "bad value for 'compress': must be None, 'gzip', 'bzip2', " "'xz' or 'compress'") archive_name = base_name + '.tar' if compress != 'compress': archive_name += compress_ext.get(compress, '') mkpath(os.path.dirname(archive_name), dry_run=dry_run) # creating the tarball import tarfile # late import so Python build itself doesn't break log.info('Creating tar archive') uid = _get_uid(owner) gid = _get_gid(group) def _set_uid_gid(tarinfo): if gid is not None: tarinfo.gid = gid tarinfo.gname = group if uid is not None: tarinfo.uid = uid tarinfo.uname = owner return tarinfo if not dry_run: tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress]) try: tar.add(base_dir, filter=_set_uid_gid) finally: tar.close() # compression using `compress` if compress == 'compress': warn("'compress' will be deprecated.", PendingDeprecationWarning) # the option varies depending on the platform compressed_name = archive_name + compress_ext[compress] if sys.platform == 'win32': cmd = [compress, archive_name, compressed_name] else: cmd = [compress, '-f', archive_name] spawn(cmd, dry_run=dry_run) return compressed_name return archive_name def make_zipfile(base_name, base_dir, verbose=0, dry_run=0): """Create a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. """ zip_filename = base_name + ".zip" mkpath(os.path.dirname(zip_filename), dry_run=dry_run) # If zipfile module is not available, try spawning an external # 'zip' command. if zipfile is None: if verbose: zipoptions = "-r" else: zipoptions = "-rq" try: spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run) except DistutilsExecError: # XXX really should distinguish between "couldn't find # external 'zip' command" and "zip failed". raise DistutilsExecError(("unable to create zip file '%s': " "could neither import the 'zipfile' module nor " "find a standalone zip utility") % zip_filename) else: log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir) if not dry_run: try: zip = zipfile.ZipFile(zip_filename, "w", compression=zipfile.ZIP_DEFLATED) except RuntimeError: zip = zipfile.ZipFile(zip_filename, "w", compression=zipfile.ZIP_STORED) if base_dir != os.curdir: path = os.path.normpath(os.path.join(base_dir, '')) zip.write(path, path) log.info("adding '%s'", path) for dirpath, dirnames, filenames in os.walk(base_dir): for name in dirnames: path = os.path.normpath(os.path.join(dirpath, name, '')) zip.write(path, path) log.info("adding '%s'", path) for name in filenames: path = os.path.normpath(os.path.join(dirpath, name)) if os.path.isfile(path): zip.write(path, path) log.info("adding '%s'", path) zip.close() return zip_filename ARCHIVE_FORMATS = { 'gztar': (make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"), 'bztar': (make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"), 'xztar': (make_tarball, [('compress', 'xz')], "xz'ed tar-file"), 'ztar': (make_tarball, [('compress', 'compress')], "compressed tar file"), 'tar': (make_tarball, [('compress', None)], "uncompressed tar file"), 'zip': (make_zipfile, [],"ZIP file") } def check_archive_formats(formats): """Returns the first format from the 'format' list that is unknown. If all formats are known, returns None """ for format in formats: if format not in ARCHIVE_FORMATS: return format return None def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None): """Create an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. """ save_cwd = os.getcwd() if root_dir is not None: log.debug("changing into '%s'", root_dir) base_name = os.path.abspath(base_name) if not dry_run: os.chdir(root_dir) if base_dir is None: base_dir = os.curdir kwargs = {'dry_run': dry_run} try: format_info = ARCHIVE_FORMATS[format] except KeyError: raise ValueError("unknown archive format '%s'" % format) func = format_info[0] for arg, val in format_info[1]: kwargs[arg] = val if format != 'zip': kwargs['owner'] = owner kwargs['group'] = group try: filename = func(base_name, base_dir, **kwargs) finally: if root_dir is not None: log.debug("changing back to '%s'", save_cwd) os.chdir(save_cwd) return filename PKD]FO7J7Jcommand/sdist.pynu["""distutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).""" import os import sys from glob import glob from warnings import warn from distutils.core import Command from distutils import dir_util from distutils import file_util from distutils import archive_util from distutils.text_file import TextFile from distutils.filelist import FileList from distutils import log from distutils.util import convert_path from distutils.errors import DistutilsTemplateError, DistutilsOptionError def show_formats(): """Print all possible values for the 'formats' option (used by the "--help-formats" command-line option). """ from distutils.fancy_getopt import FancyGetopt from distutils.archive_util import ARCHIVE_FORMATS formats = [] for format in ARCHIVE_FORMATS.keys(): formats.append(("formats=" + format, None, ARCHIVE_FORMATS[format][2])) formats.sort() FancyGetopt(formats).print_help( "List of available source distribution formats:") class sdist(Command): description = "create a source distribution (tarball, zip file, etc.)" def checking_metadata(self): """Callable used for the check sub-command. Placed here so user_options can view it""" return self.metadata_check user_options = [ ('template=', 't', "name of manifest template file [default: MANIFEST.in]"), ('manifest=', 'm', "name of manifest file [default: MANIFEST]"), ('use-defaults', None, "include the default file set in the manifest " "[default; disable with --no-defaults]"), ('no-defaults', None, "don't include the default file set"), ('prune', None, "specifically exclude files/directories that should not be " "distributed (build tree, RCS/CVS dirs, etc.) " "[default; disable with --no-prune]"), ('no-prune', None, "don't automatically exclude anything"), ('manifest-only', 'o', "just regenerate the manifest and then stop " "(implies --force-manifest)"), ('force-manifest', 'f', "forcibly regenerate the manifest and carry on as usual. " "Deprecated: now the manifest is always regenerated."), ('formats=', None, "formats for source distribution (comma-separated list)"), ('keep-temp', 'k', "keep the distribution tree around after creating " + "archive file(s)"), ('dist-dir=', 'd', "directory to put the source distribution archive(s) in " "[default: dist]"), ('metadata-check', None, "Ensure that all required elements of meta-data " "are supplied. Warn if any missing. [default]"), ('owner=', 'u', "Owner name used when creating a tar file [default: current user]"), ('group=', 'g', "Group name used when creating a tar file [default: current group]"), ] boolean_options = ['use-defaults', 'prune', 'manifest-only', 'force-manifest', 'keep-temp', 'metadata-check'] help_options = [ ('help-formats', None, "list available distribution formats", show_formats), ] negative_opt = {'no-defaults': 'use-defaults', 'no-prune': 'prune' } sub_commands = [('check', checking_metadata)] READMES = ('README', 'README.txt', 'README.rst') def initialize_options(self): # 'template' and 'manifest' are, respectively, the names of # the manifest template and manifest file. self.template = None self.manifest = None # 'use_defaults': if true, we will include the default file set # in the manifest self.use_defaults = 1 self.prune = 1 self.manifest_only = 0 self.force_manifest = 0 self.formats = ['gztar'] self.keep_temp = 0 self.dist_dir = None self.archive_files = None self.metadata_check = 1 self.owner = None self.group = None def finalize_options(self): if self.manifest is None: self.manifest = "MANIFEST" if self.template is None: self.template = "MANIFEST.in" self.ensure_string_list('formats') bad_format = archive_util.check_archive_formats(self.formats) if bad_format: raise DistutilsOptionError( "unknown archive format '%s'" % bad_format) if self.dist_dir is None: self.dist_dir = "dist" def run(self): # 'filelist' contains the list of files that will make up the # manifest self.filelist = FileList() # Run sub commands for cmd_name in self.get_sub_commands(): self.run_command(cmd_name) # Do whatever it takes to get the list of files to process # (process the manifest template, read an existing manifest, # whatever). File list is accumulated in 'self.filelist'. self.get_file_list() # If user just wanted us to regenerate the manifest, stop now. if self.manifest_only: return # Otherwise, go ahead and create the source distribution tarball, # or zipfile, or whatever. self.make_distribution() def check_metadata(self): """Deprecated API.""" warn("distutils.command.sdist.check_metadata is deprecated, \ use the check command instead", PendingDeprecationWarning) check = self.distribution.get_command_obj('check') check.ensure_finalized() check.run() def get_file_list(self): """Figure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. """ # new behavior when using a template: # the file list is recalculated every time because # even if MANIFEST.in or setup.py are not changed # the user might have added some files in the tree that # need to be included. # # This makes --force the default and only behavior with templates. template_exists = os.path.isfile(self.template) if not template_exists and self._manifest_is_not_generated(): self.read_manifest() self.filelist.sort() self.filelist.remove_duplicates() return if not template_exists: self.warn(("manifest template '%s' does not exist " + "(using default file list)") % self.template) self.filelist.findall() if self.use_defaults: self.add_defaults() if template_exists: self.read_template() if self.prune: self.prune_file_list() self.filelist.sort() self.filelist.remove_duplicates() self.write_manifest() def add_defaults(self): """Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. """ self._add_defaults_standards() self._add_defaults_optional() self._add_defaults_python() self._add_defaults_data_files() self._add_defaults_ext() self._add_defaults_c_libs() self._add_defaults_scripts() @staticmethod def _cs_path_exists(fspath): """ Case-sensitive path existence check >>> sdist._cs_path_exists(__file__) True >>> sdist._cs_path_exists(__file__.upper()) False """ if not os.path.exists(fspath): return False # make absolute so we always have a directory abspath = os.path.abspath(fspath) directory, filename = os.path.split(abspath) return filename in os.listdir(directory) def _add_defaults_standards(self): standards = [self.READMES, self.distribution.script_name] for fn in standards: if isinstance(fn, tuple): alts = fn got_it = False for fn in alts: if self._cs_path_exists(fn): got_it = True self.filelist.append(fn) break if not got_it: self.warn("standard file not found: should have one of " + ', '.join(alts)) else: if self._cs_path_exists(fn): self.filelist.append(fn) else: self.warn("standard file '%s' not found" % fn) def _add_defaults_optional(self): optional = ['test/test*.py', 'setup.cfg'] for pattern in optional: files = filter(os.path.isfile, glob(pattern)) self.filelist.extend(files) def _add_defaults_python(self): # build_py is used to get: # - python modules # - files defined in package_data build_py = self.get_finalized_command('build_py') # getting python files if self.distribution.has_pure_modules(): self.filelist.extend(build_py.get_source_files()) # getting package_data files # (computed in build_py.data_files by build_py.finalize_options) for pkg, src_dir, build_dir, filenames in build_py.data_files: for filename in filenames: self.filelist.append(os.path.join(src_dir, filename)) def _add_defaults_data_files(self): # getting distribution.data_files if self.distribution.has_data_files(): for item in self.distribution.data_files: if isinstance(item, str): # plain file item = convert_path(item) if os.path.isfile(item): self.filelist.append(item) else: # a (dirname, filenames) tuple dirname, filenames = item for f in filenames: f = convert_path(f) if os.path.isfile(f): self.filelist.append(f) def _add_defaults_ext(self): if self.distribution.has_ext_modules(): build_ext = self.get_finalized_command('build_ext') self.filelist.extend(build_ext.get_source_files()) def _add_defaults_c_libs(self): if self.distribution.has_c_libraries(): build_clib = self.get_finalized_command('build_clib') self.filelist.extend(build_clib.get_source_files()) def _add_defaults_scripts(self): if self.distribution.has_scripts(): build_scripts = self.get_finalized_command('build_scripts') self.filelist.extend(build_scripts.get_source_files()) def read_template(self): """Read and parse manifest template file named by self.template. (usually "MANIFEST.in") The parsing and processing is done by 'self.filelist', which updates itself accordingly. """ log.info("reading manifest template '%s'", self.template) template = TextFile(self.template, strip_comments=1, skip_blanks=1, join_lines=1, lstrip_ws=1, rstrip_ws=1, collapse_join=1) try: while True: line = template.readline() if line is None: # end of file break try: self.filelist.process_template_line(line) # the call above can raise a DistutilsTemplateError for # malformed lines, or a ValueError from the lower-level # convert_path function except (DistutilsTemplateError, ValueError) as msg: self.warn("%s, line %d: %s" % (template.filename, template.current_line, msg)) finally: template.close() def prune_file_list(self): """Prune off branches that might slip into the file list as created by 'read_template()', but really don't belong there: * the build tree (typically "build") * the release tree itself (only an issue if we ran "sdist" previously with --keep-temp, or it aborted) * any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories """ build = self.get_finalized_command('build') base_dir = self.distribution.get_fullname() self.filelist.exclude_pattern(None, prefix=build.build_base) self.filelist.exclude_pattern(None, prefix=base_dir) if sys.platform == 'win32': seps = r'/|\\' else: seps = '/' vcs_dirs = ['RCS', 'CVS', r'\.svn', r'\.hg', r'\.git', r'\.bzr', '_darcs'] vcs_ptrn = r'(^|%s)(%s)(%s).*' % (seps, '|'.join(vcs_dirs), seps) self.filelist.exclude_pattern(vcs_ptrn, is_regex=1) def write_manifest(self): """Write the file list in 'self.filelist' (presumably as filled in by 'add_defaults()' and 'read_template()') to the manifest file named by 'self.manifest'. """ if self._manifest_is_not_generated(): log.info("not writing to manually maintained " "manifest file '%s'" % self.manifest) return content = self.filelist.files[:] content.insert(0, '# file GENERATED by distutils, do NOT edit') self.execute(file_util.write_file, (self.manifest, content), "writing manifest file '%s'" % self.manifest) def _manifest_is_not_generated(self): # check for special comment used in 3.1.3 and higher if not os.path.isfile(self.manifest): return False fp = open(self.manifest) try: first_line = fp.readline() finally: fp.close() return first_line != '# file GENERATED by distutils, do NOT edit\n' def read_manifest(self): """Read the manifest file (named by 'self.manifest') and use it to fill in 'self.filelist', the list of files to include in the source distribution. """ log.info("reading manifest file '%s'", self.manifest) manifest = open(self.manifest) for line in manifest: # ignore comments and blank lines line = line.strip() if line.startswith('#') or not line: continue self.filelist.append(line) manifest.close() def make_release_tree(self, base_dir, files): """Create the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. """ # Create all the directories under 'base_dir' necessary to # put 'files' there; the 'mkpath()' is just so we don't die # if the manifest happens to be empty. self.mkpath(base_dir) dir_util.create_tree(base_dir, files, dry_run=self.dry_run) # And walk over the list of files, either making a hard link (if # os.link exists) to each one that doesn't already exist in its # corresponding location under 'base_dir', or copying each file # that's out-of-date in 'base_dir'. (Usually, all files will be # out-of-date, because by default we blow away 'base_dir' when # we're done making the distribution archives.) if hasattr(os, 'link'): # can make hard links on this system link = 'hard' msg = "making hard links in %s..." % base_dir else: # nope, have to copy link = None msg = "copying files to %s..." % base_dir if not files: log.warn("no files to distribute -- empty manifest?") else: log.info(msg) for file in files: if not os.path.isfile(file): log.warn("'%s' not a regular file -- skipping", file) else: dest = os.path.join(base_dir, file) self.copy_file(file, dest, link=link) self.distribution.metadata.write_pkg_info(base_dir) def make_distribution(self): """Create the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. """ # Don't warn about missing meta-data here -- should be (and is!) # done elsewhere. base_dir = self.distribution.get_fullname() base_name = os.path.join(self.dist_dir, base_dir) self.make_release_tree(base_dir, self.filelist.files) archive_files = [] # remember names of files we create # tar archive must be created last to avoid overwrite and remove if 'tar' in self.formats: self.formats.append(self.formats.pop(self.formats.index('tar'))) for fmt in self.formats: file = self.make_archive(base_name, fmt, base_dir=base_dir, owner=self.owner, group=self.group) archive_files.append(file) self.distribution.dist_files.append(('sdist', '', file)) self.archive_files = archive_files if not self.keep_temp: dir_util.remove_tree(base_dir, dry_run=self.dry_run) def get_archive_files(self): """Return the list of archive files created when the command was run, or None if the command hasn't run yet. """ return self.archive_files PKD]FyLL2command/__pycache__/bdist_msi.cpython-36.opt-1.pycnu[3 \@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sFeZdZdZddZddZddd Zdd d ZdddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs>tj|f||jd}d|d}|jdd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr3/usr/lib64/python3.6/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|jddddddd|dS) z,Set the title text of the dialog at the top.Title i@<iz{\VerdanaBold10}%sN)r )rtitlerrrr #szPyDialog.titleBackc Cs,|r d}nd}|j|d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr"8) pushbuttonr)rr nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}|j|d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}|j|d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@sz PyDialog.nextc Cs,|j|t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN)r!r")r.r")r0r") __name__ __module__ __qualname____doc__rr r-r/r)r4rrrrrs  rc@seZdZdZdCdddefdEdGdHdIdJdKdLdMg ZddddgZddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1gZd2Zd3d4Z d5d6Z d7d8Z d9d:Z d;d<Z d=d>Zd?d@ZdAdBZdS)N bdist_msiz7create a Microsoft Installer (.msi) binary distribution bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archivetarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo;do not compile .py to .pyo (optimized) on the target system dist-dir=d-directory to put final built distributions in skip-build2skip rebuilding everything (for testing/debugging)install-script=Ubasename of installation script to be run after installation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|jdd |jdkr2|jdj}tjj|d|_t}|j rP|j j rP||_|jr|jg|_ |j r|j j r|j|krt d|fn t|j|_ |jdd d |jrt d|jrx2|j jD]}|jtjj|krPqWt d|jd|_dS) NZbdistrUZmsizMtarget version can only be %s, or the '--skip-build' option must be specifiedrTrQz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)rUrU)rTrT)rQrQ)Zset_undefined_optionsrPget_finalized_command bdist_baseospathjoinrrS distributionhas_ext_modulesrXrUrlist all_versionsrWrVscriptsbasenameinstall_script_key)rr[Z short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCsz|js|jd|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|spdt j dd}d |j |f}|jd}tjj|jd ||_tjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|r"tj||jj }|j!} | s<|j"} | sFd } |j#} dt$| j%} |jj}|j r~d|j |f} nd|} t&j'|t(| t&j)| | |_*t&j+|j*t,d| fg} |j-p|j.}|r| j/d|f|j0r| j/d|j0f| rt1|j*d| |j2|j3|j4|j5|j*j6t7|jdr^d|j pJd|f}|jj8j/||j9svt:|j|j;ddS)Nbuildinstallr")Zreinit_subcommandsr install_libz%d.%dz.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr9any)dry_run)| jd?d9d@d;dAd=dB| j d2d6d2dC} | j dDdEt|dF||||||d2d2d2 } | jdG| jd4d2dd5| jd6d7dd5| jd8d9d:d;dz [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogrjZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderrZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?Z AdminInstallzGSelect whether to install [ProductName] for all users of this computer.zInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"z({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rr)rr)rr)rr)rr)rr)rrrNr)rrrNr")rrrNr")rrrrr)rrr)rrr)rrr)rrr)rNr)rrr rrrr r-r/r)ZeventZcontrolrr(mappingr_rxrXrZ conditionr4Z radiogroupadd)rrxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalrAZ user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrs                                                                zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tjj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rSrQr\r]r^rT)rrZ base_namerrrrrys  z bdist_msi.get_installer_filename)r:Nr;Pkeep the pseudo-installation tree around after creating the distribution archive)r=r>r6require a specific python version on the target system)r?Nr)r@rArB)rCrDrE)rFrGrH)rINrJ)rKNrL)rMNrN)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrbrrYrfrwrrrrryrrrrr9SsR    ([66&@r9)r8rsr\Zdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrr r r r r rrrr9rrrrs       >PKD]1command/__pycache__/__init__.cpython-36.opt-2.pycnu[3 \@s.dddddddddd d d d d dddddgZdS)ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__all__rr2/usr/lib64/python3.6/distutils/command/__init__.pys$PKD]x 3command/__pycache__/install_egg_info.cpython-36.pycnu[3 \+ @sddZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@s:eZdZdZdZdgZddZdd Zd d Zd d Z dS)install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file install-dir=ddirectory to install tocCs d|_dS)N) install_dir)selfr :/usr/lib64/python3.6/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|jdddtt|jjtt|jjftjdd}t j j |j ||_ |j g|_dS)NZ install_libr z%s-%s-py%d.%d.egg-info)r r )Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinr targetoutputs)r basenamer r r finalize_optionss z!install_egg_info.finalize_optionsc Cs|j}tjj|r2tjj| r2tj||jdnNtjj|rX|j tj |jfd|n(tjj|j s|j tj |j fd|j t jd||jst|ddd}|jjj|WdQRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkr makedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s   zinstall_egg_info.runcCs|jS)N)r)r r r r get_outputs.szinstall_egg_info.get_outputsN)rrr) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr'r(r r r r r s rcCstjdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. z[^A-Za-z0-9.]+-)resub)namer r r r6srcCs|jdd}tjdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .z[^A-Za-z0-9.]+r-)replacer.r/)versionr r r r>s rcCs |jddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r-_)r3)r0r r r rHsr) r,Z distutils.cmdrZ distutilsrrrrr.rrrrr r r r s + PKD]2 a׃.command/__pycache__/clean.cpython-36.opt-1.pycnu[3 \ @sDdZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZddZddZddZdS)cleanz-clean up temporary files from 'build' command build-base=b2base build directory (default: 'build.build-base') build-lib=Ns    PKD]g222command/__pycache__/bdist_rpm.cpython-36.opt-1.pycnu[3 \T@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc+@seZdZdZdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddg)Zd4d9d=d2dUgZd4d9d=dXZdYdZZd[d\Zd]d^Z d_d`Z dadbZ dcddZ dedfZ dS) bdist_rpmzcreate an RPM distribution bdist-base=N/base directory for creating built distributions rpm-base=dbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2) dist-dir=dDdirectory to put final RPM files in (and .spec files if --spec-only)python=Mpath to Python interpreter to hard-code in the .spec file (default: "python") fix-pythonLhard-code the exact path to the current Python interpreter in the .spec file spec-onlyonly regenerate spec file source-onlyonly generate source RPM binary-onlyonly generate binary RPM use-bzip27use bzip2 instead of gzip to create source distributiondistribution-name=gname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)group=9package classification [default: "Development/Libraries"]release=RPM release numberserial=RPM serial numbervendor=aRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script] packager=BRPM packager (eg. "Jane Doe ") [default: vendor] doc-files=6list of documentation files (space or comma-separated) changelog= RPM changelogicon=name of icon file provides=%capabilities provided by this package requires=%capabilities required by this package conflicts=-capabilities which conflict with this packagebuild-requires=+capabilities required to build this package obsoletes=*capabilities made obsolete by this package no-autoreq+do not automatically calculate dependencies keep-tempk"don't clean up RPM build directory no-keep-temp&clean up RPM build directory [default]use-rpm-opt-flags8compile with RPM_OPT_FLAGS when building from source RPMno-rpm-opt-flags&do not pass any RPM CFLAGS to compiler rpm3-mode"RPM 3 compatibility mode (default) rpm2-modeRPM 2 compatibility mode prep-script=3Specify a script for the PREP phase of RPM building build-script=4Specify a script for the BUILD phase of RPM building pre-install=:Specify a script for the pre-INSTALL phase of RPM buildinginstall-script=6Specify a script for the INSTALL phase of RPM building post-install=;Specify a script for the post-INSTALL phase of RPM buildingpre-uninstall=rnroREADME README.txtrk1rlrirprqrrrsrtrurvrwrxryrzr|r}r~rrr)rr)Z ensure_stringrZ get_contactZget_contact_emailZensure_string_list isinstancerolistrrexistsappend_format_changelogrpZensure_filename)rZreadmerrrrs>                         zbdist_rpm.finalize_package_datac Cstrsz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %sVendorPackagerProvidesRequires Conflicts Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESr{rr&%setup -n %{name}-%{unmangled_version}ZbuildrsZinstallrtcleanrurm -rf $RPM_BUILD_ROOT verifyscriptrvprerwpostrxpreunrypostunrz%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)rrrrrr)r{rrr)rrur)rrvN)rrwN)rrxN)rryN)rrzN)'rrZ get_versionreplacerkZget_description subprocessZ getoutputr splitlinesrrrhZ get_licenserjrrgetattrlowerrrZget_urlrirrqrrrrZget_long_descriptionrcrargvropenreadrrorp)rZ spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultrrrrs                   zbdist_rpm._make_spec_filecCs|s|Sg}x`|jjdD]N}|j}|ddkrD|jd|gq|ddkr\|j|q|jd|qW|ds||d=|S)zKFormat the changelog correctly and convert it to a list of strings rrrrrz )rrrr)rrpZ new_changelogrrrrr3s   zbdist_rpm._format_changelog)r Nr )r Nr )rrr)rNr)rNr)rNr)rNr)rNr)rNr)rNr)rNr )r!Nr")r#Nr$)r%Nr&)r'Nr()r)Nr*)r+Nr,)r-Nr.)r/Nr0)r1Nr2)r3Nr4)r5Nr6)r7Nr8)r9Nr:)r;r<r=)r>Nr?)r@NrA)rBNrC)rDNrE)rFNrG)rHNrI)rJNrK)rLNrM)rNNrO)rPNrQ)rRNrS)rTNrU)rVNrW)rXNrY)rZNr[)r\r]r^)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrrrrrrrrrrr s--)r )__doc__rrrZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs      PKD]k2command/__pycache__/install_scripts.cpython-36.pycnu[3 \@sDdZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@sLeZdZdZddddgZdd gZddZddZddZddZ ddZ d S)install_scriptsz%install scripts (Python or otherwise) install-dir=ddirectory to install scripts to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files) skip-buildNskip the build stepscCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfr9/usr/lib64/python3.6/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |jdd |jdd d d dS) NZbuild build_scriptsrZinstallrrr r)rr)rr)r r )rr)Zset_undefined_options)rrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|jd|j|j|j|_tjdkrxT|jD]H}|j rNt j d|q6tj |t dBd@}t j d||tj||q6WdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)rZ run_commandZ copy_treerroutfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s  zinstall_scripts.runcCs |jjp gS)N)Z distributionscripts)rrrr get_inputs8szinstall_scripts.get_inputscCs |jpgS)N)r)rrrrr;szinstall_scripts.get_outputs)rrr)r r r )r r r)rNr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr$r&rrrrrrsr) __doc__rZdistutils.corerZ distutilsrr rrrrrrs    PKD]2 a׃(command/__pycache__/clean.cpython-36.pycnu[3 \ @sDdZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZddZddZddZdS)cleanz-clean up temporary files from 'build' command build-base=b2base build directory (default: 'build.build-base') build-lib=Ns    PKD]k8command/__pycache__/install_scripts.cpython-36.opt-1.pycnu[3 \@sDdZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@sLeZdZdZddddgZdd gZddZddZddZddZ ddZ d S)install_scriptsz%install scripts (Python or otherwise) install-dir=ddirectory to install scripts to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files) skip-buildNskip the build stepscCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfr9/usr/lib64/python3.6/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |jdd |jdd d d dS) NZbuild build_scriptsrZinstallrrr r)rr)rr)r r )rr)Zset_undefined_options)rrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|jd|j|j|j|_tjdkrxT|jD]H}|j rNt j d|q6tj |t dBd@}t j d||tj||q6WdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)rZ run_commandZ copy_treerroutfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s  zinstall_scripts.runcCs |jjp gS)N)Z distributionscripts)rrrr get_inputs8szinstall_scripts.get_inputscCs |jpgS)N)r)rrrrr;szinstall_scripts.get_outputs)rrr)r r r )r r r)rNr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr$r&rrrrrrsr) __doc__rZdistutils.corerZ distutilsrr rrrrrrs    PKD]`"H-command/__pycache__/bdist_dumb.cpython-36.pycnu[3 \1@shdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZd%dddefd&d(d)d*d+d,d-g Zd ddgZdddZdd Zd!d"Z d#d$Z dS). bdist_dumbz"create a "dumb" built distribution bdist-dir=d1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)format=f>archive format to create (tar, gztar, bztar, xztar, ztar, zip) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=-directory to put final built distributions in skip-buildN2skip rebuilding everything (for testing/debugging)relative7build the archive using relative paths (default: false)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]Zgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr+4/usr/lib64/python3.6/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|jdj}tjj|d|_|jdkrfy|jtj|_Wn"t k rdt dtjYnX|j dddd dS) NZbdistZdumbz@don't know how to create dumb built distributions on platform %sr&r#r')r&r&)r#r#)r'r') r"Zget_finalized_command bdist_baseospathjoinr$default_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)r*r.r+r+r,finalize_options=s   zbdist_dumb.finalize_optionscCs(|js|jd|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j j |j|}|js~|j}nJ|jjr|j|jkrtdt|jt|jfnt j j |jt|j}|j||j||j|jd }|jjrt}nd }|jjjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirr(r)anyr )dry_run) r'Z run_commandZreinitialize_commandr"rootZwarn_dirrinfoZ distributionZ get_fullnamer#r/r0r1r&rZhas_ext_modulesZ install_baseZinstall_platbaser5reprrZ make_archiver$r(r)rZ dist_filesappendr%rr:)r*r7Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionr+r+r,runOs>          zbdist_dumb.run)r r r )rrrPkeep the pseudo-installation tree around after creating the distribution archive)rrrA)rr r)rNr)rNr)rrr)rrr) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr2r-r6r@r+r+r+r,r s6  r )__doc__r/Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r+r+r+r,s    PKD]B.5  /command/__pycache__/install_data.cpython-36.pycnu[3 \ @s<dZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) install_datazinstall data files install-dir=dIbase directory for installing data files (default: installation base dir)root=Ns PKD]1command/__pycache__/register.cpython-36.opt-2.pycnu[3 \-@s`ddlZddlZddlZddlZddlmZddlmZddl Tddl m Z GdddeZ dS)N)warn) PyPIRCCommand)*)logc@seZdZdZejdd gZejdddgZdd d fgZd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZd!ddZdS)"registerz7register the distribution with the Python package indexlist-classifiersN list the valid Trove classifiersstrictBWill stop the registering if the meta-data are not fully compliantverifycheckcCsdS)NT)selfr r 2/usr/lib64/python3.6/distutils/command/register.pyszregister.cCstj|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr )rr r rrs zregister.initialize_optionscCs*tj|d|jfdd}||jjd<dS)Nr)r restructuredtextr )rr)rfinalize_optionsr distributionZcommand_options)rZ check_optionsr r rr$s zregister.finalize_optionscCsX|j|jx|jD]}|j|qW|jr<|jn|jrL|jn|jdS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)rZcmd_namer r rrun+s  z register.runcCs8tdt|jjd}|j|j|_d|_|jdS)Nzddistutils.command.register.check_metadata is deprecated, use the check command insteadr r)rPendingDeprecationWarningrZget_command_objZensure_finalizedr rr)rr r r rcheck_metadata:s zregister.check_metadatacCsz|j}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_dS) Nusernamepassword repositoryrealmTZpypiz%s not found in .pypircF)Z _read_pypircrrr r! has_configZDEFAULT_REPOSITORY ValueError)rconfigr r rrDs     zregister._set_configcCs*|jd}tjj|}tj|j|dS)Nz?:action=list_classifiers)r urllibrequestZurlopenrinfo_read_pypi_response)rZurlZresponser r rrUs  zregister.classifierscCs&|j|jd\}}tjd||dS)Nr zServer response (%s): %s)post_to_serverbuild_post_datarr')rcoderesultr r rr\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}dj}x:||krf|jdtjt}|sTd}q.||kr.tdq.W|dkr|x|std}qtWx|st j d}qWt j j }t j j|jd }|j|j||||j|jd |\}}|jd ||ftj|d kr|jr||j_nj|jd tj|jd|jtjd}x&|jdkr\td}|s8d}q8W|jdkr|j||n|dkrddi} d| d<| d<| d<d| d<x| dstd| d<qWx| d| dkrNx| dst j d| d<qWx| dst j d| d<qW| d| dkrd| d<d| d<tdqWx| dsltd| d<qRW|j| \}}|d krtjd ||ntjdtjdnT|d krdd!i} d| d<x| dstd"| d<qW|j| \}}tjd ||dS)#N1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitzServer response (%s): %szAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2z:actionusernamerZemailZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r"rrsplitannouncerINFOinputprintgetpassr%r&ZHTTPPasswordMgrparseZurlparser Z add_passwordr!r)r*rZ _get_rc_filelowerZ _store_pypircr') rZchoicerrchoicesauthhostr+r,datar r rrcs                     zregister.send_metadatacCs|jj}|d|j|j|j|j|j|j|j|j |j |j |j |j |j|j|jd}|ds|ds|drd|d<|S)Nz1.0)z:actionmetadata_versionr6versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrJrKrLz1.1rD)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)ractionmetarCr r rr*s* zregister.build_post_datacCsd|kr$|jd|d|jftjd}d|}|d}tj}x|jD]\}}t|tgtffkrp|g}xZ|D]R}t|}|j ||j d||j d|j ||rv|dd krv|j d qvWqJW|j ||j d |j j d }d |tt |d } t jj|j|| } t jjt jj|d} d}y| j| } Wnxt jjk r} z$|jrl| jj}| j| jf} WYdd} ~ XnJt jjk r} zdt| f} WYdd} ~ XnX|jr|j| }d} |jrd jdd|ddf}|j|tj| S)Nr6zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--z* Content-Disposition: form-data; name="%s"z r  zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr/ir0OK-K)r0rQ)r9r rr:ioStringIOitemstypestrwritegetvalueencodelenr%r&ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr+msgZURLErrorr(join)rrCrAboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqopenerr,erbr r rr)sV         zregister.post_to_server)rNr)r Nr )N)__name__ __module__ __qualname__rGrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr*r)r r r rrs&  zr) r=rUZ urllib.parser%Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs   PKD]Sn 3command/__pycache__/bdist_dumb.cpython-36.opt-2.pycnu[3 \1@sdddlZddlmZddlmZddlmZmZddlTddl m Z ddl m Z Gdd d eZ dS) N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZd%dddefd&d(d)d*d+d,d-g Zd ddgZdddZdd Zd!d"Z d#d$Z dS). bdist_dumbz"create a "dumb" built distribution bdist-dir=d1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)format=f>archive format to create (tar, gztar, bztar, xztar, ztar, zip) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=-directory to put final built distributions in skip-buildN2skip rebuilding everything (for testing/debugging)relative7build the archive using relative paths (default: false)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]Zgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr+4/usr/lib64/python3.6/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|jdj}tjj|d|_|jdkrfy|jtj|_Wn"t k rdt dtjYnX|j dddd dS) NZbdistZdumbz@don't know how to create dumb built distributions on platform %sr&r#r')r&r&)r#r#)r'r') r"Zget_finalized_command bdist_baseospathjoinr$default_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)r*r.r+r+r,finalize_options=s   zbdist_dumb.finalize_optionscCs(|js|jd|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j j |j|}|js~|j}nJ|jjr|j|jkrtdt|jt|jfnt j j |jt|j}|j||j||j|jd }|jjrt}nd }|jjjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirr(r)anyr )dry_run) r'Z run_commandZreinitialize_commandr"rootZwarn_dirrinfoZ distributionZ get_fullnamer#r/r0r1r&rZhas_ext_modulesZ install_baseZinstall_platbaser5reprrZ make_archiver$r(r)rZ dist_filesappendr%rr:)r*r7Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionr+r+r,runOs>          zbdist_dumb.run)r r r )rrrPkeep the pseudo-installation tree around after creating the distribution archive)rrrA)rr r)rNr)rNr)rrr)rrr) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr2r-r6r@r+r+r+r,r s6  r )r/Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r+r+r+r,s    PKD]x 9command/__pycache__/install_egg_info.cpython-36.opt-1.pycnu[3 \+ @sddZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@s:eZdZdZdZdgZddZdd Zd d Zd d Z dS)install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file install-dir=ddirectory to install tocCs d|_dS)N) install_dir)selfr :/usr/lib64/python3.6/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|jdddtt|jjtt|jjftjdd}t j j |j ||_ |j g|_dS)NZ install_libr z%s-%s-py%d.%d.egg-info)r r )Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinr targetoutputs)r basenamer r r finalize_optionss z!install_egg_info.finalize_optionsc Cs|j}tjj|r2tjj| r2tj||jdnNtjj|rX|j tj |jfd|n(tjj|j s|j tj |j fd|j t jd||jst|ddd}|jjj|WdQRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkr makedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s   zinstall_egg_info.runcCs|jS)N)r)r r r r get_outputs.szinstall_egg_info.get_outputsN)rrr) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr'r(r r r r r s rcCstjdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. z[^A-Za-z0-9.]+-)resub)namer r r r6srcCs|jdd}tjdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .z[^A-Za-z0-9.]+r-)replacer.r/)versionr r r r>s rcCs |jddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r-_)r3)r0r r r rHsr) r,Z distutils.cmdrZ distutilsrrrrr.rrrrr r r r s + PKD]zL.command/__pycache__/bdist.cpython-36.opt-1.pycnu[3 \@sHdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCsTddlm}g}x,tjD]"}|jd|dtj|dfqW||}|jddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptzformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr //usr/lib64/python3.6/distutils/command/bdist.py show_formats s   rc @seZdZdZd6dddefd7d8d9d:d;gZdgZdd defgZdd?d@dAdBdCdDdEd/ Z d0d1Z d2d3Zd4d5Zd S)Frz$create a built (binary) distribution bdist-base=b4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s)formats=N/formats for distribution (comma-separated list) dist-dir=d=directory to put final built distributions in [default: dist] skip-build2skip rebuilding everything (for testing/debugging)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz$lists available distribution formats bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsiRPM distribution bdist_dumbgzip'ed tar filebzip2'ed tar filexz'ed tar filecompressed tar filetar file bdist_wininstWindows executable installerZIP file bdist_msiMicrosoft Installer) r&r"r'r(r)r*r+r#r,cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfr r rinitialize_optionsQszbdist.initialize_optionsc Cs|jdkr(|jrt|_n|jdj|_|jdkrT|jdj}tjj|d|j|_|j d|j dkry|j tj g|_ Wn"t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r:r<rZget_finalized_commandr9 build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr;)r?rAr r rfinalize_optionsZs$       zbdist.finalize_optionsc Csg}xH|jD]>}y|j|j|dWq tk rHtd|Yq Xq Wxztt|jD]h}||}|j|}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ |j |q^WdS)Nrzinvalid format '%s'r.r)r r r rGZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r>r=Z keep_tempZ run_command)r?Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"    z bdist.run)rrr)rNr)rrr)rNr)rrr)rrr )r!)r!r-)r.r/)r.r0)r.r1)r.r2)r.r3)r4r5)r.r6)r7r8)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrKrErr r@rHrMr r r rrsJ    r) __doc__rBZdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKD]J%"$"$1command/__pycache__/build_py.cpython-36.opt-2.pycnu[3 \ C@szddlZddlZddlZddlmZddlmZddlTddlm Z m Z ddl m Z GdddeZ Gd d d e e ZdS) N)glob)Command)*) convert_path Mixin2to3)logc@seZdZdZd8d9d:d;dbuild_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr2/usr/lib64/python3.6/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrbx&|jjjD]\}}t||j|<qHW|j|_ t |j t syt |j |_ Wn t tfk rtdYnXdS)NZbuildrrzoptimize must be 0, 1, or 2)rr)rr)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerint ValueErrorAssertionErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s"      zbuild_py.finalize_optionscCs:|jr|j|jr$|j|j|j|jdddS)Nr)include_bytecode)r build_modulesr"build_packagesbuild_package_data byte_compile get_outputs)rrrrrunCs z build_py.runcsg}|js|Sxr|jD]h}|j|}tjj|jg|jd}d|rRt|dfdd|j||D}|j ||||fqW|S)N.rcsg|]}|dqS)Nr).0file)plenrr tsz+build_py.get_data_files..) r"get_package_dirosr+joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r8rr$as   zbuild_py.get_data_filescs`|jjdg|jj|g}gx:|D]2}ttjj|t|}jfdd|Dq&WS)Ncs$g|]}|krtjj|r|qSr)r;r+isfile)r6fn)filesrrr9s z,build_py.find_data_files..)rgetrr;r+r<rextend)rrrBZglobspatternZfilelistr)rHrr?ys  zbuild_py.find_data_filescCshd}x^|jD]T\}}}}xF|D]>}tjj||}|jtjj||jtjj|||ddqWq WdS)NF) preserve_mode)r%r;r+r<mkpathdirname copy_file)rZlastdirrrBrCrDfilenametargetrrrr0s zbuild_py.build_package_datac Cs|jd}|js&|r tjj|SdSng}x|ry|jdj|}Wn*tk rn|jd|d|d=Yq,X|jd|tjj|Sq,W|jjd}|dk r|jd||rtjj|SdSdS)Nr4rErr5rR)r=rr;r+r<KeyErrorinsertrI)rrr+tailZpdirrrrr:s(       zbuild_py.get_package_dircCsj|dkr8tjj|s td|tjj|s8td||rftjj|d}tjj|rZ|Stjd|dS)NrEz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)z8package init file '%s' not found (or not a regular file)) r;r+existsZDistutilsFileErrorisdirr<rFrwarn)rrrinit_pyrrr check_packages    zbuild_py.check_packagecCs&tjj|stjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r;r+rFrrX)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xX|D]P}tjj|}||krztjjtjj |d}|j |||fq8|j d|q8W|S)Nz*.pyrz excluding %s) rZrr;r+r<abspathr!Z script_namesplitextbasenamer@Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr[rrrfind_package_moduless   zbuild_py.find_package_modulesc Csi}g}x|jD]}|jd}dj|dd}|d}y||\}}Wn"tk rj|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)Nr4rr5__init__z.pyrRrR) rr=r<rSr:rZr@r;r+r]) rr"rar[r+rZ module_baserZcheckedrYr\rrr find_moduless*       zbuild_py.find_modulescCsRg}|jr|j|j|jrNx.|jD]$}|j|}|j||}|j|q&W|S)N)rrJrdr"r:rb)rrarrmrrrfind_all_moduless   zbuild_py.find_all_modulescCsdd|jDS)NcSsg|] }|dqS)r5rRr)r6r[rrrr9-sz-build_py.get_source_files..)rf)rrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nz.py)listr;r+r<)rrCrr[Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler5cCs|j}g}xx|D]p\}}}|jd}|j|j||}|j||r|jr`|jtjj|dd|j dkr|jtjj||j dqW|dd|j D7}|S)Nr4rE) optimizationrcSs,g|]$\}}}}|D]}tjj||qqSr)r;r+r<)r6rrBrCrDrPrrrr9Cs z(build_py.get_outputs..) rfr=rirr@r importlibutilcache_from_sourcerr%)rr-raZoutputsrr[r\rPrrrr23s"       zbuild_py.get_outputscCsbt|tr|jd}nt|ttfs,td|j|j||}tj j |}|j ||j ||ddS)Nr4z:'package' must be a string (dot-separated), list, or tupler)rL) r&strr=rhtuple TypeErrorrirr;r+rNrMrO)rr[r\rZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs.|j}x |D]\}}}|j|||qWdS)N)rdrr)rrarr[r\rrrr.Yszbuild_py.build_modulescCsLxF|jD]<}|j|}|j||}x |D]\}}}|j|||q(WqWdS)N)r"r:rbrr)rrrraZpackage_r[r\rrrr/bs   zbuild_py.build_packagescCstjr|jddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r1r5)rrprefixdry_runrR) sysdont_write_bytecoderXdistutils.utilr1rr;sepr rrtr)rrHr1rsrrrr1vs    zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)r5)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr r,r3r$r?r0r:rZr]rbrdrfrgrir2rrr.r/r1rrrrrs8   '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr|j|jr*|j|j|j|j|j|jdddS)Nr)r-) updated_filesrr.r"r/r0Zrun_2to3r1r2)rrrrr3s zbuild_py_2to3.runcCs,tj||||}|dr(|jj|d|S)Nr5r)rrrr}r@)rr[r\rresrrrrrszbuild_py_2to3.build_moduleN)ryrzr{r3rrrrrrr|sr|)r;importlib.utilrkrurZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr|rrrrs   }PKD]B2command/__pycache__/install_headers.cpython-36.pycnu[3 \@s$dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sFeZdZdZddgZdgZdd Zd d Zd d ZddZ ddZ dS)install_headerszinstall C/C++ header files install-dir=d$directory to install header files toforcef-force installation (overwrite existing files)cCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr 9/usr/lib64/python3.6/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|jddddS)NZinstallrr r)rr )rr)Zset_undefined_options)r r r rfinalize_optionssz install_headers.finalize_optionscCsL|jj}|sdS|j|jx*|D]"}|j||j\}}|jj|q"WdS)N) distributionheadersZmkpathr Z copy_filer append)r rheaderout_r r rrun!s  zinstall_headers.runcCs |jjp gS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r )r r r r get_outputs.szinstall_headers.get_outputsN)rrr)rrr ) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrr r r rr s rN)__doc__Zdistutils.corerrr r r rs PKD]^|3|30command/__pycache__/install.cpython-36.opt-2.pycnu[3 _Vjj@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZmZdd lmZdd l mZdd lmZdd lmZd ZddddddZddddddddddddedZerdddddded<ddd d!dded"<d*ZGd(d)d)eZdS)+N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbasent_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userrrrrrc@s:eZdZdZd_d`dadbdddedfdgdidjdkdldmdndodpdqdrgZdd%d(gZer`ejd,dd-efejd,d diZ d.d/Z d0d1Z d2d3Z d4d5Z d6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVdWZdXefdYefdZefd[efd\d]d^fgZdS)sinstallz'install everything from build directoryprefix=Ninstallation prefix exec-prefix=.(Unix only) prefix for platform-specific fileshome=+(Unix only) home directory to install under install-base=;base installation directory (instead of --prefix or --home)install-platbase=z8base installation directory for platform-specific files z$(instead of --exec-prefix or --home)root=|jD]2}|j|}x"|jD]}||kr&|j|q&WqW|jrl|jrl|jtjj|j |jd|S)Nz.pth) rget_finalized_commandrappendrrQrhr}r~r|)rWrrcmdrrXrXrYrbs  zinstall.get_outputscCs2g}x(|jD]}|j|}|j|jqW|S)N)rrextend get_inputs)rWZinputsrrrXrXrYrss  zinstall.get_inputscCs|jjp|jjS)N)rrZhas_pure_modulesZhas_ext_modules)rWrXrXrYhas_libs zinstall.has_libcCs |jjS)N)rr has_headers)rWrXrXrYrszinstall.has_headerscCs |jjS)N)rr has_scripts)rWrXrXrYrszinstall.has_scriptscCs |jjS)N)rrZhas_data_files)rWrXrXrYhas_dataszinstall.has_datarJrIrKrLZinstall_egg_infocCsdS)NTrX)rWrXrXrYszinstall.)rNr)rNr)rNr)r Nr!\base installation directory for platform-specific files (instead of --exec-prefix or --home))r"Nr)r#Nr$)r%Nr&)r'Nr(ginstallation directory for all module distributions (overrides --install-purelib and --install-platlib))r)Nr)r*Nr+)r,Nr-)r.Nr/)r0r1r2)r3Nr4)r5r6r7)r8r9r:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrZboolean_optionsrurrrrZrrkrlrmrrrvrxrzr{rryrrrrrrrrZ sub_commandsrXrXrXrYrIs   N3  " , r)rrrrr)rnrhZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rruZWINDOWS_SCHEMErrrrXrXrXrYsT            PKD]t5353(command/__pycache__/sdist.cpython-36.pycnu[3 \E@sdZddlZddlZddlTddlmZddlmZddlmZddl m Z m Z m Z m Z ddlmZddlTdd lmZdd l mZdd lmZd d ZGdddeZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)*)glob)warn)Command)dir_utildep_util file_util archive_util)TextFile)FileList)log) convert_pathcCsdddlm}ddlm}g}x,|jD] }|jd|d||dfq&W|j||jddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSzformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatr//usr/lib64/python3.6/distutils/command/sdist.py show_formatss   rc@seZdZdZddZdJdKdLdMdNdOdPdQdRdTdUdVdWdXgZd ddddd"gZd*d d+efgZd dd,Z d-efgZ d.d/Z d0d1Z d2d3Z d4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZdHdIZd S)Ysdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_check)selfrrrchecking_metadata%szsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST] use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults] no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list) keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz#list available distribution formats)z no-defaultszno-prunecheckcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr' manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_options`szsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|jdtj|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)rCrBZensure_string_listr Zcheck_archive_formatsrZDistutilsOptionErrorrG)rZ bad_formatrrrfinalize_optionsws      zsdist.finalize_optionscCsBt|_x|jD]}|j|qW|j|jr6dS|jdS)N)r filelistZget_sub_commandsZ run_command get_file_listrEmake_distribution)rZcmd_namerrrrunsz sdist.runcCs*tdt|jjd}|j|jdS)zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr@N)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedrP)rr@rrrcheck_metadatas  zsdist.check_metadatacCstjj|j}| r<|jr<|j|jj|jjdS|sP|j d|j|jj |j rh|j |rt|j |jr|j|jj|jj|jdS)aCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Nz&manifest template '%s' does not exist z(using default file list)z?manifest template '%s' does not exist (using default file list))ospathisfilerB_manifest_is_not_generated read_manifestrMrZremove_duplicatesrfindallrD add_defaults read_templater'prune_file_listwrite_manifest)rZtemplate_existsrrrrNs(      zsdist.get_file_listcCs2d|jjg}x|D]}t|trn|}d}x*|D]"}tjj|r.d}|jj|Pq.W|s|j ddj |qtjj|r|jj|q|j d|qWdd g}x*|D]"}t tjj t |}|jj|qW|jd }|jjr|jj|jx>|jD]4\} } } } x$| D]} |jjtjj | | q WqW|jjrx||jjD]p}t|tr|t|}tjj |r|jj|n:|\}} x0| D](}t|}tjj |r|jj|qWqHW|jjr|jd }|jj|j|jjr|jd }|jj|j|jjr.|jd }|jj|jdS)a9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. README README.txtFTz,standard file not found: should have one of z, zstandard file '%s' not foundz test/test*.pyz setup.cfgbuild_py build_ext build_clib build_scriptsN)r^r_)rRZ script_name isinstancetuplerTrUexistsrMrrjoinfilterrVrextendget_finalized_commandZhas_pure_modulesZget_source_filesZ data_filesZhas_data_filesstrr Zhas_ext_modulesZhas_c_librariesZ has_scripts)rZ standardsfnZaltsZgot_itZoptionalpatternfilesr`ZpkgZsrc_dirZ build_dir filenamesfilenameitemdirnamer/rarbrcrrrrZs\           "         zsdist.add_defaultscCstjd|jt|jddddddd}zlxf|j}|dkrr?)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrKrLrPrSrNrZr[r\r]rWrXrrOrrrrrr!sj  (P *r)__doc__rTr~typesrwarningsrZdistutils.corerZ distutilsrrrr Zdistutils.text_filer Zdistutils.errorsZdistutils.filelistr r Zdistutils.utilr rrrrrrs       PKD]@w.command/__pycache__/bdist.cpython-36.opt-2.pycnu[3 \@sDddlZddlmZddlTddlmZddZGdddeZdS) N)Command)*) get_platformcCsTddlm}g}x,tjD]"}|jd|dtj|dfqW||}|jddS)Nr) FancyGetoptzformats=z'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr //usr/lib64/python3.6/distutils/command/bdist.py show_formats s   rc @seZdZdZd6dddefd7d8d9d:d;gZdgZdd defgZdd?d@dAdBdCdDdEd/ Z d0d1Z d2d3Zd4d5Zd S)Frz$create a built (binary) distribution bdist-base=b4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s)formats=N/formats for distribution (comma-separated list) dist-dir=d=directory to put final built distributions in [default: dist] skip-build2skip rebuilding everything (for testing/debugging)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz$lists available distribution formats bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsiRPM distribution bdist_dumbgzip'ed tar filebzip2'ed tar filexz'ed tar filecompressed tar filetar file bdist_wininstWindows executable installerZIP file bdist_msiMicrosoft Installer) r&r"r'r(r)r*r+r#r,cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfr r rinitialize_optionsQszbdist.initialize_optionsc Cs|jdkr(|jrt|_n|jdj|_|jdkrT|jdj}tjj|d|j|_|j d|j dkry|j tj g|_ Wn"t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r:r<rZget_finalized_commandr9 build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr;)r?rAr r rfinalize_optionsZs$       zbdist.finalize_optionsc Csg}xH|jD]>}y|j|j|dWq tk rHtd|Yq Xq Wxztt|jD]h}||}|j|}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ |j |q^WdS)Nrzinvalid format '%s'r.r)r r r rGZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r>r=Z keep_tempZ run_command)r?Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"    z bdist.run)rrr)rNr)rrr)rNr)rrr)rrr )r!)r!r-)r.r/)r.r0)r.r1)r.r2)r.r3)r4r5)r.r6)r7r8)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrKrErr r@rHrMr r r rrsJ    r)rBZdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKD] (command/__pycache__/build.cpython-36.pycnu[3 \t@sTdZddlZddlZddlmZddlmZddlmZddZ Gdd d eZ dS) zBdistutils.command.build Implements the Distutils 'build' command.N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rr//usr/lib64/python3.6/distutils/command/build.pyr s rc@seZdZdZd8d9d:ddddefd?d@dAdBdCg ZddgZd$dd%efgZd&d'Z d(d)Z d*d+Z d,d-Z d.d/Z d0d1Zd2d3Zd4e fd5e fd6efd7efgZdS)Dbuildz"build everything needed to install build-base=b base directory for build librarybuild-purelib=N2build directory for platform-neutral distributionsbuild-platlib=3build directory for platform-specific distributions build-lib=z9build directory for all distribution (defaults to either zbuild-purelib or build-platlibbuild-scripts=build directory for scripts build-temp=ttemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsdebugg;compile extensions and libraries with debugging informationforcef2forcibly build everything (ignore file timestamps) executable=e5specify final destination interpreter path (build.py)z help-compilerzlist available compilerscCsLd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nrr) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallel)selfrrrinitialize_options8szbuild.initialize_optionsc CsZ|jdkrt|_ntjdkr&tdd|jftjdd}ttdrR|d7}|jdkrntj j |j d|_|j dkrtj j |j d||_ |j dkr|jjr|j |_ n|j|_ |jdkrtj j |j d||_|jdkrtj j |j d tjdd|_|jdkrtj jtj|_t|jtrVyt|j|_Wntk rTtd YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z .%s-%d.%dgettotalrefcountz-pydebuglibZtempz scripts-%d.%dzparallel should be an integer)r,rosnamersys version_infohasattrr'pathjoinr&r(r) distributionZ ext_modulesr*r+r-normpath isinstancer.strint ValueError)r/Zplat_specifierrrrfinalize_optionsHs<                zbuild.finalize_optionscCs x|jD]}|j|q WdS)N)Zget_sub_commandsZ run_command)r/Zcmd_namerrrrunsz build.runcCs |jjS)N)r<has_pure_modules)r/rrrrDszbuild.has_pure_modulescCs |jjS)N)r<has_c_libraries)r/rrrrEszbuild.has_c_librariescCs |jjS)N)r<has_ext_modules)r/rrrrFszbuild.has_ext_modulescCs |jjS)N)r< has_scripts)r/rrrrGszbuild.has_scriptsZbuild_pyZ build_clibZ build_extr+)r r r )r Nr )rNrWbuild directory for all distribution (defaults to either build-purelib or build-platlib)rNrH)rNr)rrr)rrr)rrr)rrr)r r!r")r#r$r%)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr0rBrCrDrErFrGZ sub_commandsrrrrrsR 8 r) __doc__r7r5Zdistutils.corerZdistutils.errorsrZdistutils.utilrrrrrrrs    PKD]>ii.command/__pycache__/check.cpython-36.opt-1.pycnu[3 \x @sdZddlmZddlmZyTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr//usr/lib64/python3.6/distutils/command/check.pyr szSilentReporter.__init__cOs6|jj||||ftj|f|||j|d|S)N)leveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrszSilentReporter.system_message)Nrr r )__name__ __module__ __qualname__r rrrrrr s r TFc@s`eZdZdZdZdddgZddd gZd d ZddZddZ ddZ ddZ ddZ ddZ dS)checkz6This command checks the meta-data of the package. z"perform some checks on the packagemetadatamVerify meta-datarestructuredtextrEChecks if long string meta-data syntax are reStructuredText-compliantstricts(Will exit with an error if a check failscCsd|_d|_d|_d|_dS)z Sets default values for options.rN)r%r"r( _warnings)rrrrinitialize_options1szcheck.initialize_optionscCsdS)Nr)rrrrfinalize_options8szcheck.finalize_optionscCs|jd7_tj||S)z*Counts the number of warnings that occurs.r+)r,rwarn)rmsgrrrr/;sz check.warncCsL|jr|j|jr0tr"|jn|jr0td|jrH|jdkrHtddS)zRuns the command.zThe docutils package is needed.rzPlease correct your package.N)r"check_metadatar% HAS_DOCUTILScheck_restructuredtextr(rr,)rrrrrun@s z check.runcCs|jj}g}x*dD]"}t||o(t||s|j|qW|rP|jddj||jrh|js|jdn"|j r|j s|jdn |jdd S)zEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. nameversionurlzmissing required meta-data: %sz, z)missing meta-data: if 'author' supplied, z#'author_email' must be supplied tooz-missing meta-data: if 'maintainer' supplied, z''maintainer_email' must be supplied tooz4missing meta-data: either (author and author_email) z%or (maintainer and maintainer_email) zmust be suppliedN)r5r6r7zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozYmissing meta-data: either (author and author_email) or (maintainer and maintainer_email) zimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied) distributionr"hasattrgetattrrr/joinZauthorZ author_emailZ maintainerZmaintainer_email)rr"Zmissingattrrrrr1Ps$ zcheck.check_metadatacCs\|jj}xL|j|D]>}|djd}|dkr:|d}nd|d|f}|j|qWdS)z4Checks if the long string fields are reST-compliant.r+lineNz %s (line %s))r8Zget_long_description_check_rst_datagetr/)rdataZwarningr=rrrr3ns  zcheck.check_restructuredtextcCst}t}tjtfdj}d|_d|_d|_t||j |j |j |j |j |jd}tj|||d}|j|d y|j||Wn:tk r}z|jjd d|difWYdd}~XnX|jS) z8Returns warnings when the provided data doesn't compile.)Z componentsN)rrrr)rr+z!Could not finish the parsing: %s.r>r>)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrA source_pathparserZsettingsZreporterrDerrrr?ys*  $zcheck._check_rst_dataN)r"r#r$)r%r&r')r(r)r*)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r?rrrrr!$s  r!N)rJZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs        PKD]p&&.command/__pycache__/sdist.cpython-36.opt-2.pycnu[3 \E@sddlZddlZddlTddlmZddlmZddlmZddlm Z m Z m Z m Z ddl mZddlTddlmZdd lmZdd lmZd d ZGd ddeZdS)N)*)glob)warn)Command)dir_utildep_util file_util archive_util)TextFile)FileList)log) convert_pathcCsdddlm}ddlm}g}x,|jD] }|jd|d||dfq&W|j||jddS)Nr) FancyGetopt)ARCHIVE_FORMATSzformats=z.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatr//usr/lib64/python3.6/distutils/command/sdist.py show_formatss   rc@seZdZdZddZdJdKdLdMdNdOdPdQdRdTdUdVdWdXgZd ddddd"gZd*d d+efgZd dd,Z d-efgZ d.d/Z d0d1Z d2d3Z d4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZdHdIZd S)Ysdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)N)metadata_check)selfrrrchecking_metadata%szsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST] use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults] no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list) keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz#list available distribution formats)z no-defaultszno-prunecheckcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr' manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_options`szsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|jdtj|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)rCrBZensure_string_listr Zcheck_archive_formatsrZDistutilsOptionErrorrG)rZ bad_formatrrrfinalize_optionsws      zsdist.finalize_optionscCsBt|_x|jD]}|j|qW|j|jr6dS|jdS)N)r filelistZget_sub_commandsZ run_command get_file_listrEmake_distribution)rZcmd_namerrrrunsz sdist.runcCs*tdt|jjd}|j|jdS)Nzadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr@)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedrP)rr@rrrcheck_metadatas  zsdist.check_metadatacCstjj|j}| r<|jr<|j|jj|jjdS|sP|j d|j|jj |j rh|j |rt|j |jr|j|jj|jj|jdS)Nz&manifest template '%s' does not exist z(using default file list)z?manifest template '%s' does not exist (using default file list))ospathisfilerB_manifest_is_not_generated read_manifestrMrZremove_duplicatesrfindallrD add_defaults read_templater'prune_file_listwrite_manifest)rZtemplate_existsrrrrNs(      zsdist.get_file_listcCs2d|jjg}x|D]}t|trn|}d}x*|D]"}tjj|r.d}|jj|Pq.W|s|j ddj |qtjj|r|jj|q|j d|qWdd g}x*|D]"}t tjj t |}|jj|qW|jd }|jjr|jj|jx>|jD]4\} } } } x$| D]} |jjtjj | | q WqW|jjrx||jjD]p}t|tr|t|}tjj |r|jj|n:|\}} x0| D](}t|}tjj |r|jj|qWqHW|jjr|jd }|jj|j|jjr|jd }|jj|j|jjr.|jd }|jj|jdS)NREADME README.txtFTz,standard file not found: should have one of z, zstandard file '%s' not foundz test/test*.pyz setup.cfgbuild_py build_ext build_clib build_scripts)r^r_)rRZ script_name isinstancetuplerTrUexistsrMrrjoinfilterrVrextendget_finalized_commandZhas_pure_modulesZget_source_filesZ data_filesZhas_data_filesstrr Zhas_ext_modulesZhas_c_librariesZ has_scripts)rZ standardsfnZaltsZgot_itZoptionalpatternfilesr`ZpkgZsrc_dirZ build_dir filenamesfilenameitemdirnamer/rarbrcrrrrZs\           "         zsdist.add_defaultscCstjd|jt|jddddddd}zlxf|j}|dkrr?)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrKrLrPrSrNrZr[r\r]rWrXrrOrrrrrr!sj  (P *r)rTr~typesrwarningsrZdistutils.corerZ distutilsrrrr Zdistutils.text_filer Zdistutils.errorsZdistutils.filelistr r Zdistutils.utilr rrrrrrs       PKD]>ii(command/__pycache__/check.cpython-36.pycnu[3 \x @sdZddlmZddlmZyTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr//usr/lib64/python3.6/distutils/command/check.pyr szSilentReporter.__init__cOs6|jj||||ftj|f|||j|d|S)N)leveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrszSilentReporter.system_message)Nrr r )__name__ __module__ __qualname__r rrrrrr s r TFc@s`eZdZdZdZdddgZddd gZd d ZddZddZ ddZ ddZ ddZ ddZ dS)checkz6This command checks the meta-data of the package. z"perform some checks on the packagemetadatamVerify meta-datarestructuredtextrEChecks if long string meta-data syntax are reStructuredText-compliantstricts(Will exit with an error if a check failscCsd|_d|_d|_d|_dS)z Sets default values for options.rN)r%r"r( _warnings)rrrrinitialize_options1szcheck.initialize_optionscCsdS)Nr)rrrrfinalize_options8szcheck.finalize_optionscCs|jd7_tj||S)z*Counts the number of warnings that occurs.r+)r,rwarn)rmsgrrrr/;sz check.warncCsL|jr|j|jr0tr"|jn|jr0td|jrH|jdkrHtddS)zRuns the command.zThe docutils package is needed.rzPlease correct your package.N)r"check_metadatar% HAS_DOCUTILScheck_restructuredtextr(rr,)rrrrrun@s z check.runcCs|jj}g}x*dD]"}t||o(t||s|j|qW|rP|jddj||jrh|js|jdn"|j r|j s|jdn |jdd S)zEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. nameversionurlzmissing required meta-data: %sz, z)missing meta-data: if 'author' supplied, z#'author_email' must be supplied tooz-missing meta-data: if 'maintainer' supplied, z''maintainer_email' must be supplied tooz4missing meta-data: either (author and author_email) z%or (maintainer and maintainer_email) zmust be suppliedN)r5r6r7zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozYmissing meta-data: either (author and author_email) or (maintainer and maintainer_email) zimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied) distributionr"hasattrgetattrrr/joinZauthorZ author_emailZ maintainerZmaintainer_email)rr"Zmissingattrrrrr1Ps$ zcheck.check_metadatacCs\|jj}xL|j|D]>}|djd}|dkr:|d}nd|d|f}|j|qWdS)z4Checks if the long string fields are reST-compliant.r+lineNz %s (line %s))r8Zget_long_description_check_rst_datagetr/)rdataZwarningr=rrrr3ns  zcheck.check_restructuredtextcCst}t}tjtfdj}d|_d|_d|_t||j |j |j |j |j |jd}tj|||d}|j|d y|j||Wn:tk r}z|jjd d|difWYdd}~XnX|jS) z8Returns warnings when the provided data doesn't compile.)Z componentsN)rrrr)rr+z!Could not finish the parsing: %s.r>r>)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrA source_pathparserZsettingsZreporterrDerrrr?ys*  $zcheck._check_rst_dataN)r"r#r$)r%r&r')r(r)r*)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r?rrrrr!$s  r!N)rJZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs        PKD]B.5  5command/__pycache__/install_data.cpython-36.opt-1.pycnu[3 \ @s<dZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) install_datazinstall data files install-dir=dIbase directory for installing data files (default: installation base dir)root=Ns PKD]q((1command/__pycache__/build_py.cpython-36.opt-1.pycnu[3 \ C@s~dZddlZddlZddlZddlmZddlmZddlTddl m Z m Z ddl m Z Gdd d eZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)glob)Command)*) convert_path Mixin2to3)logc@seZdZdZd8d9d:d;dbuild_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr2/usr/lib64/python3.6/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrbx&|jjjD]\}}t||j|<qHW|j|_ t |j t syt |j |_ Wn t tfk rtdYnXdS)NZbuildrrzoptimize must be 0, 1, or 2)rr)rr)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerint ValueErrorAssertionErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s"      zbuild_py.finalize_optionscCs:|jr|j|jr$|j|j|j|jdddS)Nr)include_bytecode)r build_modulesr"build_packagesbuild_package_data byte_compile get_outputs)rrrrrunCs z build_py.runcsg}|js|Sxr|jD]h}|j|}tjj|jg|jd}d|rRt|dfdd|j||D}|j ||||fqW|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples.rcsg|]}|dqS)Nr).0file)plenrr tsz+build_py.get_data_files..) r"get_package_dirosr+joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r8rr$as   zbuild_py.get_data_filescs`|jjdg|jj|g}gx:|D]2}ttjj|t|}jfdd|Dq&WS)z6Return filenames for package's data files in 'src_dir'cs$g|]}|krtjj|r|qSr)r;r+isfile)r6fn)filesrrr9s z,build_py.find_data_files..)rgetrr;r+r<rextend)rrrBZglobspatternZfilelistr)rHrr?ys  zbuild_py.find_data_filescCshd}x^|jD]T\}}}}xF|D]>}tjj||}|jtjj||jtjj|||ddqWq WdS)z$Copy data files into build directoryNF) preserve_mode)r%r;r+r<mkpathdirname copy_file)rZlastdirrrBrCrDfilenametargetrrrr0s zbuild_py.build_package_datac Cs|jd}|js&|r tjj|SdSng}x|ry|jdj|}Wn*tk rn|jd|d|d=Yq,X|jd|tjj|Sq,W|jjd}|dk r|jd||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r4rErr5NrR)r=rr;r+r<KeyErrorinsertrI)rrr+tailZpdirrrrr:s(       zbuild_py.get_package_dircCsj|dkr8tjj|s td|tjj|s8td||rftjj|d}tjj|rZ|Stjd|dS)NrEz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)z8package init file '%s' not found (or not a regular file)) r;r+existsZDistutilsFileErrorisdirr<rFrwarn)rrrinit_pyrrr check_packages    zbuild_py.check_packagecCs&tjj|stjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r;r+rFrrX)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xX|D]P}tjj|}||krztjjtjj |d}|j |||fq8|j d|q8W|S)Nz*.pyrz excluding %s) rZrr;r+r<abspathr!Z script_namesplitextbasenamer@Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr[rrrfind_package_moduless   zbuild_py.find_package_modulesc Csi}g}x|jD]}|jd}dj|dd}|d}y||\}}Wn"tk rj|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r4rr5__init__z.pyrRrR) rr=r<rSr:rZr@r;r+r]) rr"rar[r+rZ module_baserZcheckedrYr\rrr find_moduless*       zbuild_py.find_modulescCsRg}|jr|j|j|jrNx.|jD]$}|j|}|j||}|j|q&W|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrJrdr"r:rb)rrarrmrrrfind_all_moduless   zbuild_py.find_all_modulescCsdd|jDS)NcSsg|] }|dqS)r5rRr)r6r[rrrr9-sz-build_py.get_source_files..)rf)rrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nz.py)listr;r+r<)rrCrr[Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler5cCs|j}g}xx|D]p\}}}|jd}|j|j||}|j||r|jr`|jtjj|dd|j dkr|jtjj||j dqW|dd|j D7}|S)Nr4rE) optimizationrcSs,g|]$\}}}}|D]}tjj||qqSr)r;r+r<)r6rrBrCrDrPrrrr9Cs z(build_py.get_outputs..) rfr=rirr@r importlibutilcache_from_sourcerr%)rr-raZoutputsrr[r\rPrrrr23s"       zbuild_py.get_outputscCsbt|tr|jd}nt|ttfs,td|j|j||}tj j |}|j ||j ||ddS)Nr4z:'package' must be a string (dot-separated), list, or tupler)rL) r&strr=rhtuple TypeErrorrirr;r+rNrMrO)rr[r\rZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs.|j}x |D]\}}}|j|||qWdS)N)rdrr)rrarr[r\rrrr.Yszbuild_py.build_modulescCsLxF|jD]<}|j|}|j||}x |D]\}}}|j|||q(WqWdS)N)r"r:rbrr)rrrraZpackage_r[r\rrrr/bs   zbuild_py.build_packagescCstjr|jddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r1r5)rrprefixdry_runrR) sysdont_write_bytecoderXdistutils.utilr1rr;sepr rrtr)rrHr1rsrrrr1vs    zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)r5)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr r,r3r$r?r0r:rZr]rbrdrfrgrir2rrr.r/r1rrrrrs8   '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr|j|jr*|j|j|j|j|j|jdddS)Nr)r-) updated_filesrr.r"r/r0Zrun_2to3r1r2)rrrrr3s zbuild_py_2to3.runcCs,tj||||}|dr(|jj|d|S)Nr5r)rrrr}r@)rr[r\rresrrrrrszbuild_py_2to3.build_moduleN)ryrzr{r3rrrrrrr|sr|)__doc__r;importlib.utilrkrurZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr|rrrrs   }PKD])4command/__pycache__/install_lib.cpython-36.opt-2.pycnu[3 \ @sHddlZddlZddlZddlmZddlmZdZGdddeZ dS)N)Command)DistutilsOptionErrorz.pyc @seZdZdZd*d+d,d-d.d/d0gZdd dgZdd iZddZddZddZ ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)ZdS)1 install_libz7install all Python modules (extensions and pure Python) install-dir=ddirectory to install to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files)compileccompile .py to .pyc [default] no-compileNdon't compile .py files optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0] skip-buildskip the build stepscCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirr roptimize skip_build)selfr5/usr/lib64/python3.6/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|jddddddd|jdkr&d |_|jdkr6d |_t|jtsyt|j|_|jdkr^tWn ttfk rtdYnXdS)Ninstall build_librrrr rrrTFrzoptimize must be 0, 1, or 2)r!r)rr)r r )rr)rr)rr)rr"r#)Zset_undefined_optionsrr isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$     zinstall_lib.finalize_optionscCs0|j|j}|dk r,|jjr,|j|dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVszinstall_lib.runcCs2|js.|jjr|jd|jjr.|jddS)Nbuild_py build_ext)rr*r+Z run_commandhas_ext_modules)rrrrr)fs    zinstall_lib.buildcCs8tjj|jr |j|j|j}n|jd|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarn)rr-rrrr ms  zinstall_lib.installcCsrtjr|jddSddlm}|jdj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r,r )rr prefixdry_run)rr r6verboser7) sysdont_write_bytecoder5Zdistutils.utilr,get_finalized_commandrootrr r7rr8)rfilesr,Z install_rootrrrr,vs     zinstall_lib.byte_compilec Csh|sgS|j|}|j}t||}t|ttj}g}x(|D] } |jtjj|| |dq@W|S)N) r; get_outputsgetattrlenr2sepappendr3join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesrZ prefix_lenZoutputsfilerrr_mutate_outputss    zinstall_lib._mutate_outputscCsvg}xl|D]d}tjjtjj|d}|tkr0q |jrL|jtjj |dd|j dkr |jtjj ||j dq W|S)Nr") optimizationr) r2r3splitextnormcasePYTHON_SOURCE_EXTENSIONrrB importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR|j|jjdd|j}|jr*|j|}ng}|j|jjdd|j}|||S)Nr/r!r0)rEr*r+rrrNr1)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr>s   zinstall_lib.get_outputscCsLg}|jjr&|jd}|j|j|jjrH|jd}|j|j|S)Nr/r0)r*r+r;extendr>r1)rZinputsr/r0rrr get_inputss    zinstall_lib.get_inputs)rrr)rr r )r r r )rrr)rNr)rrr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr(r.r)r r,rErNr>rPrrrrrs*   r) r2importlib.utilrKr9Zdistutils.corerZdistutils.errorsrrJrrrrrs   PKD]88.command/__pycache__/install_lib.cpython-36.pycnu[3 \ @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc @seZdZdZd*d+d,d-d.d/d0gZdd dgZdd iZddZddZddZ ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)ZdS)1 install_libz7install all Python modules (extensions and pure Python) install-dir=ddirectory to install to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files)compileccompile .py to .pyc [default] no-compileNdon't compile .py files optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0] skip-buildskip the build stepscCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirr roptimize skip_build)selfr5/usr/lib64/python3.6/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|jddddddd|jdkr&d |_|jdkr6d |_t|jtsyt|j|_|jdkr^tWn ttfk rtdYnXdS)Ninstall build_librrrr rrrTFrzoptimize must be 0, 1, or 2)r!r)rr)r r )rr)rr)rr)rr"r#)Zset_undefined_optionsrr isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$     zinstall_lib.finalize_optionscCs0|j|j}|dk r,|jjr,|j|dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVszinstall_lib.runcCs2|js.|jjr|jd|jjr.|jddS)Nbuild_py build_ext)rr*r+Z run_commandhas_ext_modules)rrrrr)fs    zinstall_lib.buildcCs8tjj|jr |j|j|j}n|jd|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarn)rr-rrrr ms  zinstall_lib.installcCsrtjr|jddSddlm}|jdj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r,r )rr prefixdry_run)rr r6verboser7) sysdont_write_bytecoder5Zdistutils.utilr,get_finalized_commandrootrr r7rr8)rfilesr,Z install_rootrrrr,vs     zinstall_lib.byte_compilec Csh|sgS|j|}|j}t||}t|ttj}g}x(|D] } |jtjj|| |dq@W|S)N) r; get_outputsgetattrlenr2sepappendr3join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesrZ prefix_lenZoutputsfilerrr_mutate_outputss    zinstall_lib._mutate_outputscCsvg}xl|D]d}tjjtjj|d}|tkr0q |jrL|jtjj |dd|j dkr |jtjj ||j dq W|S)Nr") optimizationr) r2r3splitextnormcasePYTHON_SOURCE_EXTENSIONrrB importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR|j|jjdd|j}|jr*|j|}ng}|j|jjdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r/r!r0)rEr*r+rrrNr1)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr>s   zinstall_lib.get_outputscCsLg}|jjr&|jd}|j|j|jjrH|jd}|j|j|S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r/r0)r*r+r;extendr>r1)rZinputsr/r0rrr get_inputss    zinstall_lib.get_inputs)rrr)rr r )r r r )rrr)rNr)rrr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr(r.r)r r,rErNr>rPrrrrrs*   r) __doc__r2importlib.utilrKr9Zdistutils.corerZdistutils.errorsrrJrrrrrs  PKD]+command/__pycache__/__init__.cpython-36.pycnu[3 \@s2dZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr2/usr/lib64/python3.6/distutils/command/__init__.pys&PKD]FEZ11.command/__pycache__/check.cpython-36.opt-2.pycnu[3 \x @sddlmZddlmZyTddlmZddlmZddlm Z ddlm Z ddl m Z Gdd d eZ d ZWnek rd ZYnXGd d d eZdS))Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr//usr/lib64/python3.6/distutils/command/check.pyr szSilentReporter.__init__cOs6|jj||||ftj|f|||j|d|S)N)leveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrszSilentReporter.system_message)Nrr r )__name__ __module__ __qualname__r rrrrrr s r TFc@s\eZdZdZdddgZdddgZd d Zd dZddZddZ ddZ ddZ ddZ dS)checkz"perform some checks on the packagemetadatamVerify meta-datarestructuredtextrEChecks if long string meta-data syntax are reStructuredText-compliantstricts(Will exit with an error if a check failscCsd|_d|_d|_d|_dS)Nr)r%r"r( _warnings)rrrrinitialize_options1szcheck.initialize_optionscCsdS)Nr)rrrrfinalize_options8szcheck.finalize_optionscCs|jd7_tj||S)Nr+)r,rwarn)rmsgrrrr/;sz check.warncCsL|jr|j|jr0tr"|jn|jr0td|jrH|jdkrHtddS)NzThe docutils package is needed.rzPlease correct your package.)r"check_metadatar% HAS_DOCUTILScheck_restructuredtextr(rr,)rrrrrun@s z check.runcCs|jj}g}x*d D]"}t||o(t||s|j|qW|rP|jddj||jrh|js|jdn"|j r|j s|jdn |jddS)Nnameversionurlzmissing required meta-data: %sz, z)missing meta-data: if 'author' supplied, z#'author_email' must be supplied tooz-missing meta-data: if 'maintainer' supplied, z''maintainer_email' must be supplied tooz4missing meta-data: either (author and author_email) z%or (maintainer and maintainer_email) zmust be supplied)r5r6r7zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozYmissing meta-data: either (author and author_email) or (maintainer and maintainer_email) zimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied) distributionr"hasattrgetattrrr/joinZauthorZ author_emailZ maintainerZmaintainer_email)rr"Zmissingattrrrrr1Ps$ zcheck.check_metadatacCs\|jj}xL|j|D]>}|djd}|dkr:|d}nd|d|f}|j|qWdS)Nr+linez %s (line %s))r8Zget_long_description_check_rst_datagetr/)rdataZwarningr=rrrr3ns  zcheck.check_restructuredtextcCst}t}tjtfdj}d|_d|_d|_t||j |j |j |j |j |jd}tj|||d}|j|dy|j||Wn:tk r}z|jjd d|difWYdd}~XnX|jS) N)Z components)rrrr)rr+z!Could not finish the parsing: %s.r>r>)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrA source_pathparserZsettingsZreporterrDerrrr?ys*  $zcheck._check_rst_dataN)r"r#r$)r%r&r')r(r)r*) rrr Z descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r?rrrrr!$s  r!N)Zdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs        PKD]Fq 1command/__pycache__/register.cpython-36.opt-1.pycnu[3 \-@sddZddlZddlZddlZddlZddlmZddlm Z ddl Tddl m Z Gddde Z dS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejdd gZejdddgZdd d fgZd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZd!ddZdS)"registerz7register the distribution with the Python package indexlist-classifiersN list the valid Trove classifiersstrictBWill stop the registering if the meta-data are not fully compliantverifycheckcCsdS)NT)selfr r 2/usr/lib64/python3.6/distutils/command/register.pyszregister.cCstj|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr )rr r rrs zregister.initialize_optionscCs*tj|d|jfdd}||jjd<dS)Nr)r restructuredtextr )rr)rfinalize_optionsr distributionZcommand_options)rZ check_optionsr r rr$s zregister.finalize_optionscCsX|j|jx|jD]}|j|qW|jr<|jn|jrL|jn|jdS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)rZcmd_namer r rrun+s  z register.runcCs8tdt|jjd}|j|j|_d|_|jdS)zDeprecated API.zddistutils.command.register.check_metadata is deprecated, use the check command insteadr rN)rPendingDeprecationWarningrZget_command_objZensure_finalizedr rr)rr r r rcheck_metadata:s zregister.check_metadatacCsz|j}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_d S) z: Reads the configuration file and set attributes. usernamepassword repositoryrealmTZpypiz%s not found in .pypircFN)Z _read_pypircrrr r! has_configZDEFAULT_REPOSITORY ValueError)rconfigr r rrDs     zregister._set_configcCs*|jd}tjj|}tj|j|dS)z8 Fetch the list of classifiers from the server. z?:action=list_classifiersN)r urllibrequestZurlopenrinfo_read_pypi_response)rZurlZresponser r rrUs  zregister.classifierscCs&|j|jd\}}tjd||dS)zF Send the metadata to the package index server to be checked. r zServer response (%s): %sN)post_to_serverbuild_post_datarr')rcoderesultr r rr\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}dj}x:||krf|jdtjt}|sTd}q.||kr.tdq.W|dkr|x|std}qtWx|st j d}qWt j j }t j j|jd }|j|j||||j|jd |\}}|jd ||ftj|d kr|jr||j_nj|jd tj|jd|jtjd}x&|jdkr\td}|s8d}q8W|jdkr|j||n|dkrddi} d| d<| d<| d<d| d<x| dstd| d<qWx| d| dkrNx| dst j d| d<qWx| dst j d| d<qW| d| dkrd| d<d| d<tdqWx| dsltd| d<qRW|j| \}}|d krtjd ||ntjdtjd nT|d!krdd"i} d| d<x| dstd#| d<qW|j| \}}tjd ||dS)$a_ Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. 1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitzServer response (%s): %szAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2z:actionusernamerZemailNZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r"rrsplitannouncerINFOinputprintgetpassr%r&ZHTTPPasswordMgrparseZurlparser Z add_passwordr!r)r*rZ _get_rc_filelowerZ _store_pypircr') rZchoicerrchoicesauthhostr+r,datar r rrcs                     zregister.send_metadatacCs|jj}|d|j|j|j|j|j|j|j|j |j |j |j |j |j|j|jd}|ds|ds|drd|d<|S)Nz1.0)z:actionmetadata_versionr6versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrJrKrLz1.1rD)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)ractionmetarCr r rr*s* zregister.build_post_datacCsd|kr$|jd|d|jftjd}d|}|d}tj}x|jD]\}}t|tgtffkrp|g}xZ|D]R}t|}|j ||j d||j d|j ||rv|dd krv|j d qvWqJW|j ||j d |j j d }d |tt |d } t jj|j|| } t jjt jj|d} d}y| j| } Wnxt jjk r} z$|jrl| jj}| j| jf} WYdd} ~ XnJt jjk r} zdt| f} WYdd} ~ XnX|jr|j| }d} |jrd jdd|ddf}|j|tj| S)zC Post a query to the server, and return a string response. r6zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--z* Content-Disposition: form-data; name="%s"z r  zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr/Nir0OK-K)r0rQ)r9r rr:ioStringIOitemstypestrwritegetvalueencodelenr%r&ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr+msgZURLErrorr(join)rrCrAboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqopenerr,erbr r rr)sV         zregister.post_to_server)rNr)r Nr )N)__name__ __module__ __qualname__rGrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr*r)r r r rrs&  zr)__doc__r=rUZ urllib.parser%Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs   PKD])AA3command/__pycache__/build_clib.cpython-36.opt-2.pycnu[3 \V@sPddlZddlmZddlTddlmZddlmZddZGdd d eZ dS) N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rr4/usr/lib64/python3.6/distutils/command/build_clib.pyrs rc@sleZdZdZd"d#d$d%d&gZdd gZdddefgZddZddZ ddZ ddZ ddZ ddZ d d!ZdS)' build_clibz/build C/C++ libraries used by Python extensions build-clib=b%directory to build C/C++ libraries to build-temp=t,directory to put temporary build by-productsdebugg"compile with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler typez help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompiler)selfrrr initialize_options4szbuild_clib.initialize_optionscCsh|jdddd d d |jj|_|jr0|j|j|jdkrH|jjpDg|_t|jtrd|jjtj |_dS) NZbuildrr rrr)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)r rrr finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|jj|j|j dk rzx |j D]\}}|jj ||q`W|j dk rx|j D]}|jj |qW|j |jdS)Nr) new_compiler)rdry_runr)rrr)rr*rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)r r)namevalueZmacrorrr run^s        zbuild_clib.runcCst|tstdx|D]|}t|t rs    PKD]YY]33,command/__pycache__/bdist_rpm.cpython-36.pycnu[3 \T@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc+@seZdZdZdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddg)Zd4d9d=d2dUgZd4d9d=dXZdYdZZd[d\Zd]d^Z d_d`Z dadbZ dcddZ dedfZ dS) bdist_rpmzcreate an RPM distribution bdist-base=N/base directory for creating built distributions rpm-base=dbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2) dist-dir=dDdirectory to put final RPM files in (and .spec files if --spec-only)python=Mpath to Python interpreter to hard-code in the .spec file (default: "python") fix-pythonLhard-code the exact path to the current Python interpreter in the .spec file spec-onlyonly regenerate spec file source-onlyonly generate source RPM binary-onlyonly generate binary RPM use-bzip27use bzip2 instead of gzip to create source distributiondistribution-name=gname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)group=9package classification [default: "Development/Libraries"]release=RPM release numberserial=RPM serial numbervendor=aRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script] packager=BRPM packager (eg. "Jane Doe ") [default: vendor] doc-files=6list of documentation files (space or comma-separated) changelog= RPM changelogicon=name of icon file provides=%capabilities provided by this package requires=%capabilities required by this package conflicts=-capabilities which conflict with this packagebuild-requires=+capabilities required to build this package obsoletes=*capabilities made obsolete by this package no-autoreq+do not automatically calculate dependencies keep-tempk"don't clean up RPM build directory no-keep-temp&clean up RPM build directory [default]use-rpm-opt-flags8compile with RPM_OPT_FLAGS when building from source RPMno-rpm-opt-flags&do not pass any RPM CFLAGS to compiler rpm3-mode"RPM 3 compatibility mode (default) rpm2-modeRPM 2 compatibility mode prep-script=3Specify a script for the PREP phase of RPM building build-script=4Specify a script for the BUILD phase of RPM building pre-install=:Specify a script for the pre-INSTALL phase of RPM buildinginstall-script=6Specify a script for the INSTALL phase of RPM building post-install=;Specify a script for the post-INSTALL phase of RPM buildingpre-uninstall=rnroREADME README.txtrk1rlrirprqrrrsrtrurvrwrxryrzr|r}r~rrr)rr)Z ensure_stringrZ get_contactZget_contact_emailZensure_string_list isinstancerolistrrexistsappend_format_changelogrpZensure_filename)rZreadmerrrrs>                         zbdist_rpm.finalize_package_datac Cstrsz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %sVendorPackagerProvidesRequires Conflicts Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESr{rr&%setup -n %{name}-%{unmangled_version}ZbuildrsZinstallrtcleanrurm -rf $RPM_BUILD_ROOT verifyscriptrvprerwpostrxpreunrypostunrz%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)rrrrrr)r{rrr)rrur)rrvN)rrwN)rrxN)rryN)rrzN)'rrZ get_versionreplacerkZget_description subprocessZ getoutputr splitlinesrrrhZ get_licenserjrrgetattrlowerrrZget_urlrirrqrrrrZget_long_descriptionrcrargvropenreadrrorp)rZ spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultrrrrs                   zbdist_rpm._make_spec_filecCs|s|Sg}x`|jjdD]N}|j}|ddkrD|jd|gq|ddkr\|j|q|jd|qW|ds||d=|S)zKFormat the changelog correctly and convert it to a list of strings rrrrrz )rrrr)rrpZ new_changelogrrrrr3s   zbdist_rpm._format_changelog)r Nr )r Nr )rrr)rNr)rNr)rNr)rNr)rNr)rNr)rNr)rNr )r!Nr")r#Nr$)r%Nr&)r'Nr()r)Nr*)r+Nr,)r-Nr.)r/Nr0)r1Nr2)r3Nr4)r5Nr6)r7Nr8)r9Nr:)r;r<r=)r>Nr?)r@NrA)rBNrC)rDNrE)rFNrG)rHNrI)rJNrK)rLNrM)rNNrO)rPNrQ)rRNrS)rTNrU)rVNrW)rXNrY)rZNr[)r\r]r^)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrrrrrrrrrrr s--)r )__doc__rrrZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs      PKD]$000.command/__pycache__/clean.cpython-36.opt-2.pycnu[3 \ @s@ddlZddlmZddlmZddlmZGdddeZdS)N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZddZddZddZdS)cleanz-clean up temporary files from 'build' command build-base=b2base build directory (default: 'build.build-base') build-lib=Ns   PKD]iVV/command/__pycache__/config.cpython-36.opt-2.pycnu[3 \3@shddlZddlZddlmZddlmZddlmZddlm Z dddZ Gd d d eZ d d d Z dS)N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZd>d?d@dAdBdCdDdEdFg ZddZddZddZd d!Zd"d#Z d$d%Z d&d'Z d(d)Z d*d+Z dGd-d.ZdHd/d0ZdId1d2ZdJd3d4ZdKd5d6ZdLd8d9Zdddgfd:d;ZdMd  r)LANG_EXTopenwriteclose)r&bodyheaderslangfilenamefileheaderr'r'r(_gen_temp_sourcefileks       zconfig._gen_temp_sourcefilecCs<|j|||}d}|jj||g|jj|||d||fS)Nz _configtest.i)r!)rCr%extendr Z preprocess)r&r=r>r!r?srcoutr'r'r( _preprocessxs zconfig._preprocesscCs\|j|||}|jr"t|d||jj|g\}|jj||g|jj|g|d||fS)Nzcompiling '%s':)r!)rCr$ dump_filer Zobject_filenamesr%rDcompile)r&r=r>r!r?rEobjr'r'r(_compileszconfig._compilec Csr|j||||\}}tjjtjj|d} |jj|g| |||d|jjdk r\| |jj} |jj | ||| fS)Nr)r"r#Z target_lang) rKr-pathsplitextbasenamer Zlink_executableZ exe_extensionr%append) r&r=r>r!r"r#r?rErJprogr'r'r(_links    z config._linkc GsX|s|j}g|_tjddj|x0|D](}ytj|Wq(tk rNYq(Xq(WdS)Nz removing: %s )r%rinfojoinr-removeOSError)r& filenamesr@r'r'r(_cleans z config._cleanrc CsRddlm}|jd}y|j||||Wn|k rDd}YnX|j|S)Nr) CompileErrorTF)r4rYr5rGrX)r&r=r>r!r?rYokr'r'r(try_cpps  zconfig.try_cppc Csx|j|j||||\}}t|tr0tj|}t|}d} x&|j} | dkrPP|j| r>d} Pq>W|j |j | S)NFT) r5rGr*r+rerIr:readlinesearchr<rX) r&patternr=r>r!r?rErFrAmatchliner'r'r( search_cpps    zconfig.search_cppc Csdddlm}|jy|j||||d}Wn|k rDd}YnXtj|rRdpTd|j|S)Nr)rYTFzsuccess!zfailure.)r4rYr5rKrrSrX)r&r=r>r!r?rYrZr'r'r( try_compiles  zconfig.try_compilec Cspddlm}m}|jy|j||||||d} Wn||fk rPd} YnXtj| r^dp`d|j| S)Nr)rY LinkErrorTFzsuccess!zfailure.)r4rYrer5rQrrSrX) r&r=r>r!r"r#r?rYrerZr'r'r(try_links   zconfig.try_linkc Csddlm}m}|jy.|j||||||\} } } |j| gd} Wn||tfk rdd} YnXtj| rrdptd|j | S)Nr)rYreTFzsuccess!zfailure.) r4rYrer5rQZspawnrrrSrX) r&r=r>r!r"r#r?rYrerErJZexerZr'r'r(try_runs   zconfig.try_runrc Cst|jg}|r|jd||jd|r<|jd|n|jd||jddj|d}|j|||||S)Nz int %s ();z int main () {z %s();z %s;}r7)r5rOrTrf) r&funcr>r!r"r#ZdeclZcallr=r'r'r( check_funcs   zconfig.check_funccCs |j|jd|||g||S)Nzint main (void) { })r5rf)r&Zlibraryr#r>r!Zother_librariesr'r'r( check_lib6s  zconfig.check_libcCs|jd|g|dS)Nz /* No body */)r=r>r!)r[)r&rBr!r#r?r'r'r( check_headerDs zconfig.check_header)rNr )r Nr )r r r)rrr)rrr)rrr)rrr)rNr)rNr)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsr)r/r0r5rCrGrKrQrXr[rcrdrfrgrjrkrlr'r'r'r(rsT         rc CsJ|dkrtjd|n tj|t|}ztj|jWd|jXdS)Nz%s)rrSr:readr<)r@headrAr'r'r(rHNs rH)N) r-r]Zdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr9rrHr'r'r'r( s     ;PKD]kk-command/__pycache__/build_clib.cpython-36.pycnu[3 \V@sTdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rr4/usr/lib64/python3.6/distutils/command/build_clib.pyrs rc@sleZdZdZd"d#d$d%d&gZdd gZdddefgZddZddZ ddZ ddZ ddZ ddZ d d!ZdS)' build_clibz/build C/C++ libraries used by Python extensions build-clib=b%directory to build C/C++ libraries to build-temp=t,directory to put temporary build by-productsdebugg"compile with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler typez help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompiler)selfrrr initialize_options4szbuild_clib.initialize_optionscCsh|jdddd d d |jj|_|jr0|j|j|jdkrH|jjpDg|_t|jtrd|jjtj |_dS) NZbuildrr rrr)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)r rrr finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|jj|j|j dk rzx |j D]\}}|jj ||q`W|j dk rx|j D]}|jj |qW|j |jdS)Nr) new_compiler)rdry_runr)rrr)rr*rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)r r)namevalueZmacrorrr run^s        zbuild_clib.runcCst|tstdx|D]|}t|t rs    PKD][' @@,command/__pycache__/build_ext.cpython-36.pycnu[3 \z@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZejd Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r3/usr/lib64/python3.6/distutils/command/build_ext.pyr s r c@seZdZdZdejZd`dad d d efdcdddefdddedfdddefdgdhdidjdkdldmdndodpgZd d%d(d1d8gZ d:d2d;e fgZ dd?Z d@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZejdNdOZdPdQZdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zd2S)q build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s') build-lib=b(directory for compiled extension modules build-temp=t1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s)inplaceiz=ignore build-lib and put compiled extensions into the source z,directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link withz library-dirs=Lz.directories to search for external C librariesrpath=R7directories to search for shared C libraries at runtime link-objects=O2extra explicit link objects to include in the linkdebugg'compile/link with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsswig-cppN)make SWIG create C++ files (default is C) swig-opts=!list of SWIG command line optionsswig=path to the SWIG executableuser#add user include, library and rpathz help-compilerzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsr+r.compilerswigswig_cpp swig_optsr=parallel)selfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|jdd'd(d)d*d+d,d-|jdkr8|jj|_|jj|_|j}|jd d }|j dkrn|jj pjg|_ t |j t r|j j t j|_ tjtjkr|j jt jjtjd |j j|||kr|j j||jd|jd|jdkrg|_|jdkrg|_nt |jt r&|jj t j|_|jdkr:g|_nt |jt rX|jj t j|_t jdkrT|jjt jjtjdtjtjkr|jjt jjtjd|jrt jj|jd|_nt jj|jd|_|j jt jjtttdd}|r|jj||j dkrd}n|j dd}t jjtjd}|rHt jj||}|jj|tj!dddks|tj!dddkrtj"j#t jjtjdr|jjt jjtjddt$dn |jjd|j%d r|j&s|jj|j%d!n |jjd|j'r|j'j d"}d#d$|D|_'|j(r4|j(j d"|_(|j)dkrHg|_)n|j)j d%|_)|j*rt jjt+d }t jjt+d} t jj,|r|j j|t jj,| r|jj| |jj| t |j-t ryt.|j-|_-Wnt/k rt0d&YnXdS).Nr) sysconfigZbuildr@rBrKr+r.rOrA)Z plat_specificincluderGrJntZlibsZDebugZRelease_homewin32ZPCbuildcygwinatheosbinlibpythonconfig.Py_ENABLE_SHAREDLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)r@r@)rBrB)rKrK)r+r+)r.r.)rOrO)rArA)1 distutilsrRZset_undefined_optionsrC distributionZ ext_packageZ ext_modulesr?Zget_python_incrD isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinZensure_string_listrGrHrInameprefixr+rBdirnamergetattrrAplatform executable startswithrget_config_varZ python_buildrErFrNr=r isdirrOint ValueErrorZDistutilsOptionError) rPrRZ py_includeZplat_py_include _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                    (         zbuild_ext.finalize_optionscCstddlm}|jsdS|jjrL|jd}|jj|jp:g|j j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j j|j|jdk r|j j|j|jdk rx |jD]\}}|j j||qW|jdk rx|jD]}|j j|qW|jdk r|j j|j|j dk r4|j j|j |jdk rN|j j|j|j dk rh|j j!|j |j"dS)Nr) new_compiler build_clib)rKverbosedry_runr.rU)#r rr?riZhas_c_librariesget_finalized_commandrGextendZget_library_namesrHrrrrKrrr.rrmrurAr Z initializerDZset_include_dirsrEZ define_macrorFZundefine_macroZ set_librariesZset_library_dirsrIZset_runtime_library_dirsrJZset_link_objectsbuild_extensions)rPrrruvaluemacrorrrruns>             z build_ext.runc Cst|tstdxnt|D]`\}}t|tr4qt|t sLt|dkrTtd|\}}tjd|t|t ozt j |stdt|t stdt||d}x*dD]"}|j |}|dk rt|||qW|j d|_d|krtjd|j d}|rxg|_g|_xj|D]b} t| to,t| dks8tdt| dkrX|jj| dnt| dkr|jj| qW|||<qWdS)aEnsure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sourcesrDrHrG extra_objectsextra_compile_argsextra_link_argsNrIZdef_filez9'def_file' element of build info dict no longer supportedmacrosrSz9'macros' element of build info dict must be 1- or 2-tupler)rDrHrGrrr)rSr)rjlistDistutilsSetupError enumeratertuplelenr warnrkextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrr) rPr?rextext_nameZ build_infokeyvalrrrrrcheck_extensions_listUsT           zbuild_ext.check_extensions_listcCs0|j|jg}x|jD]}|j|jqW|S)N)rr?rr)rP filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs6|j|jg}x |jD]}|j|j|jqW|S)N)rr?rrget_ext_fullpathru)rPZoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(|j|j|jr|jn|jdS)N)rr?rO_build_extensions_parallel_build_extensions_serial)rPrrrrs  zbuild_ext.build_extensionscsj}jdkrtj}yddlm}Wntk r@d}YnX|dkrVjdS||dTfddjD}x6tj|D]&\}}j ||j WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}jj|qSr)Zsubmitbuild_extension)rer)executorrPrrrfsz8build_ext._build_extensions_parallel..) rOrm cpu_countZconcurrent.futuresr ImportErrorrr?zip_filter_build_errorsresult)rPZworkersrZfuturesrZfutr)rrPrrs       z$build_ext._build_extensions_parallelc Cs4x.|jD]$}|j||j|WdQRXqWdS)N)r?rr)rPrrrrrs  z"build_ext._build_extensions_serialccsTy dVWnDtttfk rN}z"|js*|jd|j|fWYdd}~XnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrru)rPrerrrrs zbuild_ext._filter_build_errorsc CsX|j}|dkst|ttf r,td|jt|}|j|j}||j}|jpZt ||dsnt j d|jdSt j d|j|j ||}|jpg}|jdd}x|jD]}|j|fqW|jj||j||j|j ||jd}|dd|_|jr|j|j|jp g}|jp|jj|} |jj|||j||j|j||j ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrrDr+extra_postargsdepends)rGrHrrexport_symbolsr+rBZ target_lang)!rrjrrrrurrr.rr r+info swig_sourcesrrrrrrKcompilerBrDZ_built_objectsrrrlanguageZdetect_languageZlink_shared_object get_librariesrHrget_export_symbols) rPrrext_pathrZ extra_argsrrFZobjectsrrrrrsN         zbuild_ext.build_extensioncCs2g}g}i}|jrtjd|js6d|jks6d|jkr        zbuild_ext.swig_sourcescCs`tjdkrdStjdkrNxBd D]&}tjjd|d}tjj|r|SqWdSntd tjd S) zReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. posixrLrU1.31.21.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s'N)rrr)rmrursrtisfileZDistutilsPlatformError)rPZversfnrrrrfs    zbuild_ext.find_swigcCs|j|}|jd}|j|d}|jsRtjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S) zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). r`rSNrbuild_pyrrr) get_ext_fullnamerlget_ext_filenamerrmrsrtr@rabspathZget_package_dir)rPrfullnameZmodpathfilenamerCrZ package_dirrrrr~s   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNr`)rC)rPrrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|jd}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). r)r|r` EXT_SUFFIX)distutils.sysconfigr|rlrmrsrt)rPrr|rZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCs0d|jjdd}||jkr*|jj||jS)aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. ZPyInit_r`rSr)rurlrrr)rPrZ initfunc_namerrrrs  zbuild_ext.get_export_symbolscCstjdkrfddlm}t|j|s\d}|jr4|d}|tjd?tjd?d@f}|j|gS|jSnRtjd d d krd }|tjd?tjd?d@f}|j|gStjd d d kr>ddl m }d }|tjd?tjd?d@f}g}xB|j dj D]0}|j dr|j|dd n |j|qW|j|dg|StjdkrP|jStjd ddkrj|jSddl m }|j drdjtjd?tjd?d@|j d}|j|gS|jSd S)zReturn the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). rWr) MSVCCompilerz python%d%dZ_dNrYrZz python%d.%dr[)rRSHLIBSz-lrmdarwinaixraz python{}.{}{}ABIFLAGS)roryZdistutils._msvccompilerrrjrKr+ hexversionrGrhrRr|rlr{rrformat)rPrrtemplateZ pythonlibrRZextrar]rrrrsJ             zbuild_ext.get_libraries)rrr)rrriignore build-lib and put compiled extensions into the source directory alongside your pure Python modules)rrr)rrr)rrr )r!r"r#)r%r&r')r(r)r*)r+r,r-)r.r/r0)r1r2r3)r4r5r6)r7Nr8)r9Nr:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrmrnZsep_byr Z user_optionsZboolean_optionsr Z help_optionsrQrrrrrrrr contextlibcontextmanagerrrrrrrrrrrrrrr!s  @N  K6   r)__doc__rrmreroZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rhr Zsiter rrr rrrrrs"       PKD]'W 0command/__pycache__/bdist_wininst.cpython-36.pycnu[3 _Vj<@spdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc@seZdZdZd5dddefd7d9d:d;dd?d@dAdBg ZddddgZejd&kZ d'd(Z d)d*Z d+d,Z d-d.Z dCd/d0Zd1d2Zd3d4ZdS)D bdist_wininstz-create an executable installer for MS Windows bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archivetarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo;do not compile .py to .pyo (optimized) on the target system dist-dir=d-directory to put final built distributions inbitmap=b>bitmap to use for the installer instead of python-powered logotitle=t?title to display on the installer background instead of default skip-build2skip rebuilding everything (for testing/debugging)install-script=Ubasename of installation script to be run after installation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionuser-access-control=specify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr67/usr/lib64/python3.6/distutils/command/bdist_wininst.pyinitialize_options=sz bdist_wininst.initialize_optionscCs|jdd |jdkrR|jr6|jr6|jjd}|j|_|jdj}tj j |d|_|j s^d|_ |j r|jj rt }|j r|j |krtd|f||_ |jdd d |jrx2|jjD]}|jtj j|krPqWtd|jdS) Nbdistr1ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specifiedr.r)z(install_script '%s' not found in scripts)r1r1)r.r.)r)r))Zset_undefined_optionsr(r1r) distributionZget_command_objget_finalized_command bdist_baseospathjoinr-has_ext_modulesrZDistutilsOptionErrorr2scriptsbasename)r5r9r=Z short_versionscriptr6r6r7finalize_optionsMs4      zbdist_wininst.finalize_optionsc Cstjdkr&|jjs|jjr&td|js6|jd|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr|j}|s|jstd d tjdd }d |j |f}|jd}tjj|jd ||_x6dD].}|j}|dkr|d}t|d||qWtjd|j |jtjjdtjj|j d|jtjd=ddlm }|} |jj!} |j"| d|j d} |j#| | |j$|jjrt%} nd} |jj&j'd| |j(| ftj)d| tj*| |j+st,|j |j-ddS)Nr'z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz Should have already checked thisz%d.%dz.%s-%slibpurelibplatlibheadersrBdataz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)rLrMrNrBrO).sysplatformr;rAZhas_c_librariesZDistutilsPlatformErrorr1Z run_commandZreinitialize_commandr(rootZwarn_dirr)compileoptimizer-AssertionError version_infor<r>r?r@Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerP get_fullnameZ make_archive create_exer/rZ dist_filesappendget_installer_filenamedebugremover*rrS) r5rGrIr-Zplat_specifierrFkeyvaluerPZarchive_basenamefullnamearcnameZ pyversionr6r6r7r_ssf                   zbdist_wininst.runc Cs`g}|jj}|jd|jpdd}dd}xJdD]B}t||d}|r2|d|j||f}|jd|||fq2W|jd|jr|jd|j|jd|||jd|j |jd|j |j r|jd|j |j r|jd|j |j p |jj }|jd||ddl }ddl} d|j|j | jf} |jd| dj|S)Nz [metadata]r: cSs |jddS)Nrjz\n)replace)sr6r6r7escapesz)bdist_wininst.get_inidata..escapeauthor author_email description maintainermaintainer_emailnameurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)rnrorprqrrrsrtru)r;metadatarbZlong_descriptiongetattr capitalizer2r+r,r-r4r0r`time distutilsZctime __version__r@) r5linesrvr]rmrsrOr0ryrzZ build_infor6r6r7 get_inidatas<   zbdist_wininst.get_inidatac Csddl}|j|j|j}|j|}|jd||rPt|dj}t|}nd}t|d} | j |j |rz| j |t |t r|j d}|d}|jrt|jddd } | jj d} WdQRX|| d }n|d}| j ||jd d t||} | j | | j t|djdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zr?r@r.r))r5rhrr6r6r7rc's  z$bdist_wininst.get_installer_filenamec Cs t}|jrl|j|krl|jdkr&d}q|jdkr6d}q|jdkrFd}q|jdkrVd}q|jdkrfd }qd }n@yd d lm}Wntk rd }YnX|jd d }|d}tjjt }|j dkr|j dddkr|j dd}nd}tjj |d||f}t |d}z|j S|jXdS)Nz2.4z6.0z7.1z2.5z8.0z3.2z9.0z3.4z10.0z14.0r)CRT_ASSEMBLY_VERSION.z.0r'winr:zwininst-%s%s.exer~)rr-Zmsvcrtr ImportError partitionr>r?dirname__file__r)r@rrclose) r5Z cur_versionZbvrmajorZ directoryZsfixfilenamefr6r6r7r4s8         zbdist_wininst.get_exe_bytes)r Nr Pkeep the pseudo-installation tree around after creating the distribution archive)r rr6require a specific python version on the target system)rNr)rrr)rrr)rrr)rrr)rrr)rNr )r!Nr")r#Nr$)r%Nr&)N)__name__ __module__ __qualname__rprZ user_optionsZboolean_optionsrTrUZ _unsupportedr8rEr_r}rarcrr6r6r6r7r sP &Q. 5 r )__doc__rTr>Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrrzrr r6r6r6r7s    PKD]ل8command/__pycache__/install_headers.cpython-36.opt-2.pycnu[3 \@s ddlmZGdddeZdS))Commandc@sFeZdZdZddgZdgZdd Zd d Zd d ZddZ ddZ dS)install_headerszinstall C/C++ header files install-dir=d$directory to install header files toforcef-force installation (overwrite existing files)cCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr 9/usr/lib64/python3.6/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|jddddS)NZinstallrr r)rr )rr)Zset_undefined_options)r r r rfinalize_optionssz install_headers.finalize_optionscCsL|jj}|sdS|j|jx*|D]"}|j||j\}}|jj|q"WdS)N) distributionheadersZmkpathr Z copy_filer append)r rheaderout_r r rrun!s  zinstall_headers.runcCs |jjp gS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r )r r r r get_outputs.szinstall_headers.get_outputsN)rrr)rrr ) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrr r r rr s rN)Zdistutils.corerrr r r rs PKD]$3Y  9command/__pycache__/install_egg_info.cpython-36.opt-2.pycnu[3 \+ @s`ddlmZddlmZmZddlZddlZddlZGdddeZddZ dd Z d d Z dS) )Command)logdir_utilNc@s6eZdZdZdgZddZddZd d Zd d Zd S)install_egg_infoz8Install package's PKG-INFO metadata as an .egg-info file install-dir=ddirectory to install tocCs d|_dS)N) install_dir)selfr :/usr/lib64/python3.6/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|jdddtt|jjtt|jjftjdd}t j j |j ||_ |j g|_dS)NZ install_libr z%s-%s-py%d.%d.egg-info)r r )Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinr targetoutputs)r basenamer r r finalize_optionss z!install_egg_info.finalize_optionsc Cs|j}tjj|r2tjj| r2tj||jdnNtjj|rX|j tj |jfd|n(tjj|j s|j tj |j fd|j t jd||jst|ddd}|jjj|WdQRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkr makedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s   zinstall_egg_info.runcCs|jS)N)r)r r r r get_outputs.szinstall_egg_info.get_outputsN)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsr rr'r(r r r r r s  rcCstjdd|S)Nz[^A-Za-z0-9.]+-)resub)namer r r r6srcCs|jdd}tjdd|S)N .z[^A-Za-z0-9.]+r,)replacer-r.)versionr r r r>s rcCs |jddS)Nr,_)r2)r/r r r rHsr) Z distutils.cmdrZ distutilsrrrrr-rrrrr r r r s + PKD]yMi5command/__pycache__/install_data.cpython-36.opt-2.pycnu[3 \ @s8ddlZddlmZddlmZmZGdddeZdS)N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) install_datazinstall data files install-dir=dIbase directory for installing data files (default: installation base dir)root=Ns PKD]1command/__pycache__/__init__.cpython-36.opt-1.pycnu[3 \@s2dZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr2/usr/lib64/python3.6/distutils/command/__init__.pys&PKD]I0TJ(J(/command/__pycache__/config.cpython-36.opt-1.pycnu[3 \3@sldZddlZddlZddlmZddlmZddlmZddl m Z ddd Z Gd d d eZ dd d Z dS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZd>d?d@dAdBdCdDdEdFg ZddZddZddZd d!Zd"d#Z d$d%Z d&d'Z d(d)Z d*d+Z dGd-d.ZdHd/d0ZdId1d2ZdJd3d4ZdKd5d6ZdLd8d9Zdddgfd:d;ZdMd  r)LANG_EXTopenwriteclose)r&bodyheaderslangfilenamefileheaderr'r'r(_gen_temp_sourcefileks       zconfig._gen_temp_sourcefilecCs<|j|||}d}|jj||g|jj|||d||fS)Nz _configtest.i)r!)rCr%extendr Z preprocess)r&r=r>r!r?srcoutr'r'r( _preprocessxs zconfig._preprocesscCs\|j|||}|jr"t|d||jj|g\}|jj||g|jj|g|d||fS)Nzcompiling '%s':)r!)rCr$ dump_filer Zobject_filenamesr%rDcompile)r&r=r>r!r?rEobjr'r'r(_compileszconfig._compilec Csr|j||||\}}tjjtjj|d} |jj|g| |||d|jjdk r\| |jj} |jj | ||| fS)Nr)r"r#Z target_lang) rKr-pathsplitextbasenamer Zlink_executableZ exe_extensionr%append) r&r=r>r!r"r#r?rErJprogr'r'r(_links    z config._linkc GsX|s|j}g|_tjddj|x0|D](}ytj|Wq(tk rNYq(Xq(WdS)Nz removing: %s )r%rinfojoinr-removeOSError)r& filenamesr@r'r'r(_cleans z config._cleanrc CsRddlm}|jd}y|j||||Wn|k rDd}YnX|j|S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r) CompileErrorTF)r4rYr5rGrX)r&r=r>r!r?rYokr'r'r(try_cpps  zconfig.try_cppc Csx|j|j||||\}}t|tr0tj|}t|}d} x&|j} | dkrPP|j| r>d} Pq>W|j |j | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r5rGr*r+rerIr:readlinesearchr<rX) r&patternr=r>r!r?rErFrAmatchliner'r'r( search_cpps    zconfig.search_cppc Csdddlm}|jy|j||||d}Wn|k rDd}YnXtj|rRdpTd|j|S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. r)rYTFzsuccess!zfailure.)r4rYr5rKrrSrX)r&r=r>r!r?rYrZr'r'r( try_compiles  zconfig.try_compilec Cspddlm}m}|jy|j||||||d} Wn||fk rPd} YnXtj| r^dp`d|j| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. r)rY LinkErrorTFzsuccess!zfailure.)r4rYrer5rQrrSrX) r&r=r>r!r"r#r?rYrerZr'r'r(try_links   zconfig.try_linkc Csddlm}m}|jy.|j||||||\} } } |j| gd} Wn||tfk rdd} YnXtj| rrdptd|j | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. r)rYreTFzsuccess!zfailure.) r4rYrer5rQZspawnrrrSrX) r&r=r>r!r"r#r?rYrerErJZexerZr'r'r(try_runs   zconfig.try_runrc Cst|jg}|r|jd||jd|r<|jd|n|jd||jddj|d}|j|||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r7)r5rOrTrf) r&funcr>r!r"r#ZdeclZcallr=r'r'r( check_funcs   zconfig.check_funccCs |j|jd|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r5rf)r&Zlibraryr#r>r!Zother_librariesr'r'r( check_lib6s  zconfig.check_libcCs|jd|g|dS)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. z /* No body */)r=r>r!)r[)r&rBr!r#r?r'r'r( check_headerDs zconfig.check_header)rNr )r Nr )r r r)rrr)rrr)rrr)rrr)rNr)rNr)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsr)r/r0r5rCrGrKrQrXr[rcrdrfrgrjrkrlr'r'r'r(rsT         rc CsJ|dkrtjd|n tj|t|}ztj|jWd|jXdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrSr:readr<)r@headrAr'r'r(rHNs rH)N)__doc__r-r]Zdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr9rrHr'r'r'r( s     ;PKD]}5|.command/__pycache__/build.cpython-36.opt-2.pycnu[3 \t@sPddlZddlZddlmZddlmZddlmZddZGdddeZ dS) N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rr//usr/lib64/python3.6/distutils/command/build.pyr s rc@seZdZdZd8d9d:ddddefd?d@dAdBdCg ZddgZd$dd%efgZd&d'Z d(d)Z d*d+Z d,d-Z d.d/Z d0d1Zd2d3Zd4e fd5e fd6efd7efgZdS)Dbuildz"build everything needed to install build-base=b base directory for build librarybuild-purelib=N2build directory for platform-neutral distributionsbuild-platlib=3build directory for platform-specific distributions build-lib=z9build directory for all distribution (defaults to either zbuild-purelib or build-platlibbuild-scripts=build directory for scripts build-temp=ttemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsdebugg;compile extensions and libraries with debugging informationforcef2forcibly build everything (ignore file timestamps) executable=e5specify final destination interpreter path (build.py)z help-compilerzlist available compilerscCsLd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nrr) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallel)selfrrrinitialize_options8szbuild.initialize_optionsc CsZ|jdkrt|_ntjdkr&tdd|jftjdd}ttdrR|d7}|jdkrntj j |j d|_|j dkrtj j |j d||_ |j dkr|jjr|j |_ n|j|_ |jdkrtj j |j d||_|jdkrtj j |j d tjdd|_|jdkrtj jtj|_t|jtrVyt|j|_Wntk rTtd YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z .%s-%d.%dgettotalrefcountz-pydebuglibZtempz scripts-%d.%dzparallel should be an integer)r,rosnamersys version_infohasattrr'pathjoinr&r(r) distributionZ ext_modulesr*r+r-normpath isinstancer.strint ValueError)r/Zplat_specifierrrrfinalize_optionsHs<                zbuild.finalize_optionscCs x|jD]}|j|q WdS)N)Zget_sub_commandsZ run_command)r/Zcmd_namerrrrunsz build.runcCs |jjS)N)r<has_pure_modules)r/rrrrDszbuild.has_pure_modulescCs |jjS)N)r<has_c_libraries)r/rrrrEszbuild.has_c_librariescCs |jjS)N)r<has_ext_modules)r/rrrrFszbuild.has_ext_modulescCs |jjS)N)r< has_scripts)r/rrrrGszbuild.has_scriptsZbuild_pyZ build_clibZ build_extr+)r r r )r Nr )rNrWbuild directory for all distribution (defaults to either build-purelib or build-platlib)rNrH)rNr)rrr)rrr)rrr)rrr)r r!r")r#r$r%)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr0rBrCrDrErFrGZ sub_commandsrrrrrsR 8 r) r7r5Zdistutils.corerZdistutils.errorsrZdistutils.utilrrrrrrrs    PKD]R8#o o 6command/__pycache__/bdist_wininst.cpython-36.opt-1.pycnu[3 _Vj<@spdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc@seZdZdZd5dddefd7d9d:d;dd?d@dAdBg ZddddgZejd&kZ d'd(Z d)d*Z d+d,Z d-d.Z dCd/d0Zd1d2Zd3d4ZdS)D bdist_wininstz-create an executable installer for MS Windows bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archivetarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo;do not compile .py to .pyo (optimized) on the target system dist-dir=d-directory to put final built distributions inbitmap=b>bitmap to use for the installer instead of python-powered logotitle=t?title to display on the installer background instead of default skip-build2skip rebuilding everything (for testing/debugging)install-script=Ubasename of installation script to be run after installation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionuser-access-control=specify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr67/usr/lib64/python3.6/distutils/command/bdist_wininst.pyinitialize_options=sz bdist_wininst.initialize_optionscCs|jdd |jdkrR|jr6|jr6|jjd}|j|_|jdj}tj j |d|_|j s^d|_ |j r|jj rt }|j r|j |krtd|f||_ |jdd d |jrx2|jjD]}|jtj j|krPqWtd|jdS) Nbdistr1ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specifiedr.r)z(install_script '%s' not found in scripts)r1r1)r.r.)r)r))Zset_undefined_optionsr(r1r) distributionZget_command_objget_finalized_command bdist_baseospathjoinr-has_ext_modulesrZDistutilsOptionErrorr2scriptsbasename)r5r9r=Z short_versionscriptr6r6r7finalize_optionsMs4      zbdist_wininst.finalize_optionsc Cstjdkr&|jjs|jjr&td|js6|jd|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr|j}|sd tjdd }d |j |f}|jd}tjj|jd ||_x4dD],}|j}|dkr|d}t|d||qWtjd|j |jtjjdtjj|j d|jtjd=ddlm}|} |jj } |j!| d|j d} |j"| | |j#|jjrt$} nd} |jj%j&d| |j'| ftj(d| tj)| |j*st+|j |j,ddS)Nr'z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz%d.%dz.%s-%slibpurelibplatlibheadersrBdataz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)rLrMrNrBrO)-sysplatformr;rAZhas_c_librariesZDistutilsPlatformErrorr1Z run_commandZreinitialize_commandr(rootZwarn_dirr)compileoptimizer- version_infor<r>r?r@Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerP get_fullnameZ make_archive create_exer/rZ dist_filesappendget_installer_filenamedebugremover*rrS) r5rGrIr-Zplat_specifierrFkeyvaluerPZarchive_basenamefullnamearcnameZ pyversionr6r6r7r^ssd                  zbdist_wininst.runc Cs`g}|jj}|jd|jpdd}dd}xJdD]B}t||d}|r2|d|j||f}|jd|||fq2W|jd|jr|jd|j|jd|||jd|j |jd|j |j r|jd|j |j r|jd|j |j p |jj }|jd||ddl }ddl} d|j|j | jf} |jd| dj|S)Nz [metadata]r: cSs |jddS)Nriz\n)replace)sr6r6r7escapesz)bdist_wininst.get_inidata..escapeauthor author_email description maintainermaintainer_emailnameurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)rmrnrorprqrrrsrt)r;metadataraZlong_descriptiongetattr capitalizer2r+r,r-r4r0r_time distutilsZctime __version__r@) r5linesrur\rlrrrOr0rxryZ build_infor6r6r7 get_inidatas<   zbdist_wininst.get_inidatac Csddl}|j|j|j}|j|}|jd||rPt|dj}t|}nd}t|d} | j |j |rz| j |t |t r|j d}|d}|jrt|jddd } | jj d} WdQRX|| d }n|d}| j ||jd d t||} | j | | j t|djdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zr?r@r.r))r5rgrr6r6r7rb's  z$bdist_wininst.get_installer_filenamec Cs t}|jrl|j|krl|jdkr&d}q|jdkr6d}q|jdkrFd}q|jdkrVd}q|jdkrfd }qd }n@yd d lm}Wntk rd }YnX|jd d }|d}tjjt }|j dkr|j dddkr|j dd}nd}tjj |d||f}t |d}z|j S|jXdS)Nz2.4z6.0z7.1z2.5z8.0z3.2z9.0z3.4z10.0z14.0r)CRT_ASSEMBLY_VERSION.z.0r'winr:zwininst-%s%s.exer})rr-Zmsvcrtr ImportError partitionr>r?dirname__file__r)r@rrclose) r5Z cur_versionZbvrmajorZ directoryZsfixfilenamefr6r6r7r4s8         zbdist_wininst.get_exe_bytes)r Nr Pkeep the pseudo-installation tree around after creating the distribution archive)r rr6require a specific python version on the target system)rNr)rrr)rrr)rrr)rrr)rrr)rNr )r!Nr")r#Nr$)r%Nr&)N)__name__ __module__ __qualname__rorZ user_optionsZboolean_optionsrTrUZ _unsupportedr8rEr^r|r`rbrr6r6r6r7r sP &Q. 5 r )__doc__rTr>Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrryrr r6r6r6r7s    PKD]7///command/__pycache__/upload.cpython-36.opt-2.pycnu[3 _Vj@sddlZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z mZddlmZddlmZddlmZGd d d eZdS) N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZdd Zd d Zd d Z ddZ dS)uploadzupload binary package to PyPIsignssign files to upload using gpg identity=iGPG identity used to sign filescCs,tj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr0/usr/lib64/python3.6/distutils/command/upload.pyr s  zupload.initialize_optionscCsvtj||jr |j r td|j}|ikrX|d|_|d|_|d|_|d|_ |j rr|j jrr|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rconfigrrrr(s     zupload.finalize_optionscCs>|jjsd}t|x$|jjD]\}}}|j|||qWdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc&)Cs^t|j\}}}}}} |s"|s"| r0td|j|d2krDtd||jr|ddd|g} |jrnd|jg| d d <t| |jd t|d } z | j} Wd| j X|j j } d d | j | j tjj|| f||tj| jd| j| j| j| j| j| j| j| j| j| j| j| j| j d}ytj!| j}WnPt"k r}z2d|}|j#|t$j%ddl&m'}|s|WYdd}~Xn X||d<d}|dkrt(j)\}}}|rd||f}n|dkrdt(j(dd}||d<|jrtjj|dt|dd jf|d<|j*d|j+j,d}d t-|j.d}d!}d"|j,d}|d#}t/j0}x|j1D]\}}d$|}t2|t3s|g}xr|D]j}t4|t5kr|d%|d7}|d}nt6|j,d&}|j7||j7|j,d&|j7d'|j7|qWqjW|j7||j8}d(||jf}|j#|t$j%d)|t6t9||d*} t:|j|| d+}!yt;|!}"|"j<}#|"j=}$Wnft>k r}z|j?}#|j=}$WYdd}~Xn8t@k r}z|j#t6|t$jAWYdd}~XnX|#d,kr8|j#d-|#|$ft$j%|jBrZ|jC|"}%d.jDd/d0|%d/d0f}|j#|t$j%n"d1|#|$f}|j#|t$jAtE|dS)3NzIncompatible url %shttphttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper$Z sha256_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesz#calculating md5 checksum failed: %sr) get_fips_modeZ md5_digestrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %s)Ztersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"zutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s -KzUpload failed (%s): %s)r'r()FrrAssertionErrorr rr r*openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZsha256Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesZmd5 ValueErrorZannouncer INFOZ_hashlibr4r3distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvaluelenrrZgetcoder"rcodeOSErrorZERRORrZ_read_pypi_responsejoinr)&rr#r$r%ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr/metar9Zdigester"r4r6rIr.idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler:ZrequestresultZstatusreasontextrrrr!Bs                       zupload.upload_fileN)r rr)rrr) __name__ __module__ __qualname__r1r Z user_optionsZboolean_optionsrrr&r!rrrrr s r )rCrLr3rFbase64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PKD] *dd6command/__pycache__/build_scripts.cpython-36.opt-2.pycnu[3 \X@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z m Z ddlm Z ddlZejdZGd d d eZGd d d ee ZdS) N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line) build-dir=ddirectory to "build" (copy) toforcef1forcibly build everything (ignore file timestamps executable=e*specify final destination interpreter pathcCs"d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfr7/usr/lib64/python3.6/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|jdddd|jj|_dS) NZbuildr rr r)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|jdS)N)r copy_scripts)rrrrrun/szbuild_scripts.runc"Cs|j|jg}g}x,|jD] }d}t|}tjj|jtjj|}|j||j rtt || rtt j d|qyt |d}Wn tk r|jsd}YnXXtj|j\}}|jd|j} | s|jd|qtj| } | rd}| jdpd} |rt jd ||j|j||js tjs2|j} n(tjjtjd d tjd tjd f} tj| } d| | d} y| jdWn$tk rt dj!| YnXy| j|Wn&tk rt dj!| |YnXt |d}|j"| |j#|j$WdQRX|r@|j%q|r*|j%|j||j&||qWtj'dkrxh|D]`}|jrpt jd|nDtj(|t)d@}|dBd@}||krVt jd|||tj*||qVW||fS)NFznot copying %s (up-to-date)rbrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sBINDIRz python%s%sVERSIONEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfilerencodinglinesZ first_liner7Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                  zbuild_scripts.copy_scriptsN)r r r )r rr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&tj|\}}|js|j|||fS)N)r rr0Zrun_2to3)rrrGrrrrs zbuild_scripts_2to3.copy_scriptsN)rKrLrMrrrrrrNsrN)r(rerErZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr1compiler6r rNrrrrs       PKD]Q6command/__pycache__/bdist_wininst.cpython-36.opt-2.pycnu[3 _Vj<@slddlZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gdd d eZdS) N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc@seZdZdZd5dddefd7d9d:d;dd?d@dAdBg ZddddgZejd&kZ d'd(Z d)d*Z d+d,Z d-d.Z dCd/d0Zd1d2Zd3d4ZdS)D bdist_wininstz-create an executable installer for MS Windows bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archivetarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo;do not compile .py to .pyo (optimized) on the target system dist-dir=d-directory to put final built distributions inbitmap=b>bitmap to use for the installer instead of python-powered logotitle=t?title to display on the installer background instead of default skip-build2skip rebuilding everything (for testing/debugging)install-script=Ubasename of installation script to be run after installation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionuser-access-control=specify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr67/usr/lib64/python3.6/distutils/command/bdist_wininst.pyinitialize_options=sz bdist_wininst.initialize_optionscCs|jdd |jdkrR|jr6|jr6|jjd}|j|_|jdj}tj j |d|_|j s^d|_ |j r|jj rt }|j r|j |krtd|f||_ |jdd d |jrx2|jjD]}|jtj j|krPqWtd|jdS) Nbdistr1ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specifiedr.r)z(install_script '%s' not found in scripts)r1r1)r.r.)r)r))Zset_undefined_optionsr(r1r) distributionZget_command_objget_finalized_command bdist_baseospathjoinr-has_ext_modulesrZDistutilsOptionErrorr2scriptsbasename)r5r9r=Z short_versionscriptr6r6r7finalize_optionsMs4      zbdist_wininst.finalize_optionsc Cstjdkr&|jjs|jjr&td|js6|jd|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr|j}|sd tjdd }d |j |f}|jd}tjj|jd ||_x4dD],}|j}|dkr|d}t|d||qWtjd|j |jtjjdtjj|j d|jtjd=ddlm}|} |jj } |j!| d|j d} |j"| | |j#|jjrt$} nd} |jj%j&d| |j'| ftj(d| tj)| |j*st+|j |j,ddS)Nr'z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz%d.%dz.%s-%slibpurelibplatlibheadersrBdataz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)rLrMrNrBrO)-sysplatformr;rAZhas_c_librariesZDistutilsPlatformErrorr1Z run_commandZreinitialize_commandr(rootZwarn_dirr)compileoptimizer- version_infor<r>r?r@Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerP get_fullnameZ make_archive create_exer/rZ dist_filesappendget_installer_filenamedebugremover*rrS) r5rGrIr-Zplat_specifierrFkeyvaluerPZarchive_basenamefullnamearcnameZ pyversionr6r6r7r^ssd                  zbdist_wininst.runc Cs`g}|jj}|jd|jpdd}dd}xJdD]B}t||d}|r2|d|j||f}|jd|||fq2W|jd|jr|jd|j|jd|||jd|j |jd|j |j r|jd|j |j r|jd|j |j p |jj }|jd||ddl }ddl} d|j|j | jf} |jd| dj|S)Nz [metadata]r: cSs |jddS)Nriz\n)replace)sr6r6r7escapesz)bdist_wininst.get_inidata..escapeauthor author_email description maintainermaintainer_emailnameurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)rmrnrorprqrrrsrt)r;metadataraZlong_descriptiongetattr capitalizer2r+r,r-r4r0r_time distutilsZctime __version__r@) r5linesrur\rlrrrOr0rxryZ build_infor6r6r7 get_inidatas<   zbdist_wininst.get_inidatac Csddl}|j|j|j}|j|}|jd||rPt|dj}t|}nd}t|d} | j |j |rz| j |t |t r|j d}|d}|jrt|jddd } | jj d} WdQRX|| d }n|d}| j ||jd d t||} | j | | j t|djdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zr?r@r.r))r5rgrr6r6r7rb's  z$bdist_wininst.get_installer_filenamec Cs t}|jrl|j|krl|jdkr&d}q|jdkr6d}q|jdkrFd}q|jdkrVd}q|jdkrfd }qd }n@yd d lm}Wntk rd }YnX|jd d }|d}tjjt }|j dkr|j dddkr|j dd}nd}tjj |d||f}t |d}z|j S|jXdS)Nz2.4z6.0z7.1z2.5z8.0z3.2z9.0z3.4z10.0z14.0r)CRT_ASSEMBLY_VERSION.z.0r'winr:zwininst-%s%s.exer})rr-Zmsvcrtr ImportError partitionr>r?dirname__file__r)r@rrclose) r5Z cur_versionZbvrmajorZ directoryZsfixfilenamefr6r6r7r4s8         zbdist_wininst.get_exe_bytes)r Nr Pkeep the pseudo-installation tree around after creating the distribution archive)r rr6require a specific python version on the target system)rNr)rrr)rrr)rrr)rrr)rrr)rNr )r!Nr")r#Nr$)r%Nr&)N)__name__ __module__ __qualname__rorZ user_optionsZboolean_optionsrTrUZ _unsupportedr8rEr^r|r`rbrr6r6r6r7r sP &Q. 5 r )rTr>Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrryrr r6r6r6r7s    PKD]I0TJ(J()command/__pycache__/config.cpython-36.pycnu[3 \3@sldZddlZddlZddlmZddlmZddlmZddl m Z ddd Z Gd d d eZ dd d Z dS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZd>d?d@dAdBdCdDdEdFg ZddZddZddZd d!Zd"d#Z d$d%Z d&d'Z d(d)Z d*d+Z dGd-d.ZdHd/d0ZdId1d2ZdJd3d4ZdKd5d6ZdLd8d9Zdddgfd:d;ZdMd  r)LANG_EXTopenwriteclose)r&bodyheaderslangfilenamefileheaderr'r'r(_gen_temp_sourcefileks       zconfig._gen_temp_sourcefilecCs<|j|||}d}|jj||g|jj|||d||fS)Nz _configtest.i)r!)rCr%extendr Z preprocess)r&r=r>r!r?srcoutr'r'r( _preprocessxs zconfig._preprocesscCs\|j|||}|jr"t|d||jj|g\}|jj||g|jj|g|d||fS)Nzcompiling '%s':)r!)rCr$ dump_filer Zobject_filenamesr%rDcompile)r&r=r>r!r?rEobjr'r'r(_compileszconfig._compilec Csr|j||||\}}tjjtjj|d} |jj|g| |||d|jjdk r\| |jj} |jj | ||| fS)Nr)r"r#Z target_lang) rKr-pathsplitextbasenamer Zlink_executableZ exe_extensionr%append) r&r=r>r!r"r#r?rErJprogr'r'r(_links    z config._linkc GsX|s|j}g|_tjddj|x0|D](}ytj|Wq(tk rNYq(Xq(WdS)Nz removing: %s )r%rinfojoinr-removeOSError)r& filenamesr@r'r'r(_cleans z config._cleanrc CsRddlm}|jd}y|j||||Wn|k rDd}YnX|j|S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r) CompileErrorTF)r4rYr5rGrX)r&r=r>r!r?rYokr'r'r(try_cpps  zconfig.try_cppc Csx|j|j||||\}}t|tr0tj|}t|}d} x&|j} | dkrPP|j| r>d} Pq>W|j |j | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r5rGr*r+rerIr:readlinesearchr<rX) r&patternr=r>r!r?rErFrAmatchliner'r'r( search_cpps    zconfig.search_cppc Csdddlm}|jy|j||||d}Wn|k rDd}YnXtj|rRdpTd|j|S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. r)rYTFzsuccess!zfailure.)r4rYr5rKrrSrX)r&r=r>r!r?rYrZr'r'r( try_compiles  zconfig.try_compilec Cspddlm}m}|jy|j||||||d} Wn||fk rPd} YnXtj| r^dp`d|j| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. r)rY LinkErrorTFzsuccess!zfailure.)r4rYrer5rQrrSrX) r&r=r>r!r"r#r?rYrerZr'r'r(try_links   zconfig.try_linkc Csddlm}m}|jy.|j||||||\} } } |j| gd} Wn||tfk rdd} YnXtj| rrdptd|j | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. r)rYreTFzsuccess!zfailure.) r4rYrer5rQZspawnrrrSrX) r&r=r>r!r"r#r?rYrerErJZexerZr'r'r(try_runs   zconfig.try_runrc Cst|jg}|r|jd||jd|r<|jd|n|jd||jddj|d}|j|||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r7)r5rOrTrf) r&funcr>r!r"r#ZdeclZcallr=r'r'r( check_funcs   zconfig.check_funccCs |j|jd|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r5rf)r&Zlibraryr#r>r!Zother_librariesr'r'r( check_lib6s  zconfig.check_libcCs|jd|g|dS)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. z /* No body */)r=r>r!)r[)r&rBr!r#r?r'r'r( check_headerDs zconfig.check_header)rNr )r Nr )r r r)rrr)rrr)rrr)rrr)rNr)rNr)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsr)r/r0r5rCrGrKrQrXr[rcrdrfrgrjrkrlr'r'r'r(rsT         rc CsJ|dkrtjd|n tj|t|}ztj|jWd|jXdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrSr:readr<)r@headrAr'r'r(rHNs rH)N)__doc__r-r]Zdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr9rrHr'r'r'r( s     ;PKD][' @@2command/__pycache__/build_ext.cpython-36.opt-1.pycnu[3 \z@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZejd Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r3/usr/lib64/python3.6/distutils/command/build_ext.pyr s r c@seZdZdZdejZd`dad d d efdcdddefdddedfdddefdgdhdidjdkdldmdndodpgZd d%d(d1d8gZ d:d2d;e fgZ dd?Z d@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZejdNdOZdPdQZdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zd2S)q build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s') build-lib=b(directory for compiled extension modules build-temp=t1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s)inplaceiz=ignore build-lib and put compiled extensions into the source z,directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link withz library-dirs=Lz.directories to search for external C librariesrpath=R7directories to search for shared C libraries at runtime link-objects=O2extra explicit link objects to include in the linkdebugg'compile/link with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsswig-cppN)make SWIG create C++ files (default is C) swig-opts=!list of SWIG command line optionsswig=path to the SWIG executableuser#add user include, library and rpathz help-compilerzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsr+r.compilerswigswig_cpp swig_optsr=parallel)selfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|jdd'd(d)d*d+d,d-|jdkr8|jj|_|jj|_|j}|jd d }|j dkrn|jj pjg|_ t |j t r|j j t j|_ tjtjkr|j jt jjtjd |j j|||kr|j j||jd|jd|jdkrg|_|jdkrg|_nt |jt r&|jj t j|_|jdkr:g|_nt |jt rX|jj t j|_t jdkrT|jjt jjtjdtjtjkr|jjt jjtjd|jrt jj|jd|_nt jj|jd|_|j jt jjtttdd}|r|jj||j dkrd}n|j dd}t jjtjd}|rHt jj||}|jj|tj!dddks|tj!dddkrtj"j#t jjtjdr|jjt jjtjddt$dn |jjd|j%d r|j&s|jj|j%d!n |jjd|j'r|j'j d"}d#d$|D|_'|j(r4|j(j d"|_(|j)dkrHg|_)n|j)j d%|_)|j*rt jjt+d }t jjt+d} t jj,|r|j j|t jj,| r|jj| |jj| t |j-t ryt.|j-|_-Wnt/k rt0d&YnXdS).Nr) sysconfigZbuildr@rBrKr+r.rOrA)Z plat_specificincluderGrJntZlibsZDebugZRelease_homewin32ZPCbuildcygwinatheosbinlibpythonconfig.Py_ENABLE_SHAREDLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)r@r@)rBrB)rKrK)r+r+)r.r.)rOrO)rArA)1 distutilsrRZset_undefined_optionsrC distributionZ ext_packageZ ext_modulesr?Zget_python_incrD isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinZensure_string_listrGrHrInameprefixr+rBdirnamergetattrrAplatform executable startswithrget_config_varZ python_buildrErFrNr=r isdirrOint ValueErrorZDistutilsOptionError) rPrRZ py_includeZplat_py_include _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                    (         zbuild_ext.finalize_optionscCstddlm}|jsdS|jjrL|jd}|jj|jp:g|j j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j j|j|jdk r|j j|j|jdk rx |jD]\}}|j j||qW|jdk rx|jD]}|j j|qW|jdk r|j j|j|j dk r4|j j|j |jdk rN|j j|j|j dk rh|j j!|j |j"dS)Nr) new_compiler build_clib)rKverbosedry_runr.rU)#r rr?riZhas_c_librariesget_finalized_commandrGextendZget_library_namesrHrrrrKrrr.rrmrurAr Z initializerDZset_include_dirsrEZ define_macrorFZundefine_macroZ set_librariesZset_library_dirsrIZset_runtime_library_dirsrJZset_link_objectsbuild_extensions)rPrrruvaluemacrorrrruns>             z build_ext.runc Cst|tstdxnt|D]`\}}t|tr4qt|t sLt|dkrTtd|\}}tjd|t|t ozt j |stdt|t stdt||d}x*dD]"}|j |}|dk rt|||qW|j d|_d|krtjd|j d}|rxg|_g|_xj|D]b} t| to,t| dks8tdt| dkrX|jj| dnt| dkr|jj| qW|||<qWdS)aEnsure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sourcesrDrHrG extra_objectsextra_compile_argsextra_link_argsNrIZdef_filez9'def_file' element of build info dict no longer supportedmacrosrSz9'macros' element of build info dict must be 1- or 2-tupler)rDrHrGrrr)rSr)rjlistDistutilsSetupError enumeratertuplelenr warnrkextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrr) rPr?rextext_nameZ build_infokeyvalrrrrrcheck_extensions_listUsT           zbuild_ext.check_extensions_listcCs0|j|jg}x|jD]}|j|jqW|S)N)rr?rr)rP filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs6|j|jg}x |jD]}|j|j|jqW|S)N)rr?rrget_ext_fullpathru)rPZoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(|j|j|jr|jn|jdS)N)rr?rO_build_extensions_parallel_build_extensions_serial)rPrrrrs  zbuild_ext.build_extensionscsj}jdkrtj}yddlm}Wntk r@d}YnX|dkrVjdS||dTfddjD}x6tj|D]&\}}j ||j WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}jj|qSr)Zsubmitbuild_extension)rer)executorrPrrrfsz8build_ext._build_extensions_parallel..) rOrm cpu_countZconcurrent.futuresr ImportErrorrr?zip_filter_build_errorsresult)rPZworkersrZfuturesrZfutr)rrPrrs       z$build_ext._build_extensions_parallelc Cs4x.|jD]$}|j||j|WdQRXqWdS)N)r?rr)rPrrrrrs  z"build_ext._build_extensions_serialccsTy dVWnDtttfk rN}z"|js*|jd|j|fWYdd}~XnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrru)rPrerrrrs zbuild_ext._filter_build_errorsc CsX|j}|dkst|ttf r,td|jt|}|j|j}||j}|jpZt ||dsnt j d|jdSt j d|j|j ||}|jpg}|jdd}x|jD]}|j|fqW|jj||j||j|j ||jd}|dd|_|jr|j|j|jp g}|jp|jj|} |jj|||j||j|j||j ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrrDr+extra_postargsdepends)rGrHrrexport_symbolsr+rBZ target_lang)!rrjrrrrurrr.rr r+info swig_sourcesrrrrrrKcompilerBrDZ_built_objectsrrrlanguageZdetect_languageZlink_shared_object get_librariesrHrget_export_symbols) rPrrext_pathrZ extra_argsrrFZobjectsrrrrrsN         zbuild_ext.build_extensioncCs2g}g}i}|jrtjd|js6d|jks6d|jkr        zbuild_ext.swig_sourcescCs`tjdkrdStjdkrNxBd D]&}tjjd|d}tjj|r|SqWdSntd tjd S) zReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. posixrLrU1.31.21.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s'N)rrr)rmrursrtisfileZDistutilsPlatformError)rPZversfnrrrrfs    zbuild_ext.find_swigcCs|j|}|jd}|j|d}|jsRtjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S) zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). r`rSNrbuild_pyrrr) get_ext_fullnamerlget_ext_filenamerrmrsrtr@rabspathZget_package_dir)rPrfullnameZmodpathfilenamerCrZ package_dirrrrr~s   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNr`)rC)rPrrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|jd}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). r)r|r` EXT_SUFFIX)distutils.sysconfigr|rlrmrsrt)rPrr|rZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCs0d|jjdd}||jkr*|jj||jS)aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. ZPyInit_r`rSr)rurlrrr)rPrZ initfunc_namerrrrs  zbuild_ext.get_export_symbolscCstjdkrfddlm}t|j|s\d}|jr4|d}|tjd?tjd?d@f}|j|gS|jSnRtjd d d krd }|tjd?tjd?d@f}|j|gStjd d d kr>ddl m }d }|tjd?tjd?d@f}g}xB|j dj D]0}|j dr|j|dd n |j|qW|j|dg|StjdkrP|jStjd ddkrj|jSddl m }|j drdjtjd?tjd?d@|j d}|j|gS|jSd S)zReturn the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). rWr) MSVCCompilerz python%d%dZ_dNrYrZz python%d.%dr[)rRSHLIBSz-lrmdarwinaixraz python{}.{}{}ABIFLAGS)roryZdistutils._msvccompilerrrjrKr+ hexversionrGrhrRr|rlr{rrformat)rPrrtemplateZ pythonlibrRZextrar]rrrrsJ             zbuild_ext.get_libraries)rrr)rrriignore build-lib and put compiled extensions into the source directory alongside your pure Python modules)rrr)rrr)rrr )r!r"r#)r%r&r')r(r)r*)r+r,r-)r.r/r0)r1r2r3)r4r5r6)r7Nr8)r9Nr:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrmrnZsep_byr Z user_optionsZboolean_optionsr Z help_optionsrQrrrrrrrr contextlibcontextmanagerrrrrrrrrrrrrrr!s  @N  K6   r)__doc__rrmreroZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rhr Zsiter rrr rrrrrs"       PKD]'550command/__pycache__/build_scripts.cpython-36.pycnu[3 \X@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZejd ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line) build-dir=ddirectory to "build" (copy) toforcef1forcibly build everything (ignore file timestamps executable=e*specify final destination interpreter pathcCs"d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfr7/usr/lib64/python3.6/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|jdddd|jj|_dS) NZbuildr rr r)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|jdS)N)r copy_scripts)rrrrrun/szbuild_scripts.runc"Cs|j|jg}g}x,|jD] }d}t|}tjj|jtjj|}|j||j rtt || rtt j d|qyt |d}Wn tk r|jsd}YnXXtj|j\}}|jd|j} | s|jd|qtj| } | rd}| jdpd } |rt jd ||j|j||js tjs2|j} n(tjjtjd d tjd tjdf} tj| } d| | d} y| jdWn$tk rt dj!| YnXy| j|Wn&tk rt dj!| |YnXt |d}|j"| |j#|j$WdQRX|r@|j%q|r*|j%|j||j&||qWtj'dkrxh|D]`}|jrpt jd|nDtj(|t)d@}|dBd@}||krVt jd|||tj*||qVW||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sBINDIRz python%s%sVERSIONEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfilerencodinglinesZ first_liner7Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                  zbuild_scripts.copy_scriptsN)r r r )r rr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&tj|\}}|js|j|||fS)N)r rr0Zrun_2to3)rrrGrrrrs zbuild_scripts_2to3.copy_scriptsN)rKrLrMrrrrrrNsrN)__doc__r(rerErZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr1compiler6r rNrrrrs       PKD]޴/command/__pycache__/upload.cpython-36.opt-1.pycnu[3 _Vj@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZdd Zd d Zd d Z ddZ dS)uploadzupload binary package to PyPIsignssign files to upload using gpg identity=iGPG identity used to sign filescCs,tj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr0/usr/lib64/python3.6/distutils/command/upload.pyr s  zupload.initialize_optionscCsvtj||jr |j r td|j}|ikrX|d|_|d|_|d|_|d|_ |j rr|j jrr|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rconfigrrrr(s     zupload.finalize_optionscCs>|jjsd}t|x$|jjD]\}}}|j|||qWdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc&)Cs^t|j\}}}}}} |s"|s"| r0td|j|d2krDtd||jr|ddd|g} |jrnd|jg| d d <t| |jd t|d } z | j} Wd| j X|j j } d d | j | j tjj|| f||tj| jd| j| j| j| j| j| j| j| j| j| j| j| j| j d}ytj!| j}WnPt"k r}z2d|}|j#|t$j%ddl&m'}|s|WYdd}~Xn X||d<d}|dkrt(j)\}}}|rd||f}n|dkrdt(j(dd}||d<|jrtjj|dt|dd jf|d<|j*d|j+j,d}d t-|j.d}d!}d"|j,d}|d#}t/j0}x|j1D]\}}d$|}t2|t3s|g}xr|D]j}t4|t5kr|d%|d7}|d}nt6|j,d&}|j7||j7|j,d&|j7d'|j7|qWqjW|j7||j8}d(||jf}|j#|t$j%d)|t6t9||d*} t:|j|| d+}!yt;|!}"|"j<}#|"j=}$Wnft>k r}z|j?}#|j=}$WYdd}~Xn8t@k r}z|j#t6|t$jAWYdd}~XnX|#d,kr8|j#d-|#|$ft$j%|jBrZ|jC|"}%d.jDd/d0|%d/d0f}|j#|t$j%n"d1|#|$f}|j#|t$jAtE|dS)3NzIncompatible url %shttphttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper$Z sha256_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesz#calculating md5 checksum failed: %sr) get_fips_modeZ md5_digestrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %s)Ztersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"zutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s -KzUpload failed (%s): %s)r'r()FrrAssertionErrorr rr r*openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZsha256Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesZmd5 ValueErrorZannouncer INFOZ_hashlibr4r3distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvaluelenrrZgetcoder"rcodeOSErrorZERRORrZ_read_pypi_responsejoinr)&rr#r$r%ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr/metar9Zdigester"r4r6rIr.idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler:ZrequestresultZstatusreasontextrrrr!Bs                       zupload.upload_fileN)r rr)rrr) __name__ __module__ __qualname__r1r Z user_optionsZboolean_optionsrrr&r!rrrrr s r )__doc__rCrLr3rFbase64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PKD]27M7M,command/__pycache__/bdist_msi.cpython-36.pycnu[3 \@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sFeZdZdZddZddZddd Zdd d ZdddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs>tj|f||jd}d|d}|jdd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr3/usr/lib64/python3.6/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|jddddddd|dS) z,Set the title text of the dialog at the top.Title i@<iz{\VerdanaBold10}%sN)r )rtitlerrrr #szPyDialog.titleBackc Cs,|r d}nd}|j|d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr"8) pushbuttonr)rr nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}|j|d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}|j|d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@sz PyDialog.nextc Cs,|j|t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN)r!r")r.r")r0r") __name__ __module__ __qualname____doc__rr r-r/r)r4rrrrrs  rc@seZdZdZdCdddefdEdGdHdIdJdKdLdMg ZddddgZddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1gZd2Zd3d4Z d5d6Z d7d8Z d9d:Z d;d<Z d=d>Zd?d@ZdAdBZdS)N bdist_msiz7create a Microsoft Installer (.msi) binary distribution bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archivetarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo;do not compile .py to .pyo (optimized) on the target system dist-dir=d-directory to put final built distributions in skip-build2skip rebuilding everything (for testing/debugging)install-script=Ubasename of installation script to be run after installation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|jdd |jdkr2|jdj}tjj|d|_t}|j rP|j j rP||_|jr|jg|_ |j r|j j r|j|krt d|fn t|j|_ |jdd d |jrt d|jrx2|j jD]}|jtjj|krPqWt d|jd|_dS) NZbdistrUZmsizMtarget version can only be %s, or the '--skip-build' option must be specifiedrTrQz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)rUrU)rTrT)rQrQ)Zset_undefined_optionsrPget_finalized_command bdist_baseospathjoinrrS distributionhas_ext_modulesrXrUrlist all_versionsrWrVscriptsbasenameinstall_script_key)rr[Z short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCs|js|jd|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|s~|jslt ddt j dd }d |j|f}|jd}tjj|jd ||_tjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|r0tj ||jj!}|j"} | sJ|j#} | sTd} |j$} dt%| j&} |jj}|j rd|j |f} nd|} t'j(|t)| t'j*| | |_+t'j,|j+t-d| fg} |j.p|j/}|r| j0d|f|j1r| j0d|j1f| rt2|j+d| |j3|j4|j5|j6|j+j7t8|jdrld|j pXd|f}|jj9j0||j:st;|j|j| jd?d9d@d;dAd=dB| j d2d6d2dC} | j dDdEt|dF||||||d2d2d2 } | jdG| jd4d2dd5| jd6d7dd5| jd8d9d:d;dz [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogrjZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderrZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?Z AdminInstallzGSelect whether to install [ProductName] for all users of this computer.zInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"z({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rr)rr)rr)rr)rr)rr)rrrNr)rrrNr")rrrNr")rrrrr)rrr)rrr)rrr)rrr)rNr)rrr rrrr r-r/r)ZeventZcontrolrr(mappingr_ryrXrZ conditionr4Z radiogroupadd)rrxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalrAZ user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrs                                                                zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tjj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rSrQr\r]r^rT)rrZ base_namerrrrrzs  z bdist_msi.get_installer_filename)r:Nr;Pkeep the pseudo-installation tree around after creating the distribution archive)r=r>r6require a specific python version on the target system)r?Nr)r@rArB)rCrDrE)rFrGrH)rINrJ)rKNrL)rMNrN)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrbrrYrfrxrrrrrzrrrrr9SsR    ([66&@r9)r8rtr\Zdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrr r r r r rrrr9rrrrs       >PKD]t5353.command/__pycache__/sdist.cpython-36.opt-1.pycnu[3 \E@sdZddlZddlZddlTddlmZddlmZddlmZddl m Z m Z m Z m Z ddlmZddlTdd lmZdd l mZdd lmZd d ZGdddeZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)*)glob)warn)Command)dir_utildep_util file_util archive_util)TextFile)FileList)log) convert_pathcCsdddlm}ddlm}g}x,|jD] }|jd|d||dfq&W|j||jddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSzformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatr//usr/lib64/python3.6/distutils/command/sdist.py show_formatss   rc@seZdZdZddZdJdKdLdMdNdOdPdQdRdTdUdVdWdXgZd ddddd"gZd*d d+efgZd dd,Z d-efgZ d.d/Z d0d1Z d2d3Z d4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZdHdIZd S)Ysdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_check)selfrrrchecking_metadata%szsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST] use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults] no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list) keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz#list available distribution formats)z no-defaultszno-prunecheckcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr' manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_options`szsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|jdtj|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)rCrBZensure_string_listr Zcheck_archive_formatsrZDistutilsOptionErrorrG)rZ bad_formatrrrfinalize_optionsws      zsdist.finalize_optionscCsBt|_x|jD]}|j|qW|j|jr6dS|jdS)N)r filelistZget_sub_commandsZ run_command get_file_listrEmake_distribution)rZcmd_namerrrrunsz sdist.runcCs*tdt|jjd}|j|jdS)zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr@N)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedrP)rr@rrrcheck_metadatas  zsdist.check_metadatacCstjj|j}| r<|jr<|j|jj|jjdS|sP|j d|j|jj |j rh|j |rt|j |jr|j|jj|jj|jdS)aCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Nz&manifest template '%s' does not exist z(using default file list)z?manifest template '%s' does not exist (using default file list))ospathisfilerB_manifest_is_not_generated read_manifestrMrZremove_duplicatesrfindallrD add_defaults read_templater'prune_file_listwrite_manifest)rZtemplate_existsrrrrNs(      zsdist.get_file_listcCs2d|jjg}x|D]}t|trn|}d}x*|D]"}tjj|r.d}|jj|Pq.W|s|j ddj |qtjj|r|jj|q|j d|qWdd g}x*|D]"}t tjj t |}|jj|qW|jd }|jjr|jj|jx>|jD]4\} } } } x$| D]} |jjtjj | | q WqW|jjrx||jjD]p}t|tr|t|}tjj |r|jj|n:|\}} x0| D](}t|}tjj |r|jj|qWqHW|jjr|jd }|jj|j|jjr|jd }|jj|j|jjr.|jd }|jj|jdS)a9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. README README.txtFTz,standard file not found: should have one of z, zstandard file '%s' not foundz test/test*.pyz setup.cfgbuild_py build_ext build_clib build_scriptsN)r^r_)rRZ script_name isinstancetuplerTrUexistsrMrrjoinfilterrVrextendget_finalized_commandZhas_pure_modulesZget_source_filesZ data_filesZhas_data_filesstrr Zhas_ext_modulesZhas_c_librariesZ has_scripts)rZ standardsfnZaltsZgot_itZoptionalpatternfilesr`ZpkgZsrc_dirZ build_dir filenamesfilenameitemdirnamer/rarbrcrrrrZs\           "         zsdist.add_defaultscCstjd|jt|jddddddd}zlxf|j}|dkrr?)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrKrLrPrSrNrZr[r\r]rWrXrrOrrrrrr!sj  (P *r)__doc__rTr~typesrwarningsrZdistutils.corerZ distutilsrrrr Zdistutils.text_filer Zdistutils.errorsZdistutils.filelistr r Zdistutils.utilr rrrrrrs       PKD]zL(command/__pycache__/bdist.cpython-36.pycnu[3 \@sHdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCsTddlm}g}x,tjD]"}|jd|dtj|dfqW||}|jddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptzformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr //usr/lib64/python3.6/distutils/command/bdist.py show_formats s   rc @seZdZdZd6dddefd7d8d9d:d;gZdgZdd defgZdd?d@dAdBdCdDdEd/ Z d0d1Z d2d3Zd4d5Zd S)Frz$create a built (binary) distribution bdist-base=b4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s)formats=N/formats for distribution (comma-separated list) dist-dir=d=directory to put final built distributions in [default: dist] skip-build2skip rebuilding everything (for testing/debugging)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz$lists available distribution formats bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsiRPM distribution bdist_dumbgzip'ed tar filebzip2'ed tar filexz'ed tar filecompressed tar filetar file bdist_wininstWindows executable installerZIP file bdist_msiMicrosoft Installer) r&r"r'r(r)r*r+r#r,cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfr r rinitialize_optionsQszbdist.initialize_optionsc Cs|jdkr(|jrt|_n|jdj|_|jdkrT|jdj}tjj|d|j|_|j d|j dkry|j tj g|_ Wn"t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r:r<rZget_finalized_commandr9 build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr;)r?rAr r rfinalize_optionsZs$       zbdist.finalize_optionsc Csg}xH|jD]>}y|j|j|dWq tk rHtd|Yq Xq Wxztt|jD]h}||}|j|}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ |j |q^WdS)Nrzinvalid format '%s'r.r)r r r rGZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r>r=Z keep_tempZ run_command)r?Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"    z bdist.run)rrr)rNr)rrr)rNr)rrr)rrr )r!)r!r-)r.r/)r.r0)r.r1)r.r2)r.r3)r4r5)r.r6)r7r8)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrKrErr r@rHrMr r r rrsJ    r) __doc__rBZdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKD];PoSFF2command/__pycache__/bdist_msi.cpython-36.opt-2.pycnu[3 \@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGd ddeZdS)N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sBeZdZddZddZdddZdd d Zdd dZddZdS)PyDialogcOs>tj|f||jd}d|d}|jdd||jddS)N$iHZ BottomLiner)r__init__hlinew)selfargskwZrulerZbmwidthr3/usr/lib64/python3.6/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|jddddddd|dS)NTitle i@<iz{\VerdanaBold10}%s)r )rtitlerrrr #szPyDialog.titleBackc Cs,|r d}nd}|j|d|jddd|||S)Nr"8) pushbuttonr)rr nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}|j|d|jddd|||S)Nr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}|j|d|jddd|||S)Nr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@sz PyDialog.nextc Cs,|j|t|j|d|jdddd||S)Nr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN)r!r")r.r")r0r") __name__ __module__ __qualname__rr r-r/r)r4rrrrrs   rc@seZdZdZdCdddefdEdGdHdIdJdKdLdMg ZddddgZddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1gZd2Zd3d4Z d5d6Z d7d8Z d9d:Z d;d<Z d=d>Zd?d@ZdAdBZdS)N bdist_msiz7create a Microsoft Installer (.msi) binary distribution bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archivetarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo;do not compile .py to .pyo (optimized) on the target system dist-dir=d-directory to put final built distributions in skip-build2skip rebuilding everything (for testing/debugging)install-script=Ubasename of installation script to be run after installation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|jdd |jdkr2|jdj}tjj|d|_t}|j rP|j j rP||_|jr|jg|_ |j r|j j r|j|krt d|fn t|j|_ |jdd d |jrt d|jrx2|j jD]}|jtjj|krPqWt d|jd|_dS) NZbdistrTZmsizMtarget version can only be %s, or the '--skip-build' option must be specifiedrSrPz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)rTrT)rSrS)rPrP)Zset_undefined_optionsrOget_finalized_command bdist_baseospathjoinrrR distributionhas_ext_modulesrWrTrlist all_versionsrVrUscriptsbasenameinstall_script_key)rrZZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCsz|js|jd|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|spdt j dd}d |j |f}|jd}tjj|jd ||_tjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|r"tj||jj }|j!} | s<|j"} | sFd } |j#} dt$| j%} |jj}|j r~d|j |f} nd|} t&j'|t(| t&j)| | |_*t&j+|j*t,d| fg} |j-p|j.}|r| j/d|f|j0r| j/d|j0f| rt1|j*d| |j2|j3|j4|j5|j*j6t7|jdr^d|j pJd|f}|jj8j/||j9svt:|j|j;ddS)Nbuildinstallr")Zreinit_subcommandsr install_libz%d.%dz.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr8any)dry_run)| jd?d9d@d;dAd=dB| j d2d6d2dC} | j dDdEt|dF||||||d2d2d2 } | jdG| jd4d2dd5| jd6d7dd5| jd8d9d:d;dz [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogriZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderrZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?Z AdminInstallzGSelect whether to install [ProductName] for all users of this computer.zInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"z({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rr)rr)rr)rr)rr)rr)rrrNr)rrrNr")rrrNr")rrrrr)rrr)rrr)rrr)rrr)rNr)rrr rrrr r-r/r)ZeventZcontrolrr(mappingr^rwrWrZ conditionr4Z radiogroupadd)rrxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalr@Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderr~rZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrs                                                                zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tjj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rRrPr[r\r]rS)rrZ base_namerrrrrxs  z bdist_msi.get_installer_filename)r9Nr:Pkeep the pseudo-installation tree around after creating the distribution archive)r<r=r6require a specific python version on the target system)r>Nr)r?r@rA)rBrCrD)rErFrG)rHNrI)rJNrK)rLNrM)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrarrXrervrrrrrxrrrrr8SsR    ([66&@r8)rrr[Zdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrr r r r r rrrr8rrrr s       >PKD]{2d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVdWZdXefdYefdZefd[efd\d]d^fgZdS)sinstallz'install everything from build directoryprefix=Ninstallation prefix exec-prefix=.(Unix only) prefix for platform-specific fileshome=+(Unix only) home directory to install under install-base=;base installation directory (instead of --prefix or --home)install-platbase=z8base installation directory for platform-specific files z$(instead of --exec-prefix or --home)root=|jD]2}|j|}x"|jD]}||kr&|j|q&WqW|jrl|jrl|jtjj|j |jd|S)z.Assembles the outputs of all the sub-commands.z.pth) rget_finalized_commandrappendrrQrhr}r~r|)rWrrcmdrrXrXrYrbs  zinstall.get_outputscCs2g}x(|jD]}|j|}|j|jqW|S)z*Returns the inputs of all the sub-commands)rrextend get_inputs)rWZinputsrrrXrXrYrss  zinstall.get_inputscCs|jjp|jjS)zSReturns true if the current distribution has any Python modules to install.)rrZhas_pure_modulesZhas_ext_modules)rWrXrXrYhas_libs zinstall.has_libcCs |jjS)zLReturns true if the current distribution has any headers to install.)rr has_headers)rWrXrXrYrszinstall.has_headerscCs |jjS)zMReturns true if the current distribution has any scripts to. install.)rr has_scripts)rWrXrXrYrszinstall.has_scriptscCs |jjS)zJReturns true if the current distribution has any data to. install.)rrZhas_data_files)rWrXrXrYhas_dataszinstall.has_datarJrIrKrLZinstall_egg_infocCsdS)NTrX)rWrXrXrYszinstall.)rNr)rNr)rNr)r Nr!\base installation directory for platform-specific files (instead of --exec-prefix or --home))r"Nr)r#Nr$)r%Nr&)r'Nr(ginstallation directory for all module distributions (overrides --install-purelib and --install-platlib))r)Nr)r*Nr+)r,Nr-)r.Nr/)r0r1r2)r3Nr4)r5r6r7)r8r9r:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrZboolean_optionsrurrrrZrrkrlrmrrrvrxrzr{rryrrrrrrrrZ sub_commandsrXrXrXrYrIs   N3  " , r)rrrrr)__doc__rnrhZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rruZWINDOWS_SCHEMErrrrXrXrXrYsV            PKD]j992command/__pycache__/build_ext.cpython-36.opt-2.pycnu[3 \z@sddlZddlZddlZddlZddlmZddlTddlmZm Z ddlm Z ddl m Z ddl mZddlmZdd lmZdd lmZejd Zd d ZGdddeZdS)N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r3/usr/lib64/python3.6/distutils/command/build_ext.pyr s r c@seZdZdZdejZd`dad d d efdcdddefdddedfdddefdgdhdidjdkdldmdndodpgZd d%d(d1d8gZ d:d2d;e fgZ dd?Z d@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZejdNdOZdPdQZdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zd2S)q build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s') build-lib=b(directory for compiled extension modules build-temp=t1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s)inplaceiz=ignore build-lib and put compiled extensions into the source z,directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link withz library-dirs=Lz.directories to search for external C librariesrpath=R7directories to search for shared C libraries at runtime link-objects=O2extra explicit link objects to include in the linkdebugg'compile/link with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsswig-cppN)make SWIG create C++ files (default is C) swig-opts=!list of SWIG command line optionsswig=path to the SWIG executableuser#add user include, library and rpathz help-compilerzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsr+r.compilerswigswig_cpp swig_optsr=parallel)selfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|jdd'd(d)d*d+d,d-|jdkr8|jj|_|jj|_|j}|jd d }|j dkrn|jj pjg|_ t |j t r|j j t j|_ tjtjkr|j jt jjtjd |j j|||kr|j j||jd|jd|jdkrg|_|jdkrg|_nt |jt r&|jj t j|_|jdkr:g|_nt |jt rX|jj t j|_t jdkrT|jjt jjtjdtjtjkr|jjt jjtjd|jrt jj|jd|_nt jj|jd|_|j jt jjtttdd}|r|jj||j dkrd}n|j dd}t jjtjd}|rHt jj||}|jj|tj!dddks|tj!dddkrtj"j#t jjtjdr|jjt jjtjddt$dn |jjd|j%d r|j&s|jj|j%d!n |jjd|j'r|j'j d"}d#d$|D|_'|j(r4|j(j d"|_(|j)dkrHg|_)n|j)j d%|_)|j*rt jjt+d }t jjt+d} t jj,|r|j j|t jj,| r|jj| |jj| t |j-t ryt.|j-|_-Wnt/k rt0d&YnXdS).Nr) sysconfigZbuildr@rBrKr+r.rOrA)Z plat_specificincluderGrJntZlibsZDebugZRelease_homewin32ZPCbuildcygwinatheosbinlibpythonconfig.Py_ENABLE_SHAREDLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)r@r@)rBrB)rKrK)r+r+)r.r.)rOrO)rArA)1 distutilsrRZset_undefined_optionsrC distributionZ ext_packageZ ext_modulesr?Zget_python_incrD isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinZensure_string_listrGrHrInameprefixr+rBdirnamergetattrrAplatform executable startswithrget_config_varZ python_buildrErFrNr=r isdirrOint ValueErrorZDistutilsOptionError) rPrRZ py_includeZplat_py_include _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                    (         zbuild_ext.finalize_optionscCstddlm}|jsdS|jjrL|jd}|jj|jp:g|j j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j j|j|jdk r|j j|j|jdk rx |jD]\}}|j j||qW|jdk rx|jD]}|j j|qW|jdk r|j j|j|j dk r4|j j|j |jdk rN|j j|j|j dk rh|j j!|j |j"dS)Nr) new_compiler build_clib)rKverbosedry_runr.rU)#r rr?riZhas_c_librariesget_finalized_commandrGextendZget_library_namesrHrrrrKrrr.rrmrurAr Z initializerDZset_include_dirsrEZ define_macrorFZundefine_macroZ set_librariesZset_library_dirsrIZset_runtime_library_dirsrJZset_link_objectsbuild_extensions)rPrrruvaluemacrorrrruns>             z build_ext.runc Cst|tstdxnt|D]`\}}t|tr4qt|t sLt|dkrTtd|\}}tjd|t|t ozt j |stdt|t stdt||d}x*dD]"}|j |}|dk rt|||qW|j d|_d|krtjd|j d}|rxg|_g|_xj|D]b} t| to,t| dks8tdt| dkrX|jj| dnt| dkr|jj| qW|||<qWdS)Nz:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sourcesrDrHrG extra_objectsextra_compile_argsextra_link_argsrIZdef_filez9'def_file' element of build info dict no longer supportedmacrosrSz9'macros' element of build info dict must be 1- or 2-tupler)rDrHrGrrr)rSr)rjlistDistutilsSetupError enumeratertuplelenr warnrkextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrr) rPr?rextext_nameZ build_infokeyvalrrrrrcheck_extensions_listUsT           zbuild_ext.check_extensions_listcCs0|j|jg}x|jD]}|j|jqW|S)N)rr?rr)rP filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs6|j|jg}x |jD]}|j|j|jqW|S)N)rr?rrget_ext_fullpathru)rPZoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(|j|j|jr|jn|jdS)N)rr?rO_build_extensions_parallel_build_extensions_serial)rPrrrrs  zbuild_ext.build_extensionscsj}jdkrtj}yddlm}Wntk r@d}YnX|dkrVjdS||dTfddjD}x6tj|D]&\}}j ||j WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}jj|qSr)Zsubmitbuild_extension)rer)executorrPrrrfsz8build_ext._build_extensions_parallel..) rOrm cpu_countZconcurrent.futuresr ImportErrorrr?zip_filter_build_errorsresult)rPZworkersrZfuturesrZfutr)rrPrrs       z$build_ext._build_extensions_parallelc Cs4x.|jD]$}|j||j|WdQRXqWdS)N)r?rr)rPrrrrrs  z"build_ext._build_extensions_serialccsTy dVWnDtttfk rN}z"|js*|jd|j|fWYdd}~XnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrru)rPrerrrrs zbuild_ext._filter_build_errorsc CsX|j}|dkst|ttf r,td|jt|}|j|j}||j}|jpZt ||dsnt j d|jdSt j d|j|j ||}|jpg}|jdd}x|jD]}|j|fqW|jj||j||j|j ||jd}|dd|_|jr|j|j|jp g}|jp|jj|} |jj|||j||j|j||j ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrrDr+extra_postargsdepends)rGrHrrexport_symbolsr+rBZ target_lang)!rrjrrrrurrr.rr r+info swig_sourcesrrrrrrKcompilerBrDZ_built_objectsrrrlanguageZdetect_languageZlink_shared_object get_librariesrHrget_export_symbols) rPrrext_pathrZ extra_argsrrFZobjectsrrrrrsN         zbuild_ext.build_extensioncCs2g}g}i}|jrtjd|js6d|jks6d|jkr        zbuild_ext.swig_sourcescCs`tjdkrdStjdkrNxBd D]&}tjjd|d}tjj|r|SqWdSntd tjdS) NposixrLrU1.31.21.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s')rrr)rmrursrtisfileZDistutilsPlatformError)rPZversfnrrrrfs    zbuild_ext.find_swigcCs|j|}|jd}|j|d}|jsRtjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S)Nr`rSrbuild_pyrrr) get_ext_fullnamerlget_ext_filenamerrmrsrtr@rabspathZget_package_dir)rPrfullnameZmodpathfilenamerCrZ package_dirrrrr~s   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)Nr`)rC)rPrrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|jd}|d}tjj||S)Nr)r|r` EXT_SUFFIX)distutils.sysconfigr|rlrmrsrt)rPrr|rZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCs0d|jjdd}||jkr*|jj||jS)NZPyInit_r`rSr)rurlrrr)rPrZ initfunc_namerrrrs  zbuild_ext.get_export_symbolscCstjdkrfddlm}t|j|s\d}|jr4|d}|tjd?tjd?d@f}|j|gS|jSnRtjdd d krd }|tjd?tjd?d@f}|j|gStjdd d kr>dd l m }d }|tjd?tjd?d@f}g}xB|j dj D]0}|j dr|j|ddn |j|qW|j|dg|StjdkrP|jStjdddkrj|jSdd l m }|j drdjtjd?tjd?d@|j d}|j|gS|jSdS)NrWr) MSVCCompilerz python%d%dZ_drYrZz python%d.%dr[)rRSHLIBSz-lrmdarwinaixraz python{}.{}{}ABIFLAGS)roryZdistutils._msvccompilerrrjrKr+ hexversionrGrhrRr|rlr{rrformat)rPrrtemplateZ pythonlibrRZextrar]rrrrsJ             zbuild_ext.get_libraries)rrr)rrriignore build-lib and put compiled extensions into the source directory alongside your pure Python modules)rrr)rrr)rrr )r!r"r#)r%r&r')r(r)r*)r+r,r-)r.r/r0)r1r2r3)r4r5r6)r7Nr8)r9Nr:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrmrnZsep_byr Z user_optionsZboolean_optionsr Z help_optionsrQrrrrrrrr contextlibcontextmanagerrrrrrrrrrrrrrr!s  @N  K6   r)rrmreroZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rhr Zsiter rrr rrrrrs        PKD] .command/__pycache__/build.cpython-36.opt-1.pycnu[3 \t@sTdZddlZddlZddlmZddlmZddlmZddZ Gdd d eZ dS) zBdistutils.command.build Implements the Distutils 'build' command.N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rr//usr/lib64/python3.6/distutils/command/build.pyr s rc@seZdZdZd8d9d:ddddefd?d@dAdBdCg ZddgZd$dd%efgZd&d'Z d(d)Z d*d+Z d,d-Z d.d/Z d0d1Zd2d3Zd4e fd5e fd6efd7efgZdS)Dbuildz"build everything needed to install build-base=b base directory for build librarybuild-purelib=N2build directory for platform-neutral distributionsbuild-platlib=3build directory for platform-specific distributions build-lib=z9build directory for all distribution (defaults to either zbuild-purelib or build-platlibbuild-scripts=build directory for scripts build-temp=ttemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsdebugg;compile extensions and libraries with debugging informationforcef2forcibly build everything (ignore file timestamps) executable=e5specify final destination interpreter path (build.py)z help-compilerzlist available compilerscCsLd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nrr) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallel)selfrrrinitialize_options8szbuild.initialize_optionsc CsZ|jdkrt|_ntjdkr&tdd|jftjdd}ttdrR|d7}|jdkrntj j |j d|_|j dkrtj j |j d||_ |j dkr|jjr|j |_ n|j|_ |jdkrtj j |j d||_|jdkrtj j |j d tjdd|_|jdkrtj jtj|_t|jtrVyt|j|_Wntk rTtd YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z .%s-%d.%dgettotalrefcountz-pydebuglibZtempz scripts-%d.%dzparallel should be an integer)r,rosnamersys version_infohasattrr'pathjoinr&r(r) distributionZ ext_modulesr*r+r-normpath isinstancer.strint ValueError)r/Zplat_specifierrrrfinalize_optionsHs<                zbuild.finalize_optionscCs x|jD]}|j|q WdS)N)Zget_sub_commandsZ run_command)r/Zcmd_namerrrrunsz build.runcCs |jjS)N)r<has_pure_modules)r/rrrrDszbuild.has_pure_modulescCs |jjS)N)r<has_c_libraries)r/rrrrEszbuild.has_c_librariescCs |jjS)N)r<has_ext_modules)r/rrrrFszbuild.has_ext_modulescCs |jjS)N)r< has_scripts)r/rrrrGszbuild.has_scriptsZbuild_pyZ build_clibZ build_extr+)r r r )r Nr )rNrWbuild directory for all distribution (defaults to either build-purelib or build-platlib)rNrH)rNr)rrr)rrr)rrr)rrr)r r!r")r#r$r%)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr0rBrCrDrErFrGZ sub_commandsrrrrrsR 8 r) __doc__r7r5Zdistutils.corerZdistutils.errorsrZdistutils.utilrrrrrrrs    PKD]`"H3command/__pycache__/bdist_dumb.cpython-36.opt-1.pycnu[3 \1@shdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZd%dddefd&d(d)d*d+d,d-g Zd ddgZdddZdd Zd!d"Z d#d$Z dS). bdist_dumbz"create a "dumb" built distribution bdist-dir=d1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)format=f>archive format to create (tar, gztar, bztar, xztar, ztar, zip) keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=-directory to put final built distributions in skip-buildN2skip rebuilding everything (for testing/debugging)relative7build the archive using relative paths (default: false)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]Zgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr+4/usr/lib64/python3.6/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|jdj}tjj|d|_|jdkrfy|jtj|_Wn"t k rdt dtjYnX|j dddd dS) NZbdistZdumbz@don't know how to create dumb built distributions on platform %sr&r#r')r&r&)r#r#)r'r') r"Zget_finalized_command bdist_baseospathjoinr$default_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)r*r.r+r+r,finalize_options=s   zbdist_dumb.finalize_optionscCs(|js|jd|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j j |j|}|js~|j}nJ|jjr|j|jkrtdt|jt|jfnt j j |jt|j}|j||j||j|jd }|jjrt}nd }|jjjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirr(r)anyr )dry_run) r'Z run_commandZreinitialize_commandr"rootZwarn_dirrinfoZ distributionZ get_fullnamer#r/r0r1r&rZhas_ext_modulesZ install_baseZinstall_platbaser5reprrZ make_archiver$r(r)rZ dist_filesappendr%rr:)r*r7Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionr+r+r,runOs>          zbdist_dumb.run)r r r )rrrPkeep the pseudo-installation tree around after creating the distribution archive)rrrA)rr r)rNr)rNr)rrr)rrr) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr2r-r6r@r+r+r+r,r s6  r )__doc__r/Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r+r+r+r,s    PKD]884command/__pycache__/install_lib.cpython-36.opt-1.pycnu[3 \ @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc @seZdZdZd*d+d,d-d.d/d0gZdd dgZdd iZddZddZddZ ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)ZdS)1 install_libz7install all Python modules (extensions and pure Python) install-dir=ddirectory to install to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files)compileccompile .py to .pyc [default] no-compileNdon't compile .py files optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0] skip-buildskip the build stepscCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirr roptimize skip_build)selfr5/usr/lib64/python3.6/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|jddddddd|jdkr&d |_|jdkr6d |_t|jtsyt|j|_|jdkr^tWn ttfk rtdYnXdS)Ninstall build_librrrr rrrTFrzoptimize must be 0, 1, or 2)r!r)rr)r r )rr)rr)rr)rr"r#)Zset_undefined_optionsrr isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$     zinstall_lib.finalize_optionscCs0|j|j}|dk r,|jjr,|j|dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVszinstall_lib.runcCs2|js.|jjr|jd|jjr.|jddS)Nbuild_py build_ext)rr*r+Z run_commandhas_ext_modules)rrrrr)fs    zinstall_lib.buildcCs8tjj|jr |j|j|j}n|jd|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarn)rr-rrrr ms  zinstall_lib.installcCsrtjr|jddSddlm}|jdj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r,r )rr prefixdry_run)rr r6verboser7) sysdont_write_bytecoder5Zdistutils.utilr,get_finalized_commandrootrr r7rr8)rfilesr,Z install_rootrrrr,vs     zinstall_lib.byte_compilec Csh|sgS|j|}|j}t||}t|ttj}g}x(|D] } |jtjj|| |dq@W|S)N) r; get_outputsgetattrlenr2sepappendr3join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesrZ prefix_lenZoutputsfilerrr_mutate_outputss    zinstall_lib._mutate_outputscCsvg}xl|D]d}tjjtjj|d}|tkr0q |jrL|jtjj |dd|j dkr |jtjj ||j dq W|S)Nr") optimizationr) r2r3splitextnormcasePYTHON_SOURCE_EXTENSIONrrB importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR|j|jjdd|j}|jr*|j|}ng}|j|jjdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r/r!r0)rEr*r+rrrNr1)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr>s   zinstall_lib.get_outputscCsLg}|jjr&|jd}|j|j|jjrH|jd}|j|j|S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r/r0)r*r+r;extendr>r1)rZinputsr/r0rrr get_inputss    zinstall_lib.get_inputs)rrr)rr r )r r r )rrr)rNr)rrr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr(r.r)r r,rErNr>rPrrrrrs*   r) __doc__r2importlib.utilrKr9Zdistutils.corerZdistutils.errorsrrJrrrrrs  PKD]Fq +command/__pycache__/register.cpython-36.pycnu[3 \-@sddZddlZddlZddlZddlZddlmZddlm Z ddl Tddl m Z Gddde Z dS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejdd gZejdddgZdd d fgZd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZd!ddZdS)"registerz7register the distribution with the Python package indexlist-classifiersN list the valid Trove classifiersstrictBWill stop the registering if the meta-data are not fully compliantverifycheckcCsdS)NT)selfr r 2/usr/lib64/python3.6/distutils/command/register.pyszregister.cCstj|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr )rr r rrs zregister.initialize_optionscCs*tj|d|jfdd}||jjd<dS)Nr)r restructuredtextr )rr)rfinalize_optionsr distributionZcommand_options)rZ check_optionsr r rr$s zregister.finalize_optionscCsX|j|jx|jD]}|j|qW|jr<|jn|jrL|jn|jdS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)rZcmd_namer r rrun+s  z register.runcCs8tdt|jjd}|j|j|_d|_|jdS)zDeprecated API.zddistutils.command.register.check_metadata is deprecated, use the check command insteadr rN)rPendingDeprecationWarningrZget_command_objZensure_finalizedr rr)rr r r rcheck_metadata:s zregister.check_metadatacCsz|j}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_d S) z: Reads the configuration file and set attributes. usernamepassword repositoryrealmTZpypiz%s not found in .pypircFN)Z _read_pypircrrr r! has_configZDEFAULT_REPOSITORY ValueError)rconfigr r rrDs     zregister._set_configcCs*|jd}tjj|}tj|j|dS)z8 Fetch the list of classifiers from the server. z?:action=list_classifiersN)r urllibrequestZurlopenrinfo_read_pypi_response)rZurlZresponser r rrUs  zregister.classifierscCs&|j|jd\}}tjd||dS)zF Send the metadata to the package index server to be checked. r zServer response (%s): %sN)post_to_serverbuild_post_datarr')rcoderesultr r rr\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}dj}x:||krf|jdtjt}|sTd}q.||kr.tdq.W|dkr|x|std}qtWx|st j d}qWt j j }t j j|jd }|j|j||||j|jd |\}}|jd ||ftj|d kr|jr||j_nj|jd tj|jd|jtjd}x&|jdkr\td}|s8d}q8W|jdkr|j||n|dkrddi} d| d<| d<| d<d| d<x| dstd| d<qWx| d| dkrNx| dst j d| d<qWx| dst j d| d<qW| d| dkrd| d<d| d<tdqWx| dsltd| d<qRW|j| \}}|d krtjd ||ntjdtjd nT|d!krdd"i} d| d<x| dstd#| d<qW|j| \}}tjd ||dS)$a_ Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. 1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitzServer response (%s): %szAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2z:actionusernamerZemailNZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r"rrsplitannouncerINFOinputprintgetpassr%r&ZHTTPPasswordMgrparseZurlparser Z add_passwordr!r)r*rZ _get_rc_filelowerZ _store_pypircr') rZchoicerrchoicesauthhostr+r,datar r rrcs                     zregister.send_metadatacCs|jj}|d|j|j|j|j|j|j|j|j |j |j |j |j |j|j|jd}|ds|ds|drd|d<|S)Nz1.0)z:actionmetadata_versionr6versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrJrKrLz1.1rD)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)ractionmetarCr r rr*s* zregister.build_post_datacCsd|kr$|jd|d|jftjd}d|}|d}tj}x|jD]\}}t|tgtffkrp|g}xZ|D]R}t|}|j ||j d||j d|j ||rv|dd krv|j d qvWqJW|j ||j d |j j d }d |tt |d } t jj|j|| } t jjt jj|d} d}y| j| } Wnxt jjk r} z$|jrl| jj}| j| jf} WYdd} ~ XnJt jjk r} zdt| f} WYdd} ~ XnX|jr|j| }d} |jrd jdd|ddf}|j|tj| S)zC Post a query to the server, and return a string response. r6zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--z* Content-Disposition: form-data; name="%s"z r  zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr/Nir0OK-K)r0rQ)r9r rr:ioStringIOitemstypestrwritegetvalueencodelenr%r&ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr+msgZURLErrorr(join)rrCrAboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqopenerr,erbr r rr)sV         zregister.post_to_server)rNr)r Nr )N)__name__ __module__ __qualname__rGrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr*r)r r r rrs&  zr)__doc__r=rUZ urllib.parser%Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs   PKD]'556command/__pycache__/build_scripts.cpython-36.opt-1.pycnu[3 \X@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZejd ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line) build-dir=ddirectory to "build" (copy) toforcef1forcibly build everything (ignore file timestamps executable=e*specify final destination interpreter pathcCs"d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfr7/usr/lib64/python3.6/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|jdddd|jj|_dS) NZbuildr rr r)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|jdS)N)r copy_scripts)rrrrrun/szbuild_scripts.runc"Cs|j|jg}g}x,|jD] }d}t|}tjj|jtjj|}|j||j rtt || rtt j d|qyt |d}Wn tk r|jsd}YnXXtj|j\}}|jd|j} | s|jd|qtj| } | rd}| jdpd } |rt jd ||j|j||js tjs2|j} n(tjjtjd d tjd tjdf} tj| } d| | d} y| jdWn$tk rt dj!| YnXy| j|Wn&tk rt dj!| |YnXt |d}|j"| |j#|j$WdQRX|r@|j%q|r*|j%|j||j&||qWtj'dkrxh|D]`}|jrpt jd|nDtj(|t)d@}|dBd@}||krVt jd|||tj*||qVW||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sBINDIRz python%s%sVERSIONEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfilerencodinglinesZ first_liner7Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                  zbuild_scripts.copy_scriptsN)r r r )r rr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&tj|\}}|js|j|||fS)N)r rr0Zrun_2to3)rrrGrrrrs zbuild_scripts_2to3.copy_scriptsN)rKrLrMrrrrrrNsrN)__doc__r(rerErZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr1compiler6r rNrrrrs       PKD]=#8command/__pycache__/install_scripts.cpython-36.opt-2.pycnu[3 \@s@ddlZddlmZddlmZddlmZGdddeZdS)N)Command)log)ST_MODEc@sLeZdZdZddddgZdd gZddZddZddZddZ ddZ d S)install_scriptsz%install scripts (Python or otherwise) install-dir=ddirectory to install scripts to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files) skip-buildNskip the build stepscCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfr9/usr/lib64/python3.6/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |jdd |jdd d d dS) NZbuild build_scriptsrZinstallrrr r)rr)rr)r r )rr)Zset_undefined_options)rrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|jd|j|j|j|_tjdkrxT|jD]H}|j rNt j d|q6tj |t dBd@}t j d||tj||q6WdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)rZ run_commandZ copy_treerroutfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s  zinstall_scripts.runcCs |jjp gS)N)Z distributionscripts)rrrr get_inputs8szinstall_scripts.get_inputscCs |jpgS)N)r)rrrrr;szinstall_scripts.get_outputs)rrr)r r r )r r r)rNr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr$r&rrrrrrsr)rZdistutils.corerZ distutilsrr rrrrrrs   PKD]{2d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVdWZdXefdYefdZefd[efd\d]d^fgZdS)sinstallz'install everything from build directoryprefix=Ninstallation prefix exec-prefix=.(Unix only) prefix for platform-specific fileshome=+(Unix only) home directory to install under install-base=;base installation directory (instead of --prefix or --home)install-platbase=z8base installation directory for platform-specific files z$(instead of --exec-prefix or --home)root=|jD]2}|j|}x"|jD]}||kr&|j|q&WqW|jrl|jrl|jtjj|j |jd|S)z.Assembles the outputs of all the sub-commands.z.pth) rget_finalized_commandrappendrrQrhr}r~r|)rWrrcmdrrXrXrYrbs  zinstall.get_outputscCs2g}x(|jD]}|j|}|j|jqW|S)z*Returns the inputs of all the sub-commands)rrextend get_inputs)rWZinputsrrrXrXrYrss  zinstall.get_inputscCs|jjp|jjS)zSReturns true if the current distribution has any Python modules to install.)rrZhas_pure_modulesZhas_ext_modules)rWrXrXrYhas_libs zinstall.has_libcCs |jjS)zLReturns true if the current distribution has any headers to install.)rr has_headers)rWrXrXrYrszinstall.has_headerscCs |jjS)zMReturns true if the current distribution has any scripts to. install.)rr has_scripts)rWrXrXrYrszinstall.has_scriptscCs |jjS)zJReturns true if the current distribution has any data to. install.)rrZhas_data_files)rWrXrXrYhas_dataszinstall.has_datarJrIrKrLZinstall_egg_infocCsdS)NTrX)rWrXrXrYszinstall.)rNr)rNr)rNr)r Nr!\base installation directory for platform-specific files (instead of --exec-prefix or --home))r"Nr)r#Nr$)r%Nr&)r'Nr(ginstallation directory for all module distributions (overrides --install-purelib and --install-platlib))r)Nr)r*Nr+)r,Nr-)r.Nr/)r0r1r2)r3Nr4)r5r6r7)r8r9r:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrZboolean_optionsrurrrrZrrkrlrmrrrvrxrzr{rryrrrrrrrrZ sub_commandsrXrXrXrYrIs   N3  " , r)rrrrr)__doc__rnrhZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rruZWINDOWS_SCHEMErrrrXrXrXrYsV            PKD]k!H112command/__pycache__/bdist_rpm.cpython-36.opt-2.pycnu[3 \T@s|ddlZddlZddlZddlmZddlmZddlmZddl m Z ddl Tddl m Z ddlmZGd d d eZdS) N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc+@seZdZdZdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddg)Zd4d9d=d2dUgZd4d9d=dXZdYdZZd[d\Zd]d^Z d_d`Z dadbZ dcddZ dedfZ dS) bdist_rpmzcreate an RPM distribution bdist-base=N/base directory for creating built distributions rpm-base=dbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2) dist-dir=dDdirectory to put final RPM files in (and .spec files if --spec-only)python=Mpath to Python interpreter to hard-code in the .spec file (default: "python") fix-pythonLhard-code the exact path to the current Python interpreter in the .spec file spec-onlyonly regenerate spec file source-onlyonly generate source RPM binary-onlyonly generate binary RPM use-bzip27use bzip2 instead of gzip to create source distributiondistribution-name=gname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)group=9package classification [default: "Development/Libraries"]release=RPM release numberserial=RPM serial numbervendor=aRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script] packager=BRPM packager (eg. "Jane Doe ") [default: vendor] doc-files=6list of documentation files (space or comma-separated) changelog= RPM changelogicon=name of icon file provides=%capabilities provided by this package requires=%capabilities required by this package conflicts=-capabilities which conflict with this packagebuild-requires=+capabilities required to build this package obsoletes=*capabilities made obsolete by this package no-autoreq+do not automatically calculate dependencies keep-tempk"don't clean up RPM build directory no-keep-temp&clean up RPM build directory [default]use-rpm-opt-flags8compile with RPM_OPT_FLAGS when building from source RPMno-rpm-opt-flags&do not pass any RPM CFLAGS to compiler rpm3-mode"RPM 3 compatibility mode (default) rpm2-modeRPM 2 compatibility mode prep-script=3Specify a script for the PREP phase of RPM building build-script=4Specify a script for the BUILD phase of RPM building pre-install=:Specify a script for the pre-INSTALL phase of RPM buildinginstall-script=6Specify a script for the INSTALL phase of RPM building post-install=;Specify a script for the post-INSTALL phase of RPM buildingpre-uninstall=rnroREADME README.txtrk1rlrirprqrrrsrtrurvrwrxryrzr|r}r~rrr)rr)Z ensure_stringrZ get_contactZget_contact_emailZensure_string_list isinstancerolistrrexistsappend_format_changelogrpZensure_filename)rZreadmerrrrs>                         zbdist_rpm.finalize_package_datac Cstrsz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %sVendorPackagerProvidesRequires Conflicts Obsoletesz%s: %s ZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESr{rr&%setup -n %{name}-%{unmangled_version}ZbuildrsZinstallrtcleanrurm -rf $RPM_BUILD_ROOT verifyscriptrvprerwpostrxpreunrypostunrz%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)rrrrrr)r{rrr)rrur)rrvN)rrwN)rrxN)rryN)rrzN)'rrZ get_versionreplacerkZget_description subprocessZ getoutputr splitlinesrrrhZ get_licenserjrrgetattrlowerrrZget_urlrirrqrrrrZget_long_descriptionrcrargvropenreadrrorp)rZ spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultrrrrs                   zbdist_rpm._make_spec_filecCs|s|Sg}x`|jjdD]N}|j}|ddkrD|jd|gq|ddkr\|j|q|jd|qW|ds||d=|S)Nrrrrrz )rrrr)rrpZ new_changelogrrrrr3s   zbdist_rpm._format_changelog)r Nr )r Nr )rrr)rNr)rNr)rNr)rNr)rNr)rNr)rNr)rNr )r!Nr")r#Nr$)r%Nr&)r'Nr()r)Nr*)r+Nr,)r-Nr.)r/Nr0)r1Nr2)r3Nr4)r5Nr6)r7Nr8)r9Nr:)r;r<r=)r>Nr?)r@NrA)rBNrC)rDNrE)rFNrG)rHNrI)rJNrK)rLNrM)rNNrO)rPNrQ)rRNrS)rTNrU)rVNrW)rXNrY)rZNr[)r\r]r^)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrrrrrrrrrrr s--)r )rrrZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs      PKD]B8command/__pycache__/install_headers.cpython-36.opt-1.pycnu[3 \@s$dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sFeZdZdZddgZdgZdd Zd d Zd d ZddZ ddZ dS)install_headerszinstall C/C++ header files install-dir=d$directory to install header files toforcef-force installation (overwrite existing files)cCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr 9/usr/lib64/python3.6/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|jddddS)NZinstallrr r)rr )rr)Zset_undefined_options)r r r rfinalize_optionssz install_headers.finalize_optionscCsL|jj}|sdS|j|jx*|D]"}|j||j\}}|jj|q"WdS)N) distributionheadersZmkpathr Z copy_filer append)r rheaderout_r r rrun!s  zinstall_headers.runcCs |jjp gS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r )r r r r get_outputs.szinstall_headers.get_outputsN)rrr)rrr ) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrr r r rr s rN)__doc__Zdistutils.corerrr r r rs PKD]v/())+command/__pycache__/build_py.cpython-36.pycnu[3 \ C@s~dZddlZddlZddlZddlmZddlmZddlTddl m Z m Z ddl m Z Gdd d eZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)glob)Command)*) convert_path Mixin2to3)logc@seZdZdZd8d9d:d;dbuild_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr2/usr/lib64/python3.6/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrbx&|jjjD]\}}t||j|<qHW|j|_ t |j t sy.t |j |_ d|j kodknst Wn tt fk rtdYnXdS) NZbuildrrrzoptimize must be 0, 1, or 2)rr)rr)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerintAssertionError ValueErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s"      "zbuild_py.finalize_optionscCs:|jr|j|jr$|j|j|j|jdddS)Nr)include_bytecode)r build_modulesr#build_packagesbuild_package_data byte_compile get_outputs)rrrrrunCs z build_py.runcsg}|js|Sxr|jD]h}|j|}tjj|jg|jd}d|rRt|dfdd|j||D}|j ||||fqW|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples.rcsg|]}|dqS)Nr).0file)plenrr tsz+build_py.get_data_files..) r#get_package_dirosr,joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r9rr%as   zbuild_py.get_data_filescs`|jjdg|jj|g}gx:|D]2}ttjj|t|}jfdd|Dq&WS)z6Return filenames for package's data files in 'src_dir'cs$g|]}|krtjj|r|qSr)r<r,isfile)r7fn)filesrrr:s z,build_py.find_data_files..)rgetrr<r,r=rextend)rrrCZglobspatternZfilelistr)rIrr@ys  zbuild_py.find_data_filescCshd}x^|jD]T\}}}}xF|D]>}tjj||}|jtjj||jtjj|||ddqWq WdS)z$Copy data files into build directoryNF) preserve_mode)r&r<r,r=mkpathdirname copy_file)rZlastdirrrCrDrEfilenametargetrrrr1s zbuild_py.build_package_datac Cs|jd}|js&|r tjj|SdSng}x|ry|jdj|}Wn*tk rn|jd|d|d=Yq,X|jd|tjj|Sq,W|jjd}|dk r|jd||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r5rFrr6NrS)r>rr<r,r=KeyErrorinsertrJ)rrr,tailZpdirrrrr;s(       zbuild_py.get_package_dircCsj|dkr8tjj|s td|tjj|s8td||rftjj|d}tjj|rZ|Stjd|dS)NrFz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)z8package init file '%s' not found (or not a regular file)) r<r,existsZDistutilsFileErrorisdirr=rGrwarn)rrrinit_pyrrr check_packages    zbuild_py.check_packagecCs&tjj|stjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r<r,rGrrY)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xX|D]P}tjj|}||krztjjtjj |d}|j |||fq8|j d|q8W|S)Nz*.pyrz excluding %s) r[rr<r,r=abspathr"Z script_namesplitextbasenamerAZ debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr\rrrfind_package_moduless   zbuild_py.find_package_modulesc Csi}g}x|jD]}|jd}dj|dd}|d}y||\}}Wn"tk rj|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r5rr6__init__z.pyrSrS) rr>r=rTr;r[rAr<r,r^) rr#rbr\r,rZ module_baserZcheckedrZr]rrr find_moduless*       zbuild_py.find_modulescCsRg}|jr|j|j|jrNx.|jD]$}|j|}|j||}|j|q&W|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrKrer#r;rc)rrbrrmrrrfind_all_moduless   zbuild_py.find_all_modulescCsdd|jDS)NcSsg|] }|dqS)r6rSr)r7r\rrrr:-sz-build_py.get_source_files..)rg)rrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nz.py)listr<r,r=)rrDrr\Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler6cCs|j}g}xx|D]p\}}}|jd}|j|j||}|j||r|jr`|jtjj|dd|j dkr|jtjj||j dqW|dd|j D7}|S)Nr5rF) optimizationrcSs,g|]$\}}}}|D]}tjj||qqSr)r<r,r=)r7rrCrDrErQrrrr:Cs z(build_py.get_outputs..) rgr>rjrrAr importlibutilcache_from_sourcerr&)rr.rbZoutputsrr\r]rQrrrr33s"       zbuild_py.get_outputscCsbt|tr|jd}nt|ttfs,td|j|j||}tj j |}|j ||j ||ddS)Nr5z:'package' must be a string (dot-separated), list, or tupler)rM) r'strr>rituple TypeErrorrjrr<r,rOrNrP)rr\r]rZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs.|j}x |D]\}}}|j|||qWdS)N)rers)rrbrr\r]rrrr/Yszbuild_py.build_modulescCsXxR|jD]H}|j|}|j||}x,|D]$\}}}||ks>t|j|||q(WqWdS)N)r#r;rcr)rs)rrrrbZpackage_r\r]rrrr0bs    zbuild_py.build_packagescCstjr|jddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r2r6)rrprefixdry_runrS) sysdont_write_bytecoderYdistutils.utilr2rr<sepr rrur)rrIr2rtrrrr2vs    zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)r6)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr r-r4r%r@r1r;r[r^rcrergrhrjr3rsr/r0r2rrrrrs8   '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr|j|jr*|j|j|j|j|j|jdddS)Nr)r.) updated_filesrr/r#r0r1Zrun_2to3r2r3)rrrrr4s zbuild_py_2to3.runcCs,tj||||}|dr(|jj|d|S)Nr6r)rrsr~rA)rr\r]rresrrrrsszbuild_py_2to3.build_moduleN)rzr{r|r4rsrrrrr}sr})__doc__r<importlib.utilrlrvrZdistutils.corerZdistutils.errorsrxrrZ distutilsrrr}rrrrs   }PKD]kk3command/__pycache__/build_clib.cpython-36.opt-1.pycnu[3 \V@sTdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rr4/usr/lib64/python3.6/distutils/command/build_clib.pyrs rc@sleZdZdZd"d#d$d%d&gZdd gZdddefgZddZddZ ddZ ddZ ddZ ddZ d d!ZdS)' build_clibz/build C/C++ libraries used by Python extensions build-clib=b%directory to build C/C++ libraries to build-temp=t,directory to put temporary build by-productsdebugg"compile with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler typez help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompiler)selfrrr initialize_options4szbuild_clib.initialize_optionscCsh|jdddd d d |jj|_|jr0|j|j|jdkrH|jjpDg|_t|jtrd|jjtj |_dS) NZbuildrr rrr)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)r rrr finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|jj|j|j dk rzx |j D]\}}|jj ||q`W|j dk rx|j D]}|jj |qW|j |jdS)Nr) new_compiler)rdry_runr)rrr)rr*rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)r r)namevalueZmacrorrr run^s        zbuild_clib.runcCst|tstdx|D]|}t|t rs    PKD]޴)command/__pycache__/upload.cpython-36.pycnu[3 _Vj@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZdd Zd d Zd d Z ddZ dS)uploadzupload binary package to PyPIsignssign files to upload using gpg identity=iGPG identity used to sign filescCs,tj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr0/usr/lib64/python3.6/distutils/command/upload.pyr s  zupload.initialize_optionscCsvtj||jr |j r td|j}|ikrX|d|_|d|_|d|_|d|_ |j rr|j jrr|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rconfigrrrr(s     zupload.finalize_optionscCs>|jjsd}t|x$|jjD]\}}}|j|||qWdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc&)Cs^t|j\}}}}}} |s"|s"| r0td|j|d2krDtd||jr|ddd|g} |jrnd|jg| d d <t| |jd t|d } z | j} Wd| j X|j j } d d | j | j tjj|| f||tj| jd| j| j| j| j| j| j| j| j| j| j| j| j| j d}ytj!| j}WnPt"k r}z2d|}|j#|t$j%ddl&m'}|s|WYdd}~Xn X||d<d}|dkrt(j)\}}}|rd||f}n|dkrdt(j(dd}||d<|jrtjj|dt|dd jf|d<|j*d|j+j,d}d t-|j.d}d!}d"|j,d}|d#}t/j0}x|j1D]\}}d$|}t2|t3s|g}xr|D]j}t4|t5kr|d%|d7}|d}nt6|j,d&}|j7||j7|j,d&|j7d'|j7|qWqjW|j7||j8}d(||jf}|j#|t$j%d)|t6t9||d*} t:|j|| d+}!yt;|!}"|"j<}#|"j=}$Wnft>k r}z|j?}#|j=}$WYdd}~Xn8t@k r}z|j#t6|t$jAWYdd}~XnX|#d,kr8|j#d-|#|$ft$j%|jBrZ|jC|"}%d.jDd/d0|%d/d0f}|j#|t$j%n"d1|#|$f}|j#|t$jAtE|dS)3NzIncompatible url %shttphttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper$Z sha256_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesz#calculating md5 checksum failed: %sr) get_fips_modeZ md5_digestrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %s)Ztersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"zutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s -KzUpload failed (%s): %s)r'r()FrrAssertionErrorr rr r*openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZsha256Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesZmd5 ValueErrorZannouncer INFOZ_hashlibr4r3distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvaluelenrrZgetcoder"rcodeOSErrorZERRORrZ_read_pypi_responsejoinr)&rr#r$r%ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr/metar9Zdigester"r4r6rIr.idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler:ZrequestresultZstatusreasontextrrrr!Bs                       zupload.upload_fileN)r rr)rrr) __name__ __module__ __qualname__r1r Z user_optionsZboolean_optionsrrr&r!rrrrr s r )__doc__rCrLr3rFbase64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PKD]xcommand/build.pynu["""distutils.command.build Implements the Distutils 'build' command.""" import sys, os from distutils.core import Command from distutils.errors import DistutilsOptionError from distutils.util import get_platform def show_compilers(): from distutils.ccompiler import show_compilers show_compilers() class build(Command): description = "build everything needed to install" user_options = [ ('build-base=', 'b', "base directory for build library"), ('build-purelib=', None, "build directory for platform-neutral distributions"), ('build-platlib=', None, "build directory for platform-specific distributions"), ('build-lib=', None, "build directory for all distribution (defaults to either " + "build-purelib or build-platlib"), ('build-scripts=', None, "build directory for scripts"), ('build-temp=', 't', "temporary build directory"), ('plat-name=', 'p', "platform name to build for, if supported " "(default: %s)" % get_platform()), ('compiler=', 'c', "specify the compiler type"), ('parallel=', 'j', "number of parallel build jobs"), ('debug', 'g', "compile extensions and libraries with debugging information"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), ('executable=', 'e', "specify final destination interpreter path (build.py)"), ] boolean_options = ['debug', 'force'] help_options = [ ('help-compiler', None, "list available compilers", show_compilers), ] def initialize_options(self): self.build_base = 'build' # these are decided only after 'build_base' has its final value # (unless overridden by the user or client) self.build_purelib = None self.build_platlib = None self.build_lib = None self.build_temp = None self.build_scripts = None self.compiler = None self.plat_name = None self.debug = None self.force = 0 self.executable = None self.parallel = None def finalize_options(self): if self.plat_name is None: self.plat_name = get_platform() else: # plat-name only supported for windows (other platforms are # supported via ./configure flags, if at all). Avoid misleading # other platforms. if os.name != 'nt': raise DistutilsOptionError( "--plat-name only supported on Windows (try " "using './configure --help' on your platform)") plat_specifier = ".%s-%d.%d" % (self.plat_name, *sys.version_info[:2]) # Make it so Python 2.x and Python 2.x with --with-pydebug don't # share the same build directories. Doing so confuses the build # process for C modules if hasattr(sys, 'gettotalrefcount'): plat_specifier += '-pydebug' # 'build_purelib' and 'build_platlib' just default to 'lib' and # 'lib.' under the base build directory. We only use one of # them for a given distribution, though -- if self.build_purelib is None: self.build_purelib = os.path.join(self.build_base, 'lib') if self.build_platlib is None: self.build_platlib = os.path.join(self.build_base, 'lib' + plat_specifier) # 'build_lib' is the actual directory that we will use for this # particular module distribution -- if user didn't supply it, pick # one of 'build_purelib' or 'build_platlib'. if self.build_lib is None: if self.distribution.ext_modules: self.build_lib = self.build_platlib else: self.build_lib = self.build_purelib # 'build_temp' -- temporary directory for compiler turds, # "build/temp." if self.build_temp is None: self.build_temp = os.path.join(self.build_base, 'temp' + plat_specifier) if self.build_scripts is None: self.build_scripts = os.path.join(self.build_base, 'scripts-%d.%d' % sys.version_info[:2]) if self.executable is None and sys.executable: self.executable = os.path.normpath(sys.executable) if isinstance(self.parallel, str): try: self.parallel = int(self.parallel) except ValueError: raise DistutilsOptionError("parallel should be an integer") def run(self): # Run all relevant sub-commands. This will be some subset of: # - build_py - pure Python modules # - build_clib - standalone C libraries # - build_ext - Python extensions # - build_scripts - (Python) scripts for cmd_name in self.get_sub_commands(): self.run_command(cmd_name) # -- Predicates for the sub-command list --------------------------- def has_pure_modules(self): return self.distribution.has_pure_modules() def has_c_libraries(self): return self.distribution.has_c_libraries() def has_ext_modules(self): return self.distribution.has_ext_modules() def has_scripts(self): return self.distribution.has_scripts() sub_commands = [('build_py', has_pure_modules), ('build_clib', has_c_libraries), ('build_ext', has_ext_modules), ('build_scripts', has_scripts), ] PKD]n1command/bdist.pynu["""distutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).""" import os from distutils.core import Command from distutils.errors import * from distutils.util import get_platform def show_formats(): """Print list of available formats (arguments to "--format" option). """ from distutils.fancy_getopt import FancyGetopt formats = [] for format in bdist.format_commands: formats.append(("formats=" + format, None, bdist.format_command[format][1])) pretty_printer = FancyGetopt(formats) pretty_printer.print_help("List of available distribution formats:") class bdist(Command): description = "create a built (binary) distribution" user_options = [('bdist-base=', 'b', "temporary directory for creating built distributions"), ('plat-name=', 'p', "platform name to embed in generated filenames " "(default: %s)" % get_platform()), ('formats=', None, "formats for distribution (comma-separated list)"), ('dist-dir=', 'd', "directory to put final built distributions in " "[default: dist]"), ('skip-build', None, "skip rebuilding everything (for testing/debugging)"), ('owner=', 'u', "Owner name used when creating a tar file" " [default: current user]"), ('group=', 'g', "Group name used when creating a tar file" " [default: current group]"), ] boolean_options = ['skip-build'] help_options = [ ('help-formats', None, "lists available distribution formats", show_formats), ] # The following commands do not take a format option from bdist no_format_option = ('bdist_rpm',) # This won't do in reality: will need to distinguish RPM-ish Linux, # Debian-ish Linux, Solaris, FreeBSD, ..., Windows, Mac OS. default_format = {'posix': 'gztar', 'nt': 'zip'} # Establish the preferred order (for the --help-formats option). format_commands = ['rpm', 'gztar', 'bztar', 'xztar', 'ztar', 'tar', 'wininst', 'zip', 'msi'] # And the real information. format_command = {'rpm': ('bdist_rpm', "RPM distribution"), 'gztar': ('bdist_dumb', "gzip'ed tar file"), 'bztar': ('bdist_dumb', "bzip2'ed tar file"), 'xztar': ('bdist_dumb', "xz'ed tar file"), 'ztar': ('bdist_dumb', "compressed tar file"), 'tar': ('bdist_dumb', "tar file"), 'wininst': ('bdist_wininst', "Windows executable installer"), 'zip': ('bdist_dumb', "ZIP file"), 'msi': ('bdist_msi', "Microsoft Installer") } def initialize_options(self): self.bdist_base = None self.plat_name = None self.formats = None self.dist_dir = None self.skip_build = 0 self.group = None self.owner = None def finalize_options(self): # have to finalize 'plat_name' before 'bdist_base' if self.plat_name is None: if self.skip_build: self.plat_name = get_platform() else: self.plat_name = self.get_finalized_command('build').plat_name # 'bdist_base' -- parent of per-built-distribution-format # temporary directories (eg. we'll probably have # "build/bdist./dumb", "build/bdist./rpm", etc.) if self.bdist_base is None: build_base = self.get_finalized_command('build').build_base self.bdist_base = os.path.join(build_base, 'bdist.' + self.plat_name) self.ensure_string_list('formats') if self.formats is None: try: self.formats = [self.default_format[os.name]] except KeyError: raise DistutilsPlatformError( "don't know how to create built distributions " "on platform %s" % os.name) if self.dist_dir is None: self.dist_dir = "dist" def run(self): # Figure out which sub-commands we need to run. commands = [] for format in self.formats: try: commands.append(self.format_command[format][0]) except KeyError: raise DistutilsOptionError("invalid format '%s'" % format) # Reinitialize and run each command. for i in range(len(self.formats)): cmd_name = commands[i] sub_cmd = self.reinitialize_command(cmd_name) if cmd_name not in self.no_format_option: sub_cmd.format = self.formats[i] # passing the owner and group names for tar archiving if cmd_name == 'bdist_dumb': sub_cmd.owner = self.owner sub_cmd.group = self.group # If we're going to need to run this command again, tell it to # keep its temporary files around so subsequent runs go faster. if cmd_name in commands[i+1:]: sub_cmd.keep_temp = 1 self.run_command(cmd_name) PKD]:command/install_scripts.pynu["""distutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.""" # contributed by Bastian Kleineidam import os from distutils.core import Command from distutils import log from stat import ST_MODE class install_scripts(Command): description = "install scripts (Python or otherwise)" user_options = [ ('install-dir=', 'd', "directory to install scripts to"), ('build-dir=','b', "build directory (where to install from)"), ('force', 'f', "force installation (overwrite existing files)"), ('skip-build', None, "skip the build steps"), ] boolean_options = ['force', 'skip-build'] def initialize_options(self): self.install_dir = None self.force = 0 self.build_dir = None self.skip_build = None def finalize_options(self): self.set_undefined_options('build', ('build_scripts', 'build_dir')) self.set_undefined_options('install', ('install_scripts', 'install_dir'), ('force', 'force'), ('skip_build', 'skip_build'), ) def run(self): if not self.skip_build: self.run_command('build_scripts') self.outfiles = self.copy_tree(self.build_dir, self.install_dir) if os.name == 'posix': # Set the executable bits (owner, group, and world) on # all the scripts we just installed. for file in self.get_outputs(): if self.dry_run: log.info("changing mode of %s", file) else: mode = ((os.stat(file)[ST_MODE]) | 0o555) & 0o7777 log.info("changing mode of %s to %o", file, mode) os.chmod(file, mode) def get_inputs(self): return self.distribution.scripts or [] def get_outputs(self): return self.outfiles or [] PKD]ΫH<<command/bdist_wininst.pynu["""distutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.""" import sys, os from distutils.core import Command from distutils.util import get_platform from distutils.dir_util import create_tree, remove_tree from distutils.errors import * from distutils.sysconfig import get_python_version from distutils import log class bdist_wininst(Command): description = "create an executable installer for MS Windows" user_options = [('bdist-dir=', None, "temporary directory for creating the distribution"), ('plat-name=', 'p', "platform name to embed in generated filenames " "(default: %s)" % get_platform()), ('keep-temp', 'k', "keep the pseudo-installation tree around after " + "creating the distribution archive"), ('target-version=', None, "require a specific python version" + " on the target system"), ('no-target-compile', 'c', "do not compile .py to .pyc on the target system"), ('no-target-optimize', 'o', "do not compile .py to .pyo (optimized) " "on the target system"), ('dist-dir=', 'd', "directory to put final built distributions in"), ('bitmap=', 'b', "bitmap to use for the installer instead of python-powered logo"), ('title=', 't', "title to display on the installer background instead of default"), ('skip-build', None, "skip rebuilding everything (for testing/debugging)"), ('install-script=', None, "basename of installation script to be run after " "installation or before deinstallation"), ('pre-install-script=', None, "Fully qualified filename of a script to be run before " "any files are installed. This script need not be in the " "distribution"), ('user-access-control=', None, "specify Vista's UAC handling - 'none'/default=no " "handling, 'auto'=use UAC if target Python installed for " "all users, 'force'=always use UAC"), ] boolean_options = ['keep-temp', 'no-target-compile', 'no-target-optimize', 'skip-build'] # bpo-10945: bdist_wininst requires mbcs encoding only available on Windows _unsupported = (sys.platform != "win32") def initialize_options(self): self.bdist_dir = None self.plat_name = None self.keep_temp = 0 self.no_target_compile = 0 self.no_target_optimize = 0 self.target_version = None self.dist_dir = None self.bitmap = None self.title = None self.skip_build = None self.install_script = None self.pre_install_script = None self.user_access_control = None def finalize_options(self): self.set_undefined_options('bdist', ('skip_build', 'skip_build')) if self.bdist_dir is None: if self.skip_build and self.plat_name: # If build is skipped and plat_name is overridden, bdist will # not see the correct 'plat_name' - so set that up manually. bdist = self.distribution.get_command_obj('bdist') bdist.plat_name = self.plat_name # next the command will be initialized using that name bdist_base = self.get_finalized_command('bdist').bdist_base self.bdist_dir = os.path.join(bdist_base, 'wininst') if not self.target_version: self.target_version = "" if not self.skip_build and self.distribution.has_ext_modules(): short_version = get_python_version() if self.target_version and self.target_version != short_version: raise DistutilsOptionError( "target version can only be %s, or the '--skip-build'" \ " option must be specified" % (short_version,)) self.target_version = short_version self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'), ('plat_name', 'plat_name'), ) if self.install_script: for script in self.distribution.scripts: if self.install_script == os.path.basename(script): break else: raise DistutilsOptionError( "install_script '%s' not found in scripts" % self.install_script) def run(self): if (sys.platform != "win32" and (self.distribution.has_ext_modules() or self.distribution.has_c_libraries())): raise DistutilsPlatformError \ ("distribution contains extensions and/or C libraries; " "must be compiled on a Windows 32 platform") if not self.skip_build: self.run_command('build') install = self.reinitialize_command('install', reinit_subcommands=1) install.root = self.bdist_dir install.skip_build = self.skip_build install.warn_dir = 0 install.plat_name = self.plat_name install_lib = self.reinitialize_command('install_lib') # we do not want to include pyc or pyo files install_lib.compile = 0 install_lib.optimize = 0 if self.distribution.has_ext_modules(): # If we are building an installer for a Python version other # than the one we are currently running, then we need to ensure # our build_lib reflects the other Python version rather than ours. # Note that for target_version!=sys.version, we must have skipped the # build step, so there is no issue with enforcing the build of this # version. target_version = self.target_version if not target_version: assert self.skip_build, "Should have already checked this" target_version = '%d.%d' % sys.version_info[:2] plat_specifier = ".%s-%s" % (self.plat_name, target_version) build = self.get_finalized_command('build') build.build_lib = os.path.join(build.build_base, 'lib' + plat_specifier) # Use a custom scheme for the zip-file, because we have to decide # at installation time which scheme to use. for key in ('purelib', 'platlib', 'headers', 'scripts', 'data'): value = key.upper() if key == 'headers': value = value + '/Include/$dist_name' setattr(install, 'install_' + key, value) log.info("installing to %s", self.bdist_dir) install.ensure_finalized() # avoid warning of 'install_lib' about installing # into a directory not in sys.path sys.path.insert(0, os.path.join(self.bdist_dir, 'PURELIB')) install.run() del sys.path[0] # And make an archive relative to the root of the # pseudo-installation tree. from tempfile import mktemp archive_basename = mktemp() fullname = self.distribution.get_fullname() arcname = self.make_archive(archive_basename, "zip", root_dir=self.bdist_dir) # create an exe containing the zip-file self.create_exe(arcname, fullname, self.bitmap) if self.distribution.has_ext_modules(): pyversion = get_python_version() else: pyversion = 'any' self.distribution.dist_files.append(('bdist_wininst', pyversion, self.get_installer_filename(fullname))) # remove the zip-file again log.debug("removing temporary file '%s'", arcname) os.remove(arcname) if not self.keep_temp: remove_tree(self.bdist_dir, dry_run=self.dry_run) def get_inidata(self): # Return data describing the installation. lines = [] metadata = self.distribution.metadata # Write the [metadata] section. lines.append("[metadata]") # 'info' will be displayed in the installer's dialog box, # describing the items to be installed. info = (metadata.long_description or '') + '\n' # Escape newline characters def escape(s): return s.replace("\n", "\\n") for name in ["author", "author_email", "description", "maintainer", "maintainer_email", "name", "url", "version"]: data = getattr(metadata, name, "") if data: info = info + ("\n %s: %s" % \ (name.capitalize(), escape(data))) lines.append("%s=%s" % (name, escape(data))) # The [setup] section contains entries controlling # the installer runtime. lines.append("\n[Setup]") if self.install_script: lines.append("install_script=%s" % self.install_script) lines.append("info=%s" % escape(info)) lines.append("target_compile=%d" % (not self.no_target_compile)) lines.append("target_optimize=%d" % (not self.no_target_optimize)) if self.target_version: lines.append("target_version=%s" % self.target_version) if self.user_access_control: lines.append("user_access_control=%s" % self.user_access_control) title = self.title or self.distribution.get_fullname() lines.append("title=%s" % escape(title)) import time import distutils build_info = "Built %s with distutils-%s" % \ (time.ctime(time.time()), distutils.__version__) lines.append("build_info=%s" % build_info) return "\n".join(lines) def create_exe(self, arcname, fullname, bitmap=None): import struct self.mkpath(self.dist_dir) cfgdata = self.get_inidata() installer_name = self.get_installer_filename(fullname) self.announce("creating %s" % installer_name) if bitmap: bitmapdata = open(bitmap, "rb").read() bitmaplen = len(bitmapdata) else: bitmaplen = 0 file = open(installer_name, "wb") file.write(self.get_exe_bytes()) if bitmap: file.write(bitmapdata) # Convert cfgdata from unicode to ascii, mbcs encoded if isinstance(cfgdata, str): cfgdata = cfgdata.encode("mbcs") # Append the pre-install script cfgdata = cfgdata + b"\0" if self.pre_install_script: # We need to normalize newlines, so we open in text mode and # convert back to bytes. "latin-1" simply avoids any possible # failures. with open(self.pre_install_script, "r", encoding="latin-1") as script: script_data = script.read().encode("latin-1") cfgdata = cfgdata + script_data + b"\n\0" else: # empty pre-install script cfgdata = cfgdata + b"\0" file.write(cfgdata) # The 'magic number' 0x1234567B is used to make sure that the # binary layout of 'cfgdata' is what the wininst.exe binary # expects. If the layout changes, increment that number, make # the corresponding changes to the wininst.exe sources, and # recompile them. header = struct.pack("vvcommand/build_ext.pynu["""distutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).""" import contextlib import os import re import sys from distutils.core import Command from distutils.errors import * from distutils.sysconfig import customize_compiler, get_python_version from distutils.sysconfig import get_config_h_filename from distutils.dep_util import newer_group from distutils.extension import Extension from distutils.util import get_platform from distutils import log from site import USER_BASE # An extension name is just a dot-separated list of Python NAMEs (ie. # the same as a fully-qualified module name). extension_name_re = re.compile \ (r'^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$') def show_compilers (): from distutils.ccompiler import show_compilers show_compilers() class build_ext(Command): description = "build C/C++ extensions (compile/link to build directory)" # XXX thoughts on how to deal with complex command-line options like # these, i.e. how to make it so fancy_getopt can suck them off the # command line and make it look like setup.py defined the appropriate # lists of tuples of what-have-you. # - each command needs a callback to process its command-line options # - Command.__init__() needs access to its share of the whole # command line (must ultimately come from # Distribution.parse_command_line()) # - it then calls the current command class' option-parsing # callback to deal with weird options like -D, which have to # parse the option text and churn out some custom data # structure # - that data structure (in this case, a list of 2-tuples) # will then be present in the command object by the time # we get to finalize_options() (i.e. the constructor # takes care of both command-line and client options # in between initialize_options() and finalize_options()) sep_by = " (separated by '%s')" % os.pathsep user_options = [ ('build-lib=', 'b', "directory for compiled extension modules"), ('build-temp=', 't', "directory for temporary files (build by-products)"), ('plat-name=', 'p', "platform name to cross-compile for, if supported " "(default: %s)" % get_platform()), ('inplace', 'i', "ignore build-lib and put compiled extensions into the source " + "directory alongside your pure Python modules"), ('include-dirs=', 'I', "list of directories to search for header files" + sep_by), ('define=', 'D', "C preprocessor macros to define"), ('undef=', 'U', "C preprocessor macros to undefine"), ('libraries=', 'l', "external C libraries to link with"), ('library-dirs=', 'L', "directories to search for external C libraries" + sep_by), ('rpath=', 'R', "directories to search for shared C libraries at runtime"), ('link-objects=', 'O', "extra explicit link objects to include in the link"), ('debug', 'g', "compile/link with debugging information"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), ('compiler=', 'c', "specify the compiler type"), ('parallel=', 'j', "number of parallel build jobs"), ('swig-cpp', None, "make SWIG create C++ files (default is C)"), ('swig-opts=', None, "list of SWIG command line options"), ('swig=', None, "path to the SWIG executable"), ('user', None, "add user include, library and rpath") ] boolean_options = ['inplace', 'debug', 'force', 'swig-cpp', 'user'] help_options = [ ('help-compiler', None, "list available compilers", show_compilers), ] def initialize_options(self): self.extensions = None self.build_lib = None self.plat_name = None self.build_temp = None self.inplace = 0 self.package = None self.include_dirs = None self.define = None self.undef = None self.libraries = None self.library_dirs = None self.rpath = None self.link_objects = None self.debug = None self.force = None self.compiler = None self.swig = None self.swig_cpp = None self.swig_opts = None self.user = None self.parallel = None def finalize_options(self): from distutils import sysconfig self.set_undefined_options('build', ('build_lib', 'build_lib'), ('build_temp', 'build_temp'), ('compiler', 'compiler'), ('debug', 'debug'), ('force', 'force'), ('parallel', 'parallel'), ('plat_name', 'plat_name'), ) if self.package is None: self.package = self.distribution.ext_package self.extensions = self.distribution.ext_modules # Make sure Python's include directories (for Python.h, pyconfig.h, # etc.) are in the include search path. py_include = sysconfig.get_python_inc() plat_py_include = sysconfig.get_python_inc(plat_specific=1) if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] if isinstance(self.include_dirs, str): self.include_dirs = self.include_dirs.split(os.pathsep) # If in a virtualenv, add its include directory # Issue 16116 if sys.exec_prefix != sys.base_exec_prefix: self.include_dirs.append(os.path.join(sys.exec_prefix, 'include')) # Put the Python "system" include dir at the end, so that # any local include dirs take precedence. self.include_dirs.extend(py_include.split(os.path.pathsep)) if plat_py_include != py_include: self.include_dirs.extend( plat_py_include.split(os.path.pathsep)) self.ensure_string_list('libraries') self.ensure_string_list('link_objects') # Life is easier if we're not forever checking for None, so # simplify these options to empty lists if unset if self.libraries is None: self.libraries = [] if self.library_dirs is None: self.library_dirs = [] elif isinstance(self.library_dirs, str): self.library_dirs = self.library_dirs.split(os.pathsep) if self.rpath is None: self.rpath = [] elif isinstance(self.rpath, str): self.rpath = self.rpath.split(os.pathsep) # for extensions under windows use different directories # for Release and Debug builds. # also Python's library directory must be appended to library_dirs if os.name == 'nt': # the 'libs' directory is for binary installs - we assume that # must be the *native* platform. But we don't really support # cross-compiling via a binary install anyway, so we let it go. self.library_dirs.append(os.path.join(sys.exec_prefix, 'libs')) if sys.base_exec_prefix != sys.prefix: # Issue 16116 self.library_dirs.append(os.path.join(sys.base_exec_prefix, 'libs')) if self.debug: self.build_temp = os.path.join(self.build_temp, "Debug") else: self.build_temp = os.path.join(self.build_temp, "Release") # Append the source distribution include and library directories, # this allows distutils on windows to work in the source tree self.include_dirs.append(os.path.dirname(get_config_h_filename())) _sys_home = getattr(sys, '_home', None) if _sys_home: self.library_dirs.append(_sys_home) # Use the .lib files for the correct architecture if self.plat_name == 'win32': suffix = 'win32' else: # win-amd64 suffix = self.plat_name[4:] new_lib = os.path.join(sys.exec_prefix, 'PCbuild') if suffix: new_lib = os.path.join(new_lib, suffix) self.library_dirs.append(new_lib) # For extensions under Cygwin, Python's library directory must be # appended to library_dirs if sys.platform[:6] == 'cygwin': if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions self.library_dirs.append(os.path.join(sys.prefix, "lib", "python" + get_python_version(), "config")) else: # building python standard extensions self.library_dirs.append('.') # For building extensions with a shared Python library, # Python's library directory must be appended to library_dirs # See Issues: #1600860, #4366 if (sysconfig.get_config_var('Py_ENABLE_SHARED')): if not sysconfig.python_build: # building third party extensions self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) else: # building python standard extensions self.library_dirs.append('.') # The argument parsing will result in self.define being a string, but # it has to be a list of 2-tuples. All the preprocessor symbols # specified by the 'define' option will be set to '1'. Multiple # symbols can be separated with commas. if self.define: defines = self.define.split(',') self.define = [(symbol, '1') for symbol in defines] # The option for macros to undefine is also a string from the # option parsing, but has to be a list. Multiple symbols can also # be separated with commas here. if self.undef: self.undef = self.undef.split(',') if self.swig_opts is None: self.swig_opts = [] else: self.swig_opts = self.swig_opts.split(' ') # Finally add the user include and library directories if requested if self.user: user_include = os.path.join(USER_BASE, "include") user_lib = os.path.join(USER_BASE, "lib") if os.path.isdir(user_include): self.include_dirs.append(user_include) if os.path.isdir(user_lib): self.library_dirs.append(user_lib) self.rpath.append(user_lib) if isinstance(self.parallel, str): try: self.parallel = int(self.parallel) except ValueError: raise DistutilsOptionError("parallel should be an integer") def run(self): from distutils.ccompiler import new_compiler # 'self.extensions', as supplied by setup.py, is a list of # Extension instances. See the documentation for Extension (in # distutils.extension) for details. # # For backwards compatibility with Distutils 0.8.2 and earlier, we # also allow the 'extensions' list to be a list of tuples: # (ext_name, build_info) # where build_info is a dictionary containing everything that # Extension instances do except the name, with a few things being # differently named. We convert these 2-tuples to Extension # instances as needed. if not self.extensions: return # If we were asked to build any C/C++ libraries, make sure that the # directory where we put them is in the library search path for # linking extensions. if self.distribution.has_c_libraries(): build_clib = self.get_finalized_command('build_clib') self.libraries.extend(build_clib.get_library_names() or []) self.library_dirs.append(build_clib.build_clib) # Setup the CCompiler object that we'll use to do all the # compiling and linking self.compiler = new_compiler(compiler=self.compiler, verbose=self.verbose, dry_run=self.dry_run, force=self.force) customize_compiler(self.compiler) # If we are cross-compiling, init the compiler now (if we are not # cross-compiling, init would not hurt, but people may rely on # late initialization of compiler even if they shouldn't...) if os.name == 'nt' and self.plat_name != get_platform(): self.compiler.initialize(self.plat_name) # And make sure that any compile/link-related options (which might # come from the command-line or from the setup script) are set in # that CCompiler object -- that way, they automatically apply to # all compiling and linking done here. if self.include_dirs is not None: self.compiler.set_include_dirs(self.include_dirs) if self.define is not None: # 'define' option is a list of (name,value) tuples for (name, value) in self.define: self.compiler.define_macro(name, value) if self.undef is not None: for macro in self.undef: self.compiler.undefine_macro(macro) if self.libraries is not None: self.compiler.set_libraries(self.libraries) if self.library_dirs is not None: self.compiler.set_library_dirs(self.library_dirs) if self.rpath is not None: self.compiler.set_runtime_library_dirs(self.rpath) if self.link_objects is not None: self.compiler.set_link_objects(self.link_objects) # Now actually compile and link everything. self.build_extensions() def check_extensions_list(self, extensions): """Ensure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. """ if not isinstance(extensions, list): raise DistutilsSetupError( "'ext_modules' option must be a list of Extension instances") for i, ext in enumerate(extensions): if isinstance(ext, Extension): continue # OK! (assume type-checking done # by Extension constructor) if not isinstance(ext, tuple) or len(ext) != 2: raise DistutilsSetupError( "each element of 'ext_modules' option must be an " "Extension instance or 2-tuple") ext_name, build_info = ext log.warn("old-style (ext_name, build_info) tuple found in " "ext_modules for extension '%s' " "-- please convert to Extension instance", ext_name) if not (isinstance(ext_name, str) and extension_name_re.match(ext_name)): raise DistutilsSetupError( "first element of each tuple in 'ext_modules' " "must be the extension name (a string)") if not isinstance(build_info, dict): raise DistutilsSetupError( "second element of each tuple in 'ext_modules' " "must be a dictionary (build info)") # OK, the (ext_name, build_info) dict is type-safe: convert it # to an Extension instance. ext = Extension(ext_name, build_info['sources']) # Easy stuff: one-to-one mapping from dict elements to # instance attributes. for key in ('include_dirs', 'library_dirs', 'libraries', 'extra_objects', 'extra_compile_args', 'extra_link_args'): val = build_info.get(key) if val is not None: setattr(ext, key, val) # Medium-easy stuff: same syntax/semantics, different names. ext.runtime_library_dirs = build_info.get('rpath') if 'def_file' in build_info: log.warn("'def_file' element of build info dict " "no longer supported") # Non-trivial stuff: 'macros' split into 'define_macros' # and 'undef_macros'. macros = build_info.get('macros') if macros: ext.define_macros = [] ext.undef_macros = [] for macro in macros: if not (isinstance(macro, tuple) and len(macro) in (1, 2)): raise DistutilsSetupError( "'macros' element of build info dict " "must be 1- or 2-tuple") if len(macro) == 1: ext.undef_macros.append(macro[0]) elif len(macro) == 2: ext.define_macros.append(macro) extensions[i] = ext def get_source_files(self): self.check_extensions_list(self.extensions) filenames = [] # Wouldn't it be neat if we knew the names of header files too... for ext in self.extensions: filenames.extend(ext.sources) return filenames def get_outputs(self): # Sanity check the 'extensions' list -- can't assume this is being # done in the same run as a 'build_extensions()' call (in fact, we # can probably assume that it *isn't*!). self.check_extensions_list(self.extensions) # And build the list of output (built) filenames. Note that this # ignores the 'inplace' flag, and assumes everything goes in the # "build" tree. outputs = [] for ext in self.extensions: outputs.append(self.get_ext_fullpath(ext.name)) return outputs def build_extensions(self): # First, sanity-check the 'extensions' list self.check_extensions_list(self.extensions) if self.parallel: self._build_extensions_parallel() else: self._build_extensions_serial() def _build_extensions_parallel(self): workers = self.parallel if self.parallel is True: workers = os.cpu_count() # may return None try: from concurrent.futures import ThreadPoolExecutor except ImportError: workers = None if workers is None: self._build_extensions_serial() return with ThreadPoolExecutor(max_workers=workers) as executor: futures = [executor.submit(self.build_extension, ext) for ext in self.extensions] for ext, fut in zip(self.extensions, futures): with self._filter_build_errors(ext): fut.result() def _build_extensions_serial(self): for ext in self.extensions: with self._filter_build_errors(ext): self.build_extension(ext) @contextlib.contextmanager def _filter_build_errors(self, ext): try: yield except (CCompilerError, DistutilsError, CompileError) as e: if not ext.optional: raise self.warn('building extension "%s" failed: %s' % (ext.name, e)) def build_extension(self, ext): sources = ext.sources if sources is None or not isinstance(sources, (list, tuple)): raise DistutilsSetupError( "in 'ext_modules' option (extension '%s'), " "'sources' must be present and must be " "a list of source filenames" % ext.name) sources = list(sources) ext_path = self.get_ext_fullpath(ext.name) depends = sources + ext.depends if not (self.force or newer_group(depends, ext_path, 'newer')): log.debug("skipping '%s' extension (up-to-date)", ext.name) return else: log.info("building '%s' extension", ext.name) # First, scan the sources for SWIG definition files (.i), run # SWIG on 'em to create .c files, and modify the sources list # accordingly. sources = self.swig_sources(sources, ext) # Next, compile the source code to object files. # XXX not honouring 'define_macros' or 'undef_macros' -- the # CCompiler API needs to change to accommodate this, and I # want to do one thing at a time! # Two possible sources for extra compiler arguments: # - 'extra_compile_args' in Extension object # - CFLAGS environment variable (not particularly # elegant, but people seem to expect it and I # guess it's useful) # The environment variable should take precedence, and # any sensible compiler will give precedence to later # command line args. Hence we combine them in order: extra_args = ext.extra_compile_args or [] macros = ext.define_macros[:] for undef in ext.undef_macros: macros.append((undef,)) objects = self.compiler.compile(sources, output_dir=self.build_temp, macros=macros, include_dirs=ext.include_dirs, debug=self.debug, extra_postargs=extra_args, depends=ext.depends) # XXX outdated variable, kept here in case third-part code # needs it. self._built_objects = objects[:] # Now link the object files together into a "shared object" -- # of course, first we have to figure out all the other things # that go into the mix. if ext.extra_objects: objects.extend(ext.extra_objects) extra_args = ext.extra_link_args or [] # Detect target language, if not provided language = ext.language or self.compiler.detect_language(sources) self.compiler.link_shared_object( objects, ext_path, libraries=self.get_libraries(ext), library_dirs=ext.library_dirs, runtime_library_dirs=ext.runtime_library_dirs, extra_postargs=extra_args, export_symbols=self.get_export_symbols(ext), debug=self.debug, build_temp=self.build_temp, target_lang=language) def swig_sources(self, sources, extension): """Walk the list of source files in 'sources', looking for SWIG interface (.i) files. Run SWIG on all that are found, and return a modified 'sources' list with SWIG source files replaced by the generated C (or C++) files. """ new_sources = [] swig_sources = [] swig_targets = {} # XXX this drops generated C/C++ files into the source tree, which # is fine for developers who want to distribute the generated # source -- but there should be an option to put SWIG output in # the temp dir. if self.swig_cpp: log.warn("--swig-cpp is deprecated - use --swig-opts=-c++") if self.swig_cpp or ('-c++' in self.swig_opts) or \ ('-c++' in extension.swig_opts): target_ext = '.cpp' else: target_ext = '.c' for source in sources: (base, ext) = os.path.splitext(source) if ext == ".i": # SWIG interface file new_sources.append(base + '_wrap' + target_ext) swig_sources.append(source) swig_targets[source] = new_sources[-1] else: new_sources.append(source) if not swig_sources: return new_sources swig = self.swig or self.find_swig() swig_cmd = [swig, "-python"] swig_cmd.extend(self.swig_opts) if self.swig_cpp: swig_cmd.append("-c++") # Do not override commandline arguments if not self.swig_opts: for o in extension.swig_opts: swig_cmd.append(o) for source in swig_sources: target = swig_targets[source] log.info("swigging %s to %s", source, target) self.spawn(swig_cmd + ["-o", target, source]) return new_sources def find_swig(self): """Return the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. """ if os.name == "posix": return "swig" elif os.name == "nt": # Look for SWIG in its standard installation directory on # Windows (or so I presume!). If we find it there, great; # if not, act like Unix and assume it's in the PATH. for vers in ("1.3", "1.2", "1.1"): fn = os.path.join("c:\\swig%s" % vers, "swig.exe") if os.path.isfile(fn): return fn else: return "swig.exe" else: raise DistutilsPlatformError( "I don't know how to find (much less run) SWIG " "on platform '%s'" % os.name) # -- Name generators ----------------------------------------------- # (extension names, filenames, whatever) def get_ext_fullpath(self, ext_name): """Returns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). """ fullname = self.get_ext_fullname(ext_name) modpath = fullname.split('.') filename = self.get_ext_filename(modpath[-1]) if not self.inplace: # no further work needed # returning : # build_dir/package/path/filename filename = os.path.join(*modpath[:-1]+[filename]) return os.path.join(self.build_lib, filename) # the inplace option requires to find the package directory # using the build_py command for that package = '.'.join(modpath[0:-1]) build_py = self.get_finalized_command('build_py') package_dir = os.path.abspath(build_py.get_package_dir(package)) # returning # package_dir/filename return os.path.join(package_dir, filename) def get_ext_fullname(self, ext_name): """Returns the fullname of a given extension name. Adds the `package.` prefix""" if self.package is None: return ext_name else: return self.package + '.' + ext_name def get_ext_filename(self, ext_name): r"""Convert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). """ from distutils.sysconfig import get_config_var ext_path = ext_name.split('.') ext_suffix = get_config_var('EXT_SUFFIX') return os.path.join(*ext_path) + ext_suffix def get_export_symbols(self, ext): """Return the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. """ initfunc_name = "PyInit_" + ext.name.split('.')[-1] if initfunc_name not in ext.export_symbols: ext.export_symbols.append(initfunc_name) return ext.export_symbols def get_libraries(self, ext): """Return the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). """ # The python library is always needed on Windows. For MSVC, this # is redundant, since the library is mentioned in a pragma in # pyconfig.h that MSVC groks. The other Windows compilers all seem # to need it mentioned explicitly, though, so that's what we do. # Append '_d' to the python import library on debug builds. if sys.platform == "win32": from distutils._msvccompiler import MSVCCompiler if not isinstance(self.compiler, MSVCCompiler): template = "python%d%d" if self.debug: template = template + '_d' pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) # don't extend ext.libraries, it may be shared with other # extensions, it is a reference to the original list return ext.libraries + [pythonlib] else: return ext.libraries elif sys.platform == 'darwin': # Don't use the default code below return ext.libraries elif sys.platform[:3] == 'aix': # Don't use the default code below return ext.libraries else: from distutils import sysconfig if sysconfig.get_config_var('Py_ENABLE_SHARED'): pythonlib = 'python{}.{}{}'.format( sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff, sysconfig.get_config_var('ABIFLAGS')) return ext.libraries + [pythonlib] else: return ext.libraries PKD] command/install_lib.pynu["""distutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).""" import os import importlib.util import sys from distutils.core import Command from distutils.errors import DistutilsOptionError # Extension for Python source files. PYTHON_SOURCE_EXTENSION = ".py" class install_lib(Command): description = "install all Python modules (extensions and pure Python)" # The byte-compilation options are a tad confusing. Here are the # possible scenarios: # 1) no compilation at all (--no-compile --no-optimize) # 2) compile .pyc only (--compile --no-optimize; default) # 3) compile .pyc and "opt-1" .pyc (--compile --optimize) # 4) compile "opt-1" .pyc only (--no-compile --optimize) # 5) compile .pyc and "opt-2" .pyc (--compile --optimize-more) # 6) compile "opt-2" .pyc only (--no-compile --optimize-more) # # The UI for this is two options, 'compile' and 'optimize'. # 'compile' is strictly boolean, and only decides whether to # generate .pyc files. 'optimize' is three-way (0, 1, or 2), and # decides both whether to generate .pyc files and what level of # optimization to use. user_options = [ ('install-dir=', 'd', "directory to install to"), ('build-dir=','b', "build directory (where to install from)"), ('force', 'f', "force installation (overwrite existing files)"), ('compile', 'c', "compile .py to .pyc [default]"), ('no-compile', None, "don't compile .py files"), ('optimize=', 'O', "also compile with optimization: -O1 for \"python -O\", " "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), ('skip-build', None, "skip the build steps"), ] boolean_options = ['force', 'compile', 'skip-build'] negative_opt = {'no-compile' : 'compile'} def initialize_options(self): # let the 'install' command dictate our installation directory self.install_dir = None self.build_dir = None self.force = 0 self.compile = None self.optimize = None self.skip_build = None def finalize_options(self): # Get all the information we need to install pure Python modules # from the umbrella 'install' command -- build (source) directory, # install (target) directory, and whether to compile .py files. self.set_undefined_options('install', ('build_lib', 'build_dir'), ('install_lib', 'install_dir'), ('force', 'force'), ('compile', 'compile'), ('optimize', 'optimize'), ('skip_build', 'skip_build'), ) if self.compile is None: self.compile = True if self.optimize is None: self.optimize = False if not isinstance(self.optimize, int): try: self.optimize = int(self.optimize) if self.optimize not in (0, 1, 2): raise AssertionError except (ValueError, AssertionError): raise DistutilsOptionError("optimize must be 0, 1, or 2") def run(self): # Make sure we have built everything we need first self.build() # Install everything: simply dump the entire contents of the build # directory to the installation directory (that's the beauty of # having a build directory!) outfiles = self.install() # (Optionally) compile .py to .pyc if outfiles is not None and self.distribution.has_pure_modules(): self.byte_compile(outfiles) # -- Top-level worker functions ------------------------------------ # (called from 'run()') def build(self): if not self.skip_build: if self.distribution.has_pure_modules(): self.run_command('build_py') if self.distribution.has_ext_modules(): self.run_command('build_ext') def install(self): if os.path.isdir(self.build_dir): outfiles = self.copy_tree(self.build_dir, self.install_dir) else: self.warn("'%s' does not exist -- no Python modules to install" % self.build_dir) return return outfiles def byte_compile(self, files): if sys.dont_write_bytecode: self.warn('byte-compiling is disabled, skipping.') return from distutils.util import byte_compile # Get the "--root" directory supplied to the "install" command, # and use it as a prefix to strip off the purported filename # encoded in bytecode files. This is far from complete, but it # should at least generate usable bytecode in RPM distributions. install_root = self.get_finalized_command('install').root if self.compile: byte_compile(files, optimize=0, force=self.force, prefix=install_root, dry_run=self.dry_run) if self.optimize > 0: byte_compile(files, optimize=self.optimize, force=self.force, prefix=install_root, verbose=self.verbose, dry_run=self.dry_run) # -- Utility methods ----------------------------------------------- def _mutate_outputs(self, has_any, build_cmd, cmd_option, output_dir): if not has_any: return [] build_cmd = self.get_finalized_command(build_cmd) build_files = build_cmd.get_outputs() build_dir = getattr(build_cmd, cmd_option) prefix_len = len(build_dir) + len(os.sep) outputs = [] for file in build_files: outputs.append(os.path.join(output_dir, file[prefix_len:])) return outputs def _bytecode_filenames(self, py_filenames): bytecode_files = [] for py_file in py_filenames: # Since build_py handles package data installation, the # list of outputs can contain more than just .py files. # Make sure we only report bytecode for the .py files. ext = os.path.splitext(os.path.normcase(py_file))[1] if ext != PYTHON_SOURCE_EXTENSION: continue if self.compile: bytecode_files.append(importlib.util.cache_from_source( py_file, optimization='')) if self.optimize > 0: bytecode_files.append(importlib.util.cache_from_source( py_file, optimization=self.optimize)) return bytecode_files # -- External interface -------------------------------------------- # (called by outsiders) def get_outputs(self): """Return the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. """ pure_outputs = \ self._mutate_outputs(self.distribution.has_pure_modules(), 'build_py', 'build_lib', self.install_dir) if self.compile: bytecode_outputs = self._bytecode_filenames(pure_outputs) else: bytecode_outputs = [] ext_outputs = \ self._mutate_outputs(self.distribution.has_ext_modules(), 'build_ext', 'build_lib', self.install_dir) return pure_outputs + bytecode_outputs + ext_outputs def get_inputs(self): """Get the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. """ inputs = [] if self.distribution.has_pure_modules(): build_py = self.get_finalized_command('build_py') inputs.extend(build_py.get_outputs()) if self.distribution.has_ext_modules(): build_ext = self.get_finalized_command('build_ext') inputs.extend(build_ext.get_outputs()) return inputs PKD];Rcommand/check.pynu["""distutils.command.check Implements the Distutils 'check' command. """ from distutils.core import Command from distutils.errors import DistutilsSetupError try: # docutils is installed from docutils.utils import Reporter from docutils.parsers.rst import Parser from docutils import frontend from docutils import nodes from io import StringIO class SilentReporter(Reporter): def __init__(self, source, report_level, halt_level, stream=None, debug=0, encoding='ascii', error_handler='replace'): self.messages = [] Reporter.__init__(self, source, report_level, halt_level, stream, debug, encoding, error_handler) def system_message(self, level, message, *children, **kwargs): self.messages.append((level, message, children, kwargs)) return nodes.system_message(message, level=level, type=self.levels[level], *children, **kwargs) HAS_DOCUTILS = True except Exception: # Catch all exceptions because exceptions besides ImportError probably # indicate that docutils is not ported to Py3k. HAS_DOCUTILS = False class check(Command): """This command checks the meta-data of the package. """ description = ("perform some checks on the package") user_options = [('metadata', 'm', 'Verify meta-data'), ('restructuredtext', 'r', ('Checks if long string meta-data syntax ' 'are reStructuredText-compliant')), ('strict', 's', 'Will exit with an error if a check fails')] boolean_options = ['metadata', 'restructuredtext', 'strict'] def initialize_options(self): """Sets default values for options.""" self.restructuredtext = 0 self.metadata = 1 self.strict = 0 self._warnings = 0 def finalize_options(self): pass def warn(self, msg): """Counts the number of warnings that occurs.""" self._warnings += 1 return Command.warn(self, msg) def run(self): """Runs the command.""" # perform the various tests if self.metadata: self.check_metadata() if self.restructuredtext: if HAS_DOCUTILS: self.check_restructuredtext() elif self.strict: raise DistutilsSetupError('The docutils package is needed.') # let's raise an error in strict mode, if we have at least # one warning if self.strict and self._warnings > 0: raise DistutilsSetupError('Please correct your package.') def check_metadata(self): """Ensures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. """ metadata = self.distribution.metadata missing = [] for attr in ('name', 'version', 'url'): if not (hasattr(metadata, attr) and getattr(metadata, attr)): missing.append(attr) if missing: self.warn("missing required meta-data: %s" % ', '.join(missing)) if metadata.author: if not metadata.author_email: self.warn("missing meta-data: if 'author' supplied, " + "'author_email' must be supplied too") elif metadata.maintainer: if not metadata.maintainer_email: self.warn("missing meta-data: if 'maintainer' supplied, " + "'maintainer_email' must be supplied too") else: self.warn("missing meta-data: either (author and author_email) " + "or (maintainer and maintainer_email) " + "must be supplied") def check_restructuredtext(self): """Checks if the long string fields are reST-compliant.""" data = self.distribution.get_long_description() for warning in self._check_rst_data(data): line = warning[-1].get('line') if line is None: warning = warning[1] else: warning = '%s (line %s)' % (warning[1], line) self.warn(warning) def _check_rst_data(self, data): """Returns warnings when the provided data doesn't compile.""" # the include and csv_table directives need this to be a path source_path = self.distribution.script_name or 'setup.py' parser = Parser() settings = frontend.OptionParser(components=(Parser,)).get_default_values() settings.tab_width = 4 settings.pep_references = None settings.rfc_references = None reporter = SilentReporter(source_path, settings.report_level, settings.halt_level, stream=settings.warning_stream, debug=settings.debug, encoding=settings.error_encoding, error_handler=settings.error_encoding_error_handler) document = nodes.document(settings, reporter, source=source_path) document.note_source(source_path, -1) try: parser.parse(data, document) except AttributeError as e: reporter.messages.append( (-1, 'Could not finish the parsing: %s.' % e, '', {})) return reporter.messages PKD]--command/register.pynu["""distutils.command.register Implements the Distutils 'register' command (register with the repository). """ # created 2002/10/21, Richard Jones import getpass import io import urllib.parse, urllib.request from warnings import warn from distutils.core import PyPIRCCommand from distutils.errors import * from distutils import log class register(PyPIRCCommand): description = ("register the distribution with the Python package index") user_options = PyPIRCCommand.user_options + [ ('list-classifiers', None, 'list the valid Trove classifiers'), ('strict', None , 'Will stop the registering if the meta-data are not fully compliant') ] boolean_options = PyPIRCCommand.boolean_options + [ 'verify', 'list-classifiers', 'strict'] sub_commands = [('check', lambda self: True)] def initialize_options(self): PyPIRCCommand.initialize_options(self) self.list_classifiers = 0 self.strict = 0 def finalize_options(self): PyPIRCCommand.finalize_options(self) # setting options for the `check` subcommand check_options = {'strict': ('register', self.strict), 'restructuredtext': ('register', 1)} self.distribution.command_options['check'] = check_options def run(self): self.finalize_options() self._set_config() # Run sub commands for cmd_name in self.get_sub_commands(): self.run_command(cmd_name) if self.dry_run: self.verify_metadata() elif self.list_classifiers: self.classifiers() else: self.send_metadata() def check_metadata(self): """Deprecated API.""" warn("distutils.command.register.check_metadata is deprecated, \ use the check command instead", PendingDeprecationWarning) check = self.distribution.get_command_obj('check') check.ensure_finalized() check.strict = self.strict check.restructuredtext = 1 check.run() def _set_config(self): ''' Reads the configuration file and set attributes. ''' config = self._read_pypirc() if config != {}: self.username = config['username'] self.password = config['password'] self.repository = config['repository'] self.realm = config['realm'] self.has_config = True else: if self.repository not in ('pypi', self.DEFAULT_REPOSITORY): raise ValueError('%s not found in .pypirc' % self.repository) if self.repository == 'pypi': self.repository = self.DEFAULT_REPOSITORY self.has_config = False def classifiers(self): ''' Fetch the list of classifiers from the server. ''' url = self.repository+'?:action=list_classifiers' response = urllib.request.urlopen(url) log.info(self._read_pypi_response(response)) def verify_metadata(self): ''' Send the metadata to the package index server to be checked. ''' # send the info to the server and report the result (code, result) = self.post_to_server(self.build_post_data('verify')) log.info('Server response (%s): %s', code, result) def send_metadata(self): ''' Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. ''' # see if we can short-cut and get the username/password from the # config if self.has_config: choice = '1' username = self.username password = self.password else: choice = 'x' username = password = '' # get the user's login info choices = '1 2 3 4'.split() while choice not in choices: self.announce('''\ We need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: ''', log.INFO) choice = input() if not choice: choice = '1' elif choice not in choices: print('Please choose one of the four options!') if choice == '1': # get the username and password while not username: username = input('Username: ') while not password: password = getpass.getpass('Password: ') # set up the authentication auth = urllib.request.HTTPPasswordMgr() host = urllib.parse.urlparse(self.repository)[1] auth.add_password(self.realm, host, username, password) # send the info to the server and report the result code, result = self.post_to_server(self.build_post_data('submit'), auth) self.announce('Server response (%s): %s' % (code, result), log.INFO) # possibly save the login if code == 200: if self.has_config: # sharing the password in the distribution instance # so the upload command can reuse it self.distribution.password = password else: self.announce(('I can store your PyPI login so future ' 'submissions will be faster.'), log.INFO) self.announce('(the login will be stored in %s)' % \ self._get_rc_file(), log.INFO) choice = 'X' while choice.lower() not in 'yn': choice = input('Save your login (y/N)?') if not choice: choice = 'n' if choice.lower() == 'y': self._store_pypirc(username, password) elif choice == '2': data = {':action': 'user'} data['name'] = data['password'] = data['email'] = '' data['confirm'] = None while not data['name']: data['name'] = input('Username: ') while data['password'] != data['confirm']: while not data['password']: data['password'] = getpass.getpass('Password: ') while not data['confirm']: data['confirm'] = getpass.getpass(' Confirm: ') if data['password'] != data['confirm']: data['password'] = '' data['confirm'] = None print("Password and confirm don't match!") while not data['email']: data['email'] = input(' EMail: ') code, result = self.post_to_server(data) if code != 200: log.info('Server response (%s): %s', code, result) else: log.info('You will receive an email shortly.') log.info(('Follow the instructions in it to ' 'complete registration.')) elif choice == '3': data = {':action': 'password_reset'} data['email'] = '' while not data['email']: data['email'] = input('Your email address: ') code, result = self.post_to_server(data) log.info('Server response (%s): %s', code, result) def build_post_data(self, action): # figure the data to send - the metadata plus some additional # information used by the package server meta = self.distribution.metadata data = { ':action': action, 'metadata_version' : '1.0', 'name': meta.get_name(), 'version': meta.get_version(), 'summary': meta.get_description(), 'home_page': meta.get_url(), 'author': meta.get_contact(), 'author_email': meta.get_contact_email(), 'license': meta.get_licence(), 'description': meta.get_long_description(), 'keywords': meta.get_keywords(), 'platform': meta.get_platforms(), 'classifiers': meta.get_classifiers(), 'download_url': meta.get_download_url(), # PEP 314 'provides': meta.get_provides(), 'requires': meta.get_requires(), 'obsoletes': meta.get_obsoletes(), } if data['provides'] or data['requires'] or data['obsoletes']: data['metadata_version'] = '1.1' return data def post_to_server(self, data, auth=None): ''' Post a query to the server, and return a string response. ''' if 'name' in data: self.announce('Registering %s to %s' % (data['name'], self.repository), log.INFO) # Build up the MIME payload for the urllib2 POST data boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' sep_boundary = '\n--' + boundary end_boundary = sep_boundary + '--' body = io.StringIO() for key, value in data.items(): # handle multiple entries for the same name if type(value) not in (type([]), type( () )): value = [value] for value in value: value = str(value) body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write("\n\n") body.write(value) if value and value[-1] == '\r': body.write('\n') # write an extra newline (lurve Macs) body.write(end_boundary) body.write("\n") body = body.getvalue().encode("utf-8") # build the Request headers = { 'Content-type': 'multipart/form-data; boundary=%s; charset=utf-8'%boundary, 'Content-length': str(len(body)) } req = urllib.request.Request(self.repository, body, headers) # handle HTTP and include the Basic Auth handler opener = urllib.request.build_opener( urllib.request.HTTPBasicAuthHandler(password_mgr=auth) ) data = '' try: result = opener.open(req) except urllib.error.HTTPError as e: if self.show_response: data = e.fp.read() result = e.code, e.msg except urllib.error.URLError as e: result = 500, str(e) else: if self.show_response: data = self._read_pypi_response(result) result = 200, 'OK' if self.show_response: msg = '\n'.join(('-' * 75, data, '-' * 75)) self.announce(msg, log.INFO) return result PKD],]]command/upload.pynu[""" distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). """ import os import io import platform import hashlib from base64 import standard_b64encode from urllib.request import urlopen, Request, HTTPError from urllib.parse import urlparse from distutils.errors import DistutilsError, DistutilsOptionError from distutils.core import PyPIRCCommand from distutils.spawn import spawn from distutils import log class upload(PyPIRCCommand): description = "upload binary package to PyPI" user_options = PyPIRCCommand.user_options + [ ('sign', 's', 'sign files to upload using gpg'), ('identity=', 'i', 'GPG identity used to sign files'), ] boolean_options = PyPIRCCommand.boolean_options + ['sign'] def initialize_options(self): PyPIRCCommand.initialize_options(self) self.username = '' self.password = '' self.show_response = 0 self.sign = False self.identity = None def finalize_options(self): PyPIRCCommand.finalize_options(self) if self.identity and not self.sign: raise DistutilsOptionError( "Must use --sign for --identity to have meaning" ) config = self._read_pypirc() if config != {}: self.username = config['username'] self.password = config['password'] self.repository = config['repository'] self.realm = config['realm'] # getting the password from the distribution # if previously set by the register command if not self.password and self.distribution.password: self.password = self.distribution.password def run(self): if not self.distribution.dist_files: msg = ("Must create and upload files in one command " "(e.g. setup.py sdist upload)") raise DistutilsOptionError(msg) for command, pyversion, filename in self.distribution.dist_files: self.upload_file(command, pyversion, filename) def upload_file(self, command, pyversion, filename): # Makes sure the repository URL is compliant schema, netloc, url, params, query, fragments = \ urlparse(self.repository) if params or query or fragments: raise AssertionError("Incompatible url %s" % self.repository) if schema not in ('http', 'https'): raise AssertionError("unsupported schema " + schema) # Sign if requested if self.sign: gpg_args = ["gpg", "--detach-sign", "-a", filename] if self.identity: gpg_args[2:2] = ["--local-user", self.identity] spawn(gpg_args, dry_run=self.dry_run) # Fill in the data - send all the meta-data in case we need to # register a new release f = open(filename,'rb') try: content = f.read() finally: f.close() meta = self.distribution.metadata data = { # action ':action': 'file_upload', 'protocol_version': '1', # identify release 'name': meta.get_name(), 'version': meta.get_version(), # file content 'content': (os.path.basename(filename),content), 'filetype': command, 'pyversion': pyversion, 'md5_digest': hashlib.md5(content).hexdigest(), # additional meta-data 'metadata_version': '1.0', 'summary': meta.get_description(), 'home_page': meta.get_url(), 'author': meta.get_contact(), 'author_email': meta.get_contact_email(), 'license': meta.get_licence(), 'description': meta.get_long_description(), 'keywords': meta.get_keywords(), 'platform': meta.get_platforms(), 'classifiers': meta.get_classifiers(), 'download_url': meta.get_download_url(), # PEP 314 'provides': meta.get_provides(), 'requires': meta.get_requires(), 'obsoletes': meta.get_obsoletes(), } comment = '' if command == 'bdist_rpm': dist, version, id = platform.dist() if dist: comment = 'built for %s %s' % (dist, version) elif command == 'bdist_dumb': comment = 'built for %s' % platform.platform(terse=1) data['comment'] = comment if self.sign: data['gpg_signature'] = (os.path.basename(filename) + ".asc", open(filename+".asc", "rb").read()) # set up the authentication user_pass = (self.username + ":" + self.password).encode('ascii') # The exact encoding of the authentication string is debated. # Anyway PyPI only accepts ascii for both username or password. auth = "Basic " + standard_b64encode(user_pass).decode('ascii') # Build up the MIME payload for the POST data boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' sep_boundary = b'\r\n--' + boundary.encode('ascii') end_boundary = sep_boundary + b'--\r\n' body = io.BytesIO() for key, value in data.items(): title = '\r\nContent-Disposition: form-data; name="%s"' % key # handle multiple entries for the same name if not isinstance(value, list): value = [value] for value in value: if type(value) is tuple: title += '; filename="%s"' % value[0] value = value[1] else: value = str(value).encode('utf-8') body.write(sep_boundary) body.write(title.encode('utf-8')) body.write(b"\r\n\r\n") body.write(value) body.write(end_boundary) body = body.getvalue() msg = "Submitting %s to %s" % (filename, self.repository) self.announce(msg, log.INFO) # build the Request headers = { 'Content-type': 'multipart/form-data; boundary=%s' % boundary, 'Content-length': str(len(body)), 'Authorization': auth, } request = Request(self.repository, data=body, headers=headers) # send the data try: result = urlopen(request) status = result.getcode() reason = result.msg except HTTPError as e: status = e.code reason = e.msg except OSError as e: self.announce(str(e), log.ERROR) raise if status == 200: self.announce('Server response (%s): %s' % (status, reason), log.INFO) if self.show_response: text = self._read_pypi_response(result) msg = '\n'.join(('-' * 75, text, '-' * 75)) self.announce(msg, log.INFO) else: msg = 'Upload failed (%s): %s' % (status, reason) self.announce(msg, log.ERROR) raise DistutilsError(msg) PKD], command/clean.pynu["""distutils.command.clean Implements the Distutils 'clean' command.""" # contributed by Bastian Kleineidam , added 2000-03-18 import os from distutils.core import Command from distutils.dir_util import remove_tree from distutils import log class clean(Command): description = "clean up temporary files from 'build' command" user_options = [ ('build-base=', 'b', "base build directory (default: 'build.build-base')"), ('build-lib=', None, "build directory for all modules (default: 'build.build-lib')"), ('build-temp=', 't', "temporary build directory (default: 'build.build-temp')"), ('build-scripts=', None, "build directory for scripts (default: 'build.build-scripts')"), ('bdist-base=', None, "temporary directory for built distributions"), ('all', 'a', "remove all build output, not just temporary by-products") ] boolean_options = ['all'] def initialize_options(self): self.build_base = None self.build_lib = None self.build_temp = None self.build_scripts = None self.bdist_base = None self.all = None def finalize_options(self): self.set_undefined_options('build', ('build_base', 'build_base'), ('build_lib', 'build_lib'), ('build_scripts', 'build_scripts'), ('build_temp', 'build_temp')) self.set_undefined_options('bdist', ('bdist_base', 'bdist_base')) def run(self): # remove the build/temp. directory (unless it's already # gone) if os.path.exists(self.build_temp): remove_tree(self.build_temp, dry_run=self.dry_run) else: log.debug("'%s' does not exist -- can't clean it", self.build_temp) if self.all: # remove build directories for directory in (self.build_lib, self.bdist_base, self.build_scripts): if os.path.exists(directory): remove_tree(directory, dry_run=self.dry_run) else: log.warn("'%s' does not exist -- can't clean it", directory) # just for the heck of it, try to remove the base build directory: # we might have emptied it right now, but if not we don't care if not self.dry_run: try: os.rmdir(self.build_base) log.info("removing '%s'", self.build_base) except OSError: pass PKD]* C Ccommand/build_py.pynu["""distutils.command.build_py Implements the Distutils 'build_py' command.""" import os import importlib.util import sys from glob import glob from distutils.core import Command from distutils.errors import * from distutils.util import convert_path, Mixin2to3 from distutils import log class build_py (Command): description = "\"build\" pure Python modules (copy to build directory)" user_options = [ ('build-lib=', 'd', "directory to \"build\" (copy) to"), ('compile', 'c', "compile .py to .pyc"), ('no-compile', None, "don't compile .py files [default]"), ('optimize=', 'O', "also compile with optimization: -O1 for \"python -O\", " "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), ] boolean_options = ['compile', 'force'] negative_opt = {'no-compile' : 'compile'} def initialize_options(self): self.build_lib = None self.py_modules = None self.package = None self.package_data = None self.package_dir = None self.compile = 0 self.optimize = 0 self.force = None def finalize_options(self): self.set_undefined_options('build', ('build_lib', 'build_lib'), ('force', 'force')) # Get the distribution options that are aliases for build_py # options -- list of packages and list of modules. self.packages = self.distribution.packages self.py_modules = self.distribution.py_modules self.package_data = self.distribution.package_data self.package_dir = {} if self.distribution.package_dir: for name, path in self.distribution.package_dir.items(): self.package_dir[name] = convert_path(path) self.data_files = self.get_data_files() # Ick, copied straight from install_lib.py (fancy_getopt needs a # type system! Hell, *everything* needs a type system!!!) if not isinstance(self.optimize, int): try: self.optimize = int(self.optimize) assert 0 <= self.optimize <= 2 except (ValueError, AssertionError): raise DistutilsOptionError("optimize must be 0, 1, or 2") def run(self): # XXX copy_file by default preserves atime and mtime. IMHO this is # the right thing to do, but perhaps it should be an option -- in # particular, a site administrator might want installed files to # reflect the time of installation rather than the last # modification time before the installed release. # XXX copy_file by default preserves mode, which appears to be the # wrong thing to do: if a file is read-only in the working # directory, we want it to be installed read/write so that the next # installation of the same module distribution can overwrite it # without problems. (This might be a Unix-specific issue.) Thus # we turn off 'preserve_mode' when copying to the build directory, # since the build directory is supposed to be exactly what the # installation will look like (ie. we preserve mode when # installing). # Two options control which modules will be installed: 'packages' # and 'py_modules'. The former lets us work with whole packages, not # specifying individual modules at all; the latter is for # specifying modules one-at-a-time. if self.py_modules: self.build_modules() if self.packages: self.build_packages() self.build_package_data() self.byte_compile(self.get_outputs(include_bytecode=0)) def get_data_files(self): """Generate list of '(package,src_dir,build_dir,filenames)' tuples""" data = [] if not self.packages: return data for package in self.packages: # Locate package source directory src_dir = self.get_package_dir(package) # Compute package build directory build_dir = os.path.join(*([self.build_lib] + package.split('.'))) # Length of path to strip from found files plen = 0 if src_dir: plen = len(src_dir)+1 # Strip directory from globbed filenames filenames = [ file[plen:] for file in self.find_data_files(package, src_dir) ] data.append((package, src_dir, build_dir, filenames)) return data def find_data_files(self, package, src_dir): """Return filenames for package's data files in 'src_dir'""" globs = (self.package_data.get('', []) + self.package_data.get(package, [])) files = [] for pattern in globs: # Each pattern has to be converted to a platform-specific path filelist = glob(os.path.join(src_dir, convert_path(pattern))) # Files that match more than one pattern are only added once files.extend([fn for fn in filelist if fn not in files and os.path.isfile(fn)]) return files def build_package_data(self): """Copy data files into build directory""" lastdir = None for package, src_dir, build_dir, filenames in self.data_files: for filename in filenames: target = os.path.join(build_dir, filename) self.mkpath(os.path.dirname(target)) self.copy_file(os.path.join(src_dir, filename), target, preserve_mode=False) def get_package_dir(self, package): """Return the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).""" path = package.split('.') if not self.package_dir: if path: return os.path.join(*path) else: return '' else: tail = [] while path: try: pdir = self.package_dir['.'.join(path)] except KeyError: tail.insert(0, path[-1]) del path[-1] else: tail.insert(0, pdir) return os.path.join(*tail) else: # Oops, got all the way through 'path' without finding a # match in package_dir. If package_dir defines a directory # for the root (nameless) package, then fallback on it; # otherwise, we might as well have not consulted # package_dir at all, as we just use the directory implied # by 'tail' (which should be the same as the original value # of 'path' at this point). pdir = self.package_dir.get('') if pdir is not None: tail.insert(0, pdir) if tail: return os.path.join(*tail) else: return '' def check_package(self, package, package_dir): # Empty dir name means current directory, which we can probably # assume exists. Also, os.path.exists and isdir don't know about # my "empty string means current dir" convention, so we have to # circumvent them. if package_dir != "": if not os.path.exists(package_dir): raise DistutilsFileError( "package directory '%s' does not exist" % package_dir) if not os.path.isdir(package_dir): raise DistutilsFileError( "supposed package directory '%s' exists, " "but is not a directory" % package_dir) # Require __init__.py for all but the "root package" if package: init_py = os.path.join(package_dir, "__init__.py") if os.path.isfile(init_py): return init_py else: log.warn(("package init file '%s' not found " + "(or not a regular file)"), init_py) # Either not in a package at all (__init__.py not expected), or # __init__.py doesn't exist -- so don't return the filename. return None def check_module(self, module, module_file): if not os.path.isfile(module_file): log.warn("file %s (for module %s) not found", module_file, module) return False else: return True def find_package_modules(self, package, package_dir): self.check_package(package, package_dir) module_files = glob(os.path.join(package_dir, "*.py")) modules = [] setup_script = os.path.abspath(self.distribution.script_name) for f in module_files: abs_f = os.path.abspath(f) if abs_f != setup_script: module = os.path.splitext(os.path.basename(f))[0] modules.append((package, module, f)) else: self.debug_print("excluding %s" % setup_script) return modules def find_modules(self): """Finds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. """ # Map package names to tuples of useful info about the package: # (package_dir, checked) # package_dir - the directory where we'll find source files for # this package # checked - true if we have checked that the package directory # is valid (exists, contains __init__.py, ... ?) packages = {} # List of (package, module, filename) tuples to return modules = [] # We treat modules-in-packages almost the same as toplevel modules, # just the "package" for a toplevel is empty (either an empty # string or empty list, depending on context). Differences: # - don't check for __init__.py in directory for empty package for module in self.py_modules: path = module.split('.') package = '.'.join(path[0:-1]) module_base = path[-1] try: (package_dir, checked) = packages[package] except KeyError: package_dir = self.get_package_dir(package) checked = 0 if not checked: init_py = self.check_package(package, package_dir) packages[package] = (package_dir, 1) if init_py: modules.append((package, "__init__", init_py)) # XXX perhaps we should also check for just .pyc files # (so greedy closed-source bastards can distribute Python # modules too) module_file = os.path.join(package_dir, module_base + ".py") if not self.check_module(module, module_file): continue modules.append((package, module_base, module_file)) return modules def find_all_modules(self): """Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.""" modules = [] if self.py_modules: modules.extend(self.find_modules()) if self.packages: for package in self.packages: package_dir = self.get_package_dir(package) m = self.find_package_modules(package, package_dir) modules.extend(m) return modules def get_source_files(self): return [module[-1] for module in self.find_all_modules()] def get_module_outfile(self, build_dir, package, module): outfile_path = [build_dir] + list(package) + [module + ".py"] return os.path.join(*outfile_path) def get_outputs(self, include_bytecode=1): modules = self.find_all_modules() outputs = [] for (package, module, module_file) in modules: package = package.split('.') filename = self.get_module_outfile(self.build_lib, package, module) outputs.append(filename) if include_bytecode: if self.compile: outputs.append(importlib.util.cache_from_source( filename, optimization='')) if self.optimize > 0: outputs.append(importlib.util.cache_from_source( filename, optimization=self.optimize)) outputs += [ os.path.join(build_dir, filename) for package, src_dir, build_dir, filenames in self.data_files for filename in filenames ] return outputs def build_module(self, module, module_file, package): if isinstance(package, str): package = package.split('.') elif not isinstance(package, (list, tuple)): raise TypeError( "'package' must be a string (dot-separated), list, or tuple") # Now put the module source file into the "build" area -- this is # easy, we just copy it somewhere under self.build_lib (the build # directory for Python source). outfile = self.get_module_outfile(self.build_lib, package, module) dir = os.path.dirname(outfile) self.mkpath(dir) return self.copy_file(module_file, outfile, preserve_mode=0) def build_modules(self): modules = self.find_modules() for (package, module, module_file) in modules: # Now "build" the module -- ie. copy the source file to # self.build_lib (the build directory for Python source). # (Actually, it gets copied to the directory for this package # under self.build_lib.) self.build_module(module, module_file, package) def build_packages(self): for package in self.packages: # Get list of (package, module, module_file) tuples based on # scanning the package directory. 'package' is only included # in the tuple so that 'find_modules()' and # 'find_package_tuples()' have a consistent interface; it's # ignored here (apart from a sanity check). Also, 'module' is # the *unqualified* module name (ie. no dots, no package -- we # already know its package!), and 'module_file' is the path to # the .py file, relative to the current directory # (ie. including 'package_dir'). package_dir = self.get_package_dir(package) modules = self.find_package_modules(package, package_dir) # Now loop over the modules we found, "building" each one (just # copy it to self.build_lib). for (package_, module, module_file) in modules: assert package == package_ self.build_module(module, module_file, package) def byte_compile(self, files): if sys.dont_write_bytecode: self.warn('byte-compiling is disabled, skipping.') return from distutils.util import byte_compile prefix = self.build_lib if prefix[-1] != os.sep: prefix = prefix + os.sep # XXX this code is essentially the same as the 'byte_compile() # method of the "install_lib" command, except for the determination # of the 'prefix' string. Hmmm. if self.compile: byte_compile(files, optimize=0, force=self.force, prefix=prefix, dry_run=self.dry_run) if self.optimize > 0: byte_compile(files, optimize=self.optimize, force=self.force, prefix=prefix, dry_run=self.dry_run) class build_py_2to3(build_py, Mixin2to3): def run(self): self.updated_files = [] # Base class code if self.py_modules: self.build_modules() if self.packages: self.build_packages() self.build_package_data() # 2to3 self.run_2to3(self.updated_files) # Remaining base class code self.byte_compile(self.get_outputs(include_bytecode=0)) def build_module(self, module, module_file, package): res = build_py.build_module(self, module, module_file, package) if res[1]: # file was copied self.updated_files.append(res[0]) return res PKD]Juhuhcommand/install.pynu["""distutils.command.install Implements the Distutils 'install' command.""" import sys import os from distutils import log from distutils.core import Command from distutils.debug import DEBUG from distutils.sysconfig import get_config_vars from distutils.errors import DistutilsPlatformError from distutils.file_util import write_file from distutils.util import convert_path, subst_vars, change_root from distutils.util import get_platform from distutils.errors import DistutilsOptionError from site import USER_BASE from site import USER_SITE HAS_USER_SITE = True WINDOWS_SCHEME = { 'purelib': '$base/Lib/site-packages', 'platlib': '$base/Lib/site-packages', 'headers': '$base/Include/$dist_name', 'scripts': '$base/Scripts', 'data' : '$base', } INSTALL_SCHEMES = { 'unix_prefix': { 'purelib': '$base/lib/python$py_version_short/site-packages', 'platlib': '$platbase/lib64/python$py_version_short/site-packages', 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', 'scripts': '$base/bin', 'data' : '$base', }, 'unix_home': { 'purelib': '$base/lib/python', 'platlib': '$base/lib64/python', 'headers': '$base/include/python/$dist_name', 'scripts': '$base/bin', 'data' : '$base', }, 'nt': WINDOWS_SCHEME, } # user site schemes if HAS_USER_SITE: INSTALL_SCHEMES['nt_user'] = { 'purelib': '$usersite', 'platlib': '$usersite', 'headers': '$userbase/Python$py_version_nodot/Include/$dist_name', 'scripts': '$userbase/Python$py_version_nodot/Scripts', 'data' : '$userbase', } INSTALL_SCHEMES['unix_user'] = { 'purelib': '$usersite', 'platlib': '$usersite', 'headers': '$userbase/include/python$py_version_short$abiflags/$dist_name', 'scripts': '$userbase/bin', 'data' : '$userbase', } # The keys to an installation scheme; if any new types of files are to be # installed, be sure to add an entry to every installation scheme above, # and to SCHEME_KEYS here. SCHEME_KEYS = ('purelib', 'platlib', 'headers', 'scripts', 'data') class install(Command): description = "install everything from build directory" user_options = [ # Select installation scheme and set base director(y|ies) ('prefix=', None, "installation prefix"), ('exec-prefix=', None, "(Unix only) prefix for platform-specific files"), ('home=', None, "(Unix only) home directory to install under"), # Or, just set the base director(y|ies) ('install-base=', None, "base installation directory (instead of --prefix or --home)"), ('install-platbase=', None, "base installation directory for platform-specific files " + "(instead of --exec-prefix or --home)"), ('root=', None, "install everything relative to this alternate root directory"), # Or, explicitly set the installation scheme ('install-purelib=', None, "installation directory for pure Python module distributions"), ('install-platlib=', None, "installation directory for non-pure module distributions"), ('install-lib=', None, "installation directory for all module distributions " + "(overrides --install-purelib and --install-platlib)"), ('install-headers=', None, "installation directory for C/C++ headers"), ('install-scripts=', None, "installation directory for Python scripts"), ('install-data=', None, "installation directory for data files"), # Byte-compilation options -- see install_lib.py for details, as # these are duplicated from there (but only install_lib does # anything with them). ('compile', 'c', "compile .py to .pyc [default]"), ('no-compile', None, "don't compile .py files"), ('optimize=', 'O', "also compile with optimization: -O1 for \"python -O\", " "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), # Miscellaneous control options ('force', 'f', "force installation (overwrite any existing files)"), ('skip-build', None, "skip rebuilding everything (for testing/debugging)"), # Where to install documentation (eventually!) #('doc-format=', None, "format of documentation to generate"), #('install-man=', None, "directory for Unix man pages"), #('install-html=', None, "directory for HTML documentation"), #('install-info=', None, "directory for GNU info files"), ('record=', None, "filename in which to record list of installed files"), ] boolean_options = ['compile', 'force', 'skip-build'] if HAS_USER_SITE: user_options.append(('user', None, "install in user site-package '%s'" % USER_SITE)) boolean_options.append('user') negative_opt = {'no-compile' : 'compile'} def initialize_options(self): """Initializes options.""" # High-level options: these select both an installation base # and scheme. self.prefix = None self.exec_prefix = None self.home = None self.user = 0 # These select only the installation base; it's up to the user to # specify the installation scheme (currently, that means supplying # the --install-{platlib,purelib,scripts,data} options). self.install_base = None self.install_platbase = None self.root = None # These options are the actual installation directories; if not # supplied by the user, they are filled in using the installation # scheme implied by prefix/exec-prefix/home and the contents of # that installation scheme. self.install_purelib = None # for pure module distributions self.install_platlib = None # non-pure (dists w/ extensions) self.install_headers = None # for C/C++ headers self.install_lib = None # set to either purelib or platlib self.install_scripts = None self.install_data = None self.install_userbase = USER_BASE self.install_usersite = USER_SITE self.compile = None self.optimize = None # Deprecated # These two are for putting non-packagized distributions into their # own directory and creating a .pth file if it makes sense. # 'extra_path' comes from the setup file; 'install_path_file' can # be turned off if it makes no sense to install a .pth file. (But # better to install it uselessly than to guess wrong and not # install it when it's necessary and would be used!) Currently, # 'install_path_file' is always true unless some outsider meddles # with it. self.extra_path = None self.install_path_file = 1 # 'force' forces installation, even if target files are not # out-of-date. 'skip_build' skips running the "build" command, # handy if you know it's not necessary. 'warn_dir' (which is *not* # a user option, it's just there so the bdist_* commands can turn # it off) determines whether we warn about installing to a # directory not in sys.path. self.force = 0 self.skip_build = 0 self.warn_dir = 1 # These are only here as a conduit from the 'build' command to the # 'install_*' commands that do the real work. ('build_base' isn't # actually used anywhere, but it might be useful in future.) They # are not user options, because if the user told the install # command where the build directory is, that wouldn't affect the # build command. self.build_base = None self.build_lib = None # Not defined yet because we don't know anything about # documentation yet. #self.install_man = None #self.install_html = None #self.install_info = None self.record = None # -- Option finalizing methods ------------------------------------- # (This is rather more involved than for most commands, # because this is where the policy for installing third- # party Python modules on various platforms given a wide # array of user input is decided. Yes, it's quite complex!) def finalize_options(self): """Finalizes options.""" # This method (and its pliant slaves, like 'finalize_unix()', # 'finalize_other()', and 'select_scheme()') is where the default # installation directories for modules, extension modules, and # anything else we care to install from a Python module # distribution. Thus, this code makes a pretty important policy # statement about how third-party stuff is added to a Python # installation! Note that the actual work of installation is done # by the relatively simple 'install_*' commands; they just take # their orders from the installation directory options determined # here. # Check for errors/inconsistencies in the options; first, stuff # that's wrong on any platform. if ((self.prefix or self.exec_prefix or self.home) and (self.install_base or self.install_platbase)): raise DistutilsOptionError( "must supply either prefix/exec-prefix/home or " + "install-base/install-platbase -- not both") if self.home and (self.prefix or self.exec_prefix): raise DistutilsOptionError( "must supply either home or prefix/exec-prefix -- not both") if self.user and (self.prefix or self.exec_prefix or self.home or self.install_base or self.install_platbase): raise DistutilsOptionError("can't combine user with prefix, " "exec_prefix/home, or install_(plat)base") # Next, stuff that's wrong (or dubious) only on certain platforms. if os.name != "posix": if self.exec_prefix: self.warn("exec-prefix option ignored on this platform") self.exec_prefix = None # Now the interesting logic -- so interesting that we farm it out # to other methods. The goal of these methods is to set the final # values for the install_{lib,scripts,data,...} options, using as # input a heady brew of prefix, exec_prefix, home, install_base, # install_platbase, user-supplied versions of # install_{purelib,platlib,lib,scripts,data,...}, and the # INSTALL_SCHEME dictionary above. Phew! self.dump_dirs("pre-finalize_{unix,other}") if os.name == 'posix': self.finalize_unix() else: self.finalize_other() self.dump_dirs("post-finalize_{unix,other}()") # Expand configuration variables, tilde, etc. in self.install_base # and self.install_platbase -- that way, we can use $base or # $platbase in the other installation directories and not worry # about needing recursive variable expansion (shudder). py_version = sys.version.split()[0] (prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix') try: abiflags = sys.abiflags except AttributeError: # sys.abiflags may not be defined on all platforms. abiflags = '' self.config_vars = {'dist_name': self.distribution.get_name(), 'dist_version': self.distribution.get_version(), 'dist_fullname': self.distribution.get_fullname(), 'py_version': py_version, 'py_version_short': '%d.%d' % sys.version_info[:2], 'py_version_nodot': '%d%d' % sys.version_info[:2], 'sys_prefix': prefix, 'prefix': prefix, 'sys_exec_prefix': exec_prefix, 'exec_prefix': exec_prefix, 'abiflags': abiflags, } if HAS_USER_SITE: self.config_vars['userbase'] = self.install_userbase self.config_vars['usersite'] = self.install_usersite self.expand_basedirs() self.dump_dirs("post-expand_basedirs()") # Now define config vars for the base directories so we can expand # everything else. self.config_vars['base'] = self.install_base self.config_vars['platbase'] = self.install_platbase if DEBUG: from pprint import pprint print("config vars:") pprint(self.config_vars) # Expand "~" and configuration variables in the installation # directories. self.expand_dirs() self.dump_dirs("post-expand_dirs()") # Create directories in the home dir: if self.user: self.create_home_path() # Pick the actual directory to install all modules to: either # install_purelib or install_platlib, depending on whether this # module distribution is pure or not. Of course, if the user # already specified install_lib, use their selection. if self.install_lib is None: if self.distribution.ext_modules: # has extensions: non-pure self.install_lib = self.install_platlib else: self.install_lib = self.install_purelib # Convert directories from Unix /-separated syntax to the local # convention. self.convert_paths('lib', 'purelib', 'platlib', 'scripts', 'data', 'headers', 'userbase', 'usersite') # Deprecated # Well, we're not actually fully completely finalized yet: we still # have to deal with 'extra_path', which is the hack for allowing # non-packagized module distributions (hello, Numerical Python!) to # get their own directories. self.handle_extra_path() self.install_libbase = self.install_lib # needed for .pth file self.install_lib = os.path.join(self.install_lib, self.extra_dirs) # If a new root directory was supplied, make all the installation # dirs relative to it. if self.root is not None: self.change_roots('libbase', 'lib', 'purelib', 'platlib', 'scripts', 'data', 'headers') self.dump_dirs("after prepending root") # Find out the build directories, ie. where to install from. self.set_undefined_options('build', ('build_base', 'build_base'), ('build_lib', 'build_lib')) # Punt on doc directories for now -- after all, we're punting on # documentation completely! def dump_dirs(self, msg): """Dumps the list of user options.""" if not DEBUG: return from distutils.fancy_getopt import longopt_xlate log.debug(msg + ":") for opt in self.user_options: opt_name = opt[0] if opt_name[-1] == "=": opt_name = opt_name[0:-1] if opt_name in self.negative_opt: opt_name = self.negative_opt[opt_name] opt_name = opt_name.translate(longopt_xlate) val = not getattr(self, opt_name) else: opt_name = opt_name.translate(longopt_xlate) val = getattr(self, opt_name) log.debug(" %s: %s", opt_name, val) def finalize_unix(self): """Finalizes options for posix platforms.""" if self.install_base is not None or self.install_platbase is not None: if ((self.install_lib is None and self.install_purelib is None and self.install_platlib is None) or self.install_headers is None or self.install_scripts is None or self.install_data is None): raise DistutilsOptionError( "install-base or install-platbase supplied, but " "installation scheme is incomplete") return if self.user: if self.install_userbase is None: raise DistutilsPlatformError( "User base directory is not specified") self.install_base = self.install_platbase = self.install_userbase self.select_scheme("unix_user") elif self.home is not None: self.install_base = self.install_platbase = self.home self.select_scheme("unix_home") else: if self.prefix is None: if self.exec_prefix is not None: raise DistutilsOptionError( "must not supply exec-prefix without prefix") self.prefix = os.path.normpath(sys.prefix) self.exec_prefix = os.path.normpath(sys.exec_prefix) else: if self.exec_prefix is None: self.exec_prefix = self.prefix self.install_base = self.prefix self.install_platbase = self.exec_prefix self.select_scheme("unix_prefix") def finalize_other(self): """Finalizes options for non-posix platforms""" if self.user: if self.install_userbase is None: raise DistutilsPlatformError( "User base directory is not specified") self.install_base = self.install_platbase = self.install_userbase self.select_scheme(os.name + "_user") elif self.home is not None: self.install_base = self.install_platbase = self.home self.select_scheme("unix_home") else: if self.prefix is None: self.prefix = os.path.normpath(sys.prefix) self.install_base = self.install_platbase = self.prefix try: self.select_scheme(os.name) except KeyError: raise DistutilsPlatformError( "I don't know how to install stuff on '%s'" % os.name) def select_scheme(self, name): """Sets the install directories by applying the install schemes.""" # it's the caller's problem if they supply a bad name! scheme = INSTALL_SCHEMES[name] for key in SCHEME_KEYS: attrname = 'install_' + key if getattr(self, attrname) is None: setattr(self, attrname, scheme[key]) def _expand_attrs(self, attrs): for attr in attrs: val = getattr(self, attr) if val is not None: if os.name == 'posix' or os.name == 'nt': val = os.path.expanduser(val) val = subst_vars(val, self.config_vars) setattr(self, attr, val) def expand_basedirs(self): """Calls `os.path.expanduser` on install_base, install_platbase and root.""" self._expand_attrs(['install_base', 'install_platbase', 'root']) def expand_dirs(self): """Calls `os.path.expanduser` on install dirs.""" self._expand_attrs(['install_purelib', 'install_platlib', 'install_lib', 'install_headers', 'install_scripts', 'install_data',]) def convert_paths(self, *names): """Call `convert_path` over `names`.""" for name in names: attr = "install_" + name setattr(self, attr, convert_path(getattr(self, attr))) def handle_extra_path(self): """Set `path_file` and `extra_dirs` using `extra_path`.""" if self.extra_path is None: self.extra_path = self.distribution.extra_path if self.extra_path is not None: log.warn( "Distribution option extra_path is deprecated. " "See issue27919 for details." ) if isinstance(self.extra_path, str): self.extra_path = self.extra_path.split(',') if len(self.extra_path) == 1: path_file = extra_dirs = self.extra_path[0] elif len(self.extra_path) == 2: path_file, extra_dirs = self.extra_path else: raise DistutilsOptionError( "'extra_path' option must be a list, tuple, or " "comma-separated string with 1 or 2 elements") # convert to local form in case Unix notation used (as it # should be in setup scripts) extra_dirs = convert_path(extra_dirs) else: path_file = None extra_dirs = '' # XXX should we warn if path_file and not extra_dirs? (in which # case the path file would be harmless but pointless) self.path_file = path_file self.extra_dirs = extra_dirs def change_roots(self, *names): """Change the install directories pointed by name using root.""" for name in names: attr = "install_" + name setattr(self, attr, change_root(self.root, getattr(self, attr))) def create_home_path(self): """Create directories under ~.""" if not self.user: return home = convert_path(os.path.expanduser("~")) for name, path in self.config_vars.items(): if path.startswith(home) and not os.path.isdir(path): self.debug_print("os.makedirs('%s', 0o700)" % path) os.makedirs(path, 0o700) # -- Command execution methods ------------------------------------- def run(self): """Runs the command.""" # Obviously have to build before we can install if not self.skip_build: self.run_command('build') # If we built for any other platform, we can't install. build_plat = self.distribution.get_command_obj('build').plat_name # check warn_dir - it is a clue that the 'install' is happening # internally, and not to sys.path, so we don't check the platform # matches what we are running. if self.warn_dir and build_plat != get_platform(): raise DistutilsPlatformError("Can't install when " "cross-compiling") # Run all sub-commands (at least those that need to be run) for cmd_name in self.get_sub_commands(): self.run_command(cmd_name) if self.path_file: self.create_path_file() # write list of installed files, if requested. if self.record: outputs = self.get_outputs() if self.root: # strip any package prefix root_len = len(self.root) for counter in range(len(outputs)): outputs[counter] = outputs[counter][root_len:] self.execute(write_file, (self.record, outputs), "writing list of installed files to '%s'" % self.record) sys_path = map(os.path.normpath, sys.path) sys_path = map(os.path.normcase, sys_path) install_lib = os.path.normcase(os.path.normpath(self.install_lib)) if (self.warn_dir and not (self.path_file and self.install_path_file) and install_lib not in sys_path): log.debug(("modules installed to '%s', which is not in " "Python's module search path (sys.path) -- " "you'll have to change the search path yourself"), self.install_lib) def create_path_file(self): """Creates the .pth file""" filename = os.path.join(self.install_libbase, self.path_file + ".pth") if self.install_path_file: self.execute(write_file, (filename, [self.extra_dirs]), "creating %s" % filename) else: self.warn("path file '%s' not created" % filename) # -- Reporting methods --------------------------------------------- def get_outputs(self): """Assembles the outputs of all the sub-commands.""" outputs = [] for cmd_name in self.get_sub_commands(): cmd = self.get_finalized_command(cmd_name) # Add the contents of cmd.get_outputs(), ensuring # that outputs doesn't contain duplicate entries for filename in cmd.get_outputs(): if filename not in outputs: outputs.append(filename) if self.path_file and self.install_path_file: outputs.append(os.path.join(self.install_libbase, self.path_file + ".pth")) return outputs def get_inputs(self): """Returns the inputs of all the sub-commands""" # XXX gee, this looks familiar ;-( inputs = [] for cmd_name in self.get_sub_commands(): cmd = self.get_finalized_command(cmd_name) inputs.extend(cmd.get_inputs()) return inputs # -- Predicates for sub-command list ------------------------------- def has_lib(self): """Returns true if the current distribution has any Python modules to install.""" return (self.distribution.has_pure_modules() or self.distribution.has_ext_modules()) def has_headers(self): """Returns true if the current distribution has any headers to install.""" return self.distribution.has_headers() def has_scripts(self): """Returns true if the current distribution has any scripts to. install.""" return self.distribution.has_scripts() def has_data(self): """Returns true if the current distribution has any data to. install.""" return self.distribution.has_data_files() # 'sub_commands': a list of commands this command might have to run to # get its work done. See cmd.py for more info. sub_commands = [('install_lib', has_lib), ('install_headers', has_headers), ('install_scripts', has_scripts), ('install_data', has_data), ('install_egg_info', lambda self:True), ] PKD]'DkTTcommand/bdist_rpm.pynu["""distutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).""" import subprocess, sys, os from distutils.core import Command from distutils.debug import DEBUG from distutils.util import get_platform from distutils.file_util import write_file from distutils.errors import * from distutils.sysconfig import get_python_version from distutils import log class bdist_rpm(Command): description = "create an RPM distribution" user_options = [ ('bdist-base=', None, "base directory for creating built distributions"), ('rpm-base=', None, "base directory for creating RPMs (defaults to \"rpm\" under " "--bdist-base; must be specified for RPM 2)"), ('dist-dir=', 'd', "directory to put final RPM files in " "(and .spec files if --spec-only)"), ('python=', None, "path to Python interpreter to hard-code in the .spec file " "(default: \"python\")"), ('fix-python', None, "hard-code the exact path to the current Python interpreter in " "the .spec file"), ('spec-only', None, "only regenerate spec file"), ('source-only', None, "only generate source RPM"), ('binary-only', None, "only generate binary RPM"), ('use-bzip2', None, "use bzip2 instead of gzip to create source distribution"), # More meta-data: too RPM-specific to put in the setup script, # but needs to go in the .spec file -- so we make these options # to "bdist_rpm". The idea is that packagers would put this # info in setup.cfg, although they are of course free to # supply it on the command line. ('distribution-name=', None, "name of the (Linux) distribution to which this " "RPM applies (*not* the name of the module distribution!)"), ('group=', None, "package classification [default: \"Development/Libraries\"]"), ('release=', None, "RPM release number"), ('serial=', None, "RPM serial number"), ('vendor=', None, "RPM \"vendor\" (eg. \"Joe Blow \") " "[default: maintainer or author from setup script]"), ('packager=', None, "RPM packager (eg. \"Jane Doe \") " "[default: vendor]"), ('doc-files=', None, "list of documentation files (space or comma-separated)"), ('changelog=', None, "RPM changelog"), ('icon=', None, "name of icon file"), ('provides=', None, "capabilities provided by this package"), ('requires=', None, "capabilities required by this package"), ('conflicts=', None, "capabilities which conflict with this package"), ('build-requires=', None, "capabilities required to build this package"), ('obsoletes=', None, "capabilities made obsolete by this package"), ('no-autoreq', None, "do not automatically calculate dependencies"), # Actions to take when building RPM ('keep-temp', 'k', "don't clean up RPM build directory"), ('no-keep-temp', None, "clean up RPM build directory [default]"), ('use-rpm-opt-flags', None, "compile with RPM_OPT_FLAGS when building from source RPM"), ('no-rpm-opt-flags', None, "do not pass any RPM CFLAGS to compiler"), ('rpm3-mode', None, "RPM 3 compatibility mode (default)"), ('rpm2-mode', None, "RPM 2 compatibility mode"), # Add the hooks necessary for specifying custom scripts ('prep-script=', None, "Specify a script for the PREP phase of RPM building"), ('build-script=', None, "Specify a script for the BUILD phase of RPM building"), ('pre-install=', None, "Specify a script for the pre-INSTALL phase of RPM building"), ('install-script=', None, "Specify a script for the INSTALL phase of RPM building"), ('post-install=', None, "Specify a script for the post-INSTALL phase of RPM building"), ('pre-uninstall=', None, "Specify a script for the pre-UNINSTALL phase of RPM building"), ('post-uninstall=', None, "Specify a script for the post-UNINSTALL phase of RPM building"), ('clean-script=', None, "Specify a script for the CLEAN phase of RPM building"), ('verify-script=', None, "Specify a script for the VERIFY phase of the RPM build"), # Allow a packager to explicitly force an architecture ('force-arch=', None, "Force an architecture onto the RPM build process"), ('quiet', 'q', "Run the INSTALL phase of RPM building in quiet mode"), ] boolean_options = ['keep-temp', 'use-rpm-opt-flags', 'rpm3-mode', 'no-autoreq', 'quiet'] negative_opt = {'no-keep-temp': 'keep-temp', 'no-rpm-opt-flags': 'use-rpm-opt-flags', 'rpm2-mode': 'rpm3-mode'} def initialize_options(self): self.bdist_base = None self.rpm_base = None self.dist_dir = None self.python = None self.fix_python = None self.spec_only = None self.binary_only = None self.source_only = None self.use_bzip2 = None self.distribution_name = None self.group = None self.release = None self.serial = None self.vendor = None self.packager = None self.doc_files = None self.changelog = None self.icon = None self.prep_script = None self.build_script = None self.install_script = None self.clean_script = None self.verify_script = None self.pre_install = None self.post_install = None self.pre_uninstall = None self.post_uninstall = None self.prep = None self.provides = None self.requires = None self.conflicts = None self.build_requires = None self.obsoletes = None self.keep_temp = 0 self.use_rpm_opt_flags = 1 self.rpm3_mode = 1 self.no_autoreq = 0 self.force_arch = None self.quiet = 0 def finalize_options(self): self.set_undefined_options('bdist', ('bdist_base', 'bdist_base')) if self.rpm_base is None: if not self.rpm3_mode: raise DistutilsOptionError( "you must specify --rpm-base in RPM 2 mode") self.rpm_base = os.path.join(self.bdist_base, "rpm") if self.python is None: if self.fix_python: self.python = sys.executable else: self.python = "python3" elif self.fix_python: raise DistutilsOptionError( "--python and --fix-python are mutually exclusive options") if os.name != 'posix': raise DistutilsPlatformError("don't know how to create RPM " "distributions on platform %s" % os.name) if self.binary_only and self.source_only: raise DistutilsOptionError( "cannot supply both '--source-only' and '--binary-only'") # don't pass CFLAGS to pure python distributions if not self.distribution.has_ext_modules(): self.use_rpm_opt_flags = 0 self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) self.finalize_package_data() def finalize_package_data(self): self.ensure_string('group', "Development/Libraries") self.ensure_string('vendor', "%s <%s>" % (self.distribution.get_contact(), self.distribution.get_contact_email())) self.ensure_string('packager') self.ensure_string_list('doc_files') if isinstance(self.doc_files, list): for readme in ('README', 'README.txt'): if os.path.exists(readme) and readme not in self.doc_files: self.doc_files.append(readme) self.ensure_string('release', "1") self.ensure_string('serial') # should it be an int? self.ensure_string('distribution_name') self.ensure_string('changelog') # Format changelog correctly self.changelog = self._format_changelog(self.changelog) self.ensure_filename('icon') self.ensure_filename('prep_script') self.ensure_filename('build_script') self.ensure_filename('install_script') self.ensure_filename('clean_script') self.ensure_filename('verify_script') self.ensure_filename('pre_install') self.ensure_filename('post_install') self.ensure_filename('pre_uninstall') self.ensure_filename('post_uninstall') # XXX don't forget we punted on summaries and descriptions -- they # should be handled here eventually! # Now *this* is some meta-data that belongs in the setup script... self.ensure_string_list('provides') self.ensure_string_list('requires') self.ensure_string_list('conflicts') self.ensure_string_list('build_requires') self.ensure_string_list('obsoletes') self.ensure_string('force_arch') def run(self): if DEBUG: print("before _get_package_data():") print("vendor =", self.vendor) print("packager =", self.packager) print("doc_files =", self.doc_files) print("changelog =", self.changelog) # make directories if self.spec_only: spec_dir = self.dist_dir self.mkpath(spec_dir) else: rpm_dir = {} for d in ('SOURCES', 'SPECS', 'BUILD', 'RPMS', 'SRPMS'): rpm_dir[d] = os.path.join(self.rpm_base, d) self.mkpath(rpm_dir[d]) spec_dir = rpm_dir['SPECS'] # Spec file goes into 'dist_dir' if '--spec-only specified', # build/rpm. otherwise. spec_path = os.path.join(spec_dir, "%s.spec" % self.distribution.get_name()) self.execute(write_file, (spec_path, self._make_spec_file()), "writing '%s'" % spec_path) if self.spec_only: # stop if requested return # Make a source distribution and copy to SOURCES directory with # optional icon. saved_dist_files = self.distribution.dist_files[:] sdist = self.reinitialize_command('sdist') if self.use_bzip2: sdist.formats = ['bztar'] else: sdist.formats = ['gztar'] self.run_command('sdist') self.distribution.dist_files = saved_dist_files source = sdist.get_archive_files()[0] source_dir = rpm_dir['SOURCES'] self.copy_file(source, source_dir) if self.icon: if os.path.exists(self.icon): self.copy_file(self.icon, source_dir) else: raise DistutilsFileError( "icon file '%s' does not exist" % self.icon) # build package log.info("building RPMs") rpm_cmd = ['rpm'] if os.path.exists('/usr/bin/rpmbuild') or \ os.path.exists('/bin/rpmbuild'): rpm_cmd = ['rpmbuild'] if self.source_only: # what kind of RPMs? rpm_cmd.append('-bs') elif self.binary_only: rpm_cmd.append('-bb') else: rpm_cmd.append('-ba') rpm_cmd.extend(['--define', '__python %s' % self.python]) if self.rpm3_mode: rpm_cmd.extend(['--define', '_topdir %s' % os.path.abspath(self.rpm_base)]) if not self.keep_temp: rpm_cmd.append('--clean') if self.quiet: rpm_cmd.append('--quiet') rpm_cmd.append(spec_path) # Determine the binary rpm names that should be built out of this spec # file # Note that some of these may not be really built (if the file # list is empty) nvr_string = "%{name}-%{version}-%{release}" src_rpm = nvr_string + ".src.rpm" non_src_rpm = "%{arch}/" + nvr_string + ".%{arch}.rpm" q_cmd = r"rpm -q --qf '%s %s\n' --specfile '%s'" % ( src_rpm, non_src_rpm, spec_path) out = os.popen(q_cmd) try: binary_rpms = [] source_rpm = None while True: line = out.readline() if not line: break l = line.strip().split() assert(len(l) == 2) binary_rpms.append(l[1]) # The source rpm is named after the first entry in the spec file if source_rpm is None: source_rpm = l[0] status = out.close() if status: raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd)) finally: out.close() self.spawn(rpm_cmd) if not self.dry_run: if self.distribution.has_ext_modules(): pyversion = get_python_version() else: pyversion = 'any' if not self.binary_only: srpm = os.path.join(rpm_dir['SRPMS'], source_rpm) assert(os.path.exists(srpm)) self.move_file(srpm, self.dist_dir) filename = os.path.join(self.dist_dir, source_rpm) self.distribution.dist_files.append( ('bdist_rpm', pyversion, filename)) if not self.source_only: for rpm in binary_rpms: rpm = os.path.join(rpm_dir['RPMS'], rpm) if os.path.exists(rpm): self.move_file(rpm, self.dist_dir) filename = os.path.join(self.dist_dir, os.path.basename(rpm)) self.distribution.dist_files.append( ('bdist_rpm', pyversion, filename)) def _dist_path(self, path): return os.path.join(self.dist_dir, os.path.basename(path)) def _make_spec_file(self): """Generate the text of an RPM spec file and return it as a list of strings (one per line). """ # definitions and headers spec_file = [ '%define name ' + self.distribution.get_name(), '%define version ' + self.distribution.get_version().replace('-','_'), '%define unmangled_version ' + self.distribution.get_version(), '%define release ' + self.release.replace('-','_'), '', 'Summary: ' + self.distribution.get_description(), ] # Workaround for #14443 which affects some RPM based systems such as # RHEL6 (and probably derivatives) vendor_hook = subprocess.getoutput('rpm --eval %{__os_install_post}') # Generate a potential replacement value for __os_install_post (whilst # normalizing the whitespace to simplify the test for whether the # invocation of brp-python-bytecompile passes in __python): vendor_hook = '\n'.join([' %s \\' % line.strip() for line in vendor_hook.splitlines()]) problem = "brp-python-bytecompile \\\n" fixed = "brp-python-bytecompile %{__python} \\\n" fixed_hook = vendor_hook.replace(problem, fixed) if fixed_hook != vendor_hook: spec_file.append('# Workaround for http://bugs.python.org/issue14443') spec_file.append('%define __os_install_post ' + fixed_hook + '\n') # put locale summaries into spec file # XXX not supported for now (hard to put a dictionary # in a config file -- arg!) #for locale in self.summaries.keys(): # spec_file.append('Summary(%s): %s' % (locale, # self.summaries[locale])) spec_file.extend([ 'Name: %{name}', 'Version: %{version}', 'Release: %{release}',]) # XXX yuck! this filename is available from the "sdist" command, # but only after it has run: and we create the spec file before # running "sdist", in case of --spec-only. if self.use_bzip2: spec_file.append('Source0: %{name}-%{unmangled_version}.tar.bz2') else: spec_file.append('Source0: %{name}-%{unmangled_version}.tar.gz') spec_file.extend([ 'License: ' + self.distribution.get_license(), 'Group: ' + self.group, 'BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot', 'Prefix: %{_prefix}', ]) if not self.force_arch: # noarch if no extension modules if not self.distribution.has_ext_modules(): spec_file.append('BuildArch: noarch') else: spec_file.append( 'BuildArch: %s' % self.force_arch ) for field in ('Vendor', 'Packager', 'Provides', 'Requires', 'Conflicts', 'Obsoletes', ): val = getattr(self, field.lower()) if isinstance(val, list): spec_file.append('%s: %s' % (field, ' '.join(val))) elif val is not None: spec_file.append('%s: %s' % (field, val)) if self.distribution.get_url() != 'UNKNOWN': spec_file.append('Url: ' + self.distribution.get_url()) if self.distribution_name: spec_file.append('Distribution: ' + self.distribution_name) if self.build_requires: spec_file.append('BuildRequires: ' + ' '.join(self.build_requires)) if self.icon: spec_file.append('Icon: ' + os.path.basename(self.icon)) if self.no_autoreq: spec_file.append('AutoReq: 0') spec_file.extend([ '', '%description', self.distribution.get_long_description() ]) # put locale descriptions into spec file # XXX again, suppressed because config file syntax doesn't # easily support this ;-( #for locale in self.descriptions.keys(): # spec_file.extend([ # '', # '%description -l ' + locale, # self.descriptions[locale], # ]) # rpm scripts # figure out default build script def_setup_call = "%s %s" % (self.python,os.path.basename(sys.argv[0])) def_build = "%s build" % def_setup_call if self.use_rpm_opt_flags: def_build = 'env CFLAGS="$RPM_OPT_FLAGS" ' + def_build # insert contents of files # XXX this is kind of misleading: user-supplied options are files # that we open and interpolate into the spec file, but the defaults # are just text that we drop in as-is. Hmmm. install_cmd = ('%s install -O1 --root=$RPM_BUILD_ROOT ' '--record=INSTALLED_FILES') % def_setup_call script_options = [ ('prep', 'prep_script', "%setup -n %{name}-%{unmangled_version}"), ('build', 'build_script', def_build), ('install', 'install_script', install_cmd), ('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"), ('verifyscript', 'verify_script', None), ('pre', 'pre_install', None), ('post', 'post_install', None), ('preun', 'pre_uninstall', None), ('postun', 'post_uninstall', None), ] for (rpm_opt, attr, default) in script_options: # Insert contents of file referred to, if no file is referred to # use 'default' as contents of script val = getattr(self, attr) if val or default: spec_file.extend([ '', '%' + rpm_opt,]) if val: spec_file.extend(open(val, 'r').read().split('\n')) else: spec_file.append(default) # files section spec_file.extend([ '', '%files -f INSTALLED_FILES', '%defattr(-,root,root)', ]) if self.doc_files: spec_file.append('%doc ' + ' '.join(self.doc_files)) if self.changelog: spec_file.extend([ '', '%changelog',]) spec_file.extend(self.changelog) return spec_file def _format_changelog(self, changelog): """Format the changelog correctly and convert it to a list of strings """ if not changelog: return changelog new_changelog = [] for line in changelog.strip().split('\n'): line = line.strip() if line[0] == '*': new_changelog.extend(['', line]) elif line[0] == '-': new_changelog.append(line) else: new_changelog.append(' ' + line) # strip trailing newline inserted by first changelog entry if not new_changelog[0]: del new_changelog[0] return new_changelog PKD]r|yycommand/command_templatenu["""distutils.command.x Implements the Distutils 'x' command. """ # created 2000/mm/dd, John Doe __revision__ = "$Id$" from distutils.core import Command class x(Command): # Brief (40-50 characters) description of the command description = "" # List of option tuples: long name, short name (None if no short # name), and help string. user_options = [('', '', ""), ] def initialize_options(self): self. = None self. = None self. = None def finalize_options(self): if self.x is None: self.x = def run(self): PKD]w11command/bdist_dumb.pynu["""distutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).""" import os from distutils.core import Command from distutils.util import get_platform from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import * from distutils.sysconfig import get_python_version from distutils import log class bdist_dumb(Command): description = "create a \"dumb\" built distribution" user_options = [('bdist-dir=', 'd', "temporary directory for creating the distribution"), ('plat-name=', 'p', "platform name to embed in generated filenames " "(default: %s)" % get_platform()), ('format=', 'f', "archive format to create (tar, gztar, bztar, xztar, " "ztar, zip)"), ('keep-temp', 'k', "keep the pseudo-installation tree around after " + "creating the distribution archive"), ('dist-dir=', 'd', "directory to put final built distributions in"), ('skip-build', None, "skip rebuilding everything (for testing/debugging)"), ('relative', None, "build the archive using relative paths " "(default: false)"), ('owner=', 'u', "Owner name used when creating a tar file" " [default: current user]"), ('group=', 'g', "Group name used when creating a tar file" " [default: current group]"), ] boolean_options = ['keep-temp', 'skip-build', 'relative'] default_format = { 'posix': 'gztar', 'nt': 'zip' } def initialize_options(self): self.bdist_dir = None self.plat_name = None self.format = None self.keep_temp = 0 self.dist_dir = None self.skip_build = None self.relative = 0 self.owner = None self.group = None def finalize_options(self): if self.bdist_dir is None: bdist_base = self.get_finalized_command('bdist').bdist_base self.bdist_dir = os.path.join(bdist_base, 'dumb') if self.format is None: try: self.format = self.default_format[os.name] except KeyError: raise DistutilsPlatformError( "don't know how to create dumb built distributions " "on platform %s" % os.name) self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'), ('plat_name', 'plat_name'), ('skip_build', 'skip_build')) def run(self): if not self.skip_build: self.run_command('build') install = self.reinitialize_command('install', reinit_subcommands=1) install.root = self.bdist_dir install.skip_build = self.skip_build install.warn_dir = 0 log.info("installing to %s", self.bdist_dir) self.run_command('install') # And make an archive relative to the root of the # pseudo-installation tree. archive_basename = "%s.%s" % (self.distribution.get_fullname(), self.plat_name) pseudoinstall_root = os.path.join(self.dist_dir, archive_basename) if not self.relative: archive_root = self.bdist_dir else: if (self.distribution.has_ext_modules() and (install.install_base != install.install_platbase)): raise DistutilsPlatformError( "can't make a dumb built distribution where " "base and platbase are different (%s, %s)" % (repr(install.install_base), repr(install.install_platbase))) else: archive_root = os.path.join(self.bdist_dir, ensure_relative(install.install_base)) # Make the archive filename = self.make_archive(pseudoinstall_root, self.format, root_dir=archive_root, owner=self.owner, group=self.group) if self.distribution.has_ext_modules(): pyversion = get_python_version() else: pyversion = 'any' self.distribution.dist_files.append(('bdist_dumb', pyversion, filename)) if not self.keep_temp: remove_tree(self.bdist_dir, dry_run=self.dry_run) PKD]d+XXcommand/build_scripts.pynu["""distutils.command.build_scripts Implements the Distutils 'build_scripts' command.""" import os, re from stat import ST_MODE from distutils import sysconfig from distutils.core import Command from distutils.dep_util import newer from distutils.util import convert_path, Mixin2to3 from distutils import log import tokenize # check if Python is called on the first line with this expression first_line_re = re.compile(b'^#!.*python[0-9.]*([ \t].*)?$') class build_scripts(Command): description = "\"build\" scripts (copy and fixup #! line)" user_options = [ ('build-dir=', 'd', "directory to \"build\" (copy) to"), ('force', 'f', "forcibly build everything (ignore file timestamps"), ('executable=', 'e', "specify final destination interpreter path"), ] boolean_options = ['force'] def initialize_options(self): self.build_dir = None self.scripts = None self.force = None self.executable = None self.outfiles = None def finalize_options(self): self.set_undefined_options('build', ('build_scripts', 'build_dir'), ('force', 'force'), ('executable', 'executable')) self.scripts = self.distribution.scripts def get_source_files(self): return self.scripts def run(self): if not self.scripts: return self.copy_scripts() def copy_scripts(self): r"""Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. """ self.mkpath(self.build_dir) outfiles = [] updated_files = [] for script in self.scripts: adjust = False script = convert_path(script) outfile = os.path.join(self.build_dir, os.path.basename(script)) outfiles.append(outfile) if not self.force and not newer(script, outfile): log.debug("not copying %s (up-to-date)", script) continue # Always open the file, but ignore failures in dry-run mode -- # that way, we'll get accurate feedback if we can read the # script. try: f = open(script, "rb") except OSError: if not self.dry_run: raise f = None else: encoding, lines = tokenize.detect_encoding(f.readline) f.seek(0) first_line = f.readline() if not first_line: self.warn("%s is an empty file (skipping)" % script) continue match = first_line_re.match(first_line) if match: adjust = True post_interp = match.group(1) or b'' if adjust: log.info("copying and adjusting %s -> %s", script, self.build_dir) updated_files.append(outfile) if not self.dry_run: if not sysconfig.python_build: executable = self.executable else: executable = os.path.join( sysconfig.get_config_var("BINDIR"), "python%s%s" % (sysconfig.get_config_var("VERSION"), sysconfig.get_config_var("EXE"))) executable = os.fsencode(executable) shebang = b"#!" + executable + post_interp + b"\n" # Python parser starts to read a script using UTF-8 until # it gets a #coding:xxx cookie. The shebang has to be the # first line of a file, the #coding:xxx cookie cannot be # written before. So the shebang has to be decodable from # UTF-8. try: shebang.decode('utf-8') except UnicodeDecodeError: raise ValueError( "The shebang ({!r}) is not decodable " "from utf-8".format(shebang)) # If the script is encoded to a custom encoding (use a # #coding:xxx cookie), the shebang has to be decodable from # the script encoding too. try: shebang.decode(encoding) except UnicodeDecodeError: raise ValueError( "The shebang ({!r}) is not decodable " "from the script encoding ({})" .format(shebang, encoding)) with open(outfile, "wb") as outf: outf.write(shebang) outf.writelines(f.readlines()) if f: f.close() else: if f: f.close() updated_files.append(outfile) self.copy_file(script, outfile) if os.name == 'posix': for file in outfiles: if self.dry_run: log.info("changing mode of %s", file) else: oldmode = os.stat(file)[ST_MODE] & 0o7777 newmode = (oldmode | 0o555) & 0o7777 if newmode != oldmode: log.info("changing mode of %s from %o to %o", file, oldmode, newmode) os.chmod(file, newmode) # XXX should we modify self.outfiles? return outfiles, updated_files class build_scripts_2to3(build_scripts, Mixin2to3): def copy_scripts(self): outfiles, updated_files = build_scripts.copy_scripts(self) if not self.dry_run: self.run_2to3(updated_files) return outfiles, updated_files PKD]A33command/config.pynu["""distutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". """ import os, re from distutils.core import Command from distutils.errors import DistutilsExecError from distutils.sysconfig import customize_compiler from distutils import log LANG_EXT = {"c": ".c", "c++": ".cxx"} class config(Command): description = "prepare to build" user_options = [ ('compiler=', None, "specify the compiler type"), ('cc=', None, "specify the compiler executable"), ('include-dirs=', 'I', "list of directories to search for header files"), ('define=', 'D', "C preprocessor macros to define"), ('undef=', 'U', "C preprocessor macros to undefine"), ('libraries=', 'l', "external C libraries to link with"), ('library-dirs=', 'L', "directories to search for external C libraries"), ('noisy', None, "show every action (compile, link, run, ...) taken"), ('dump-source', None, "dump generated source files before attempting to compile them"), ] # The three standard command methods: since the "config" command # does nothing by default, these are empty. def initialize_options(self): self.compiler = None self.cc = None self.include_dirs = None self.libraries = None self.library_dirs = None # maximal output for now self.noisy = 1 self.dump_source = 1 # list of temporary files generated along-the-way that we have # to clean at some point self.temp_files = [] def finalize_options(self): if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] elif isinstance(self.include_dirs, str): self.include_dirs = self.include_dirs.split(os.pathsep) if self.libraries is None: self.libraries = [] elif isinstance(self.libraries, str): self.libraries = [self.libraries] if self.library_dirs is None: self.library_dirs = [] elif isinstance(self.library_dirs, str): self.library_dirs = self.library_dirs.split(os.pathsep) def run(self): pass # Utility methods for actual "config" commands. The interfaces are # loosely based on Autoconf macros of similar names. Sub-classes # may use these freely. def _check_compiler(self): """Check that 'self.compiler' really is a CCompiler object; if not, make it one. """ # We do this late, and only on-demand, because this is an expensive # import. from distutils.ccompiler import CCompiler, new_compiler if not isinstance(self.compiler, CCompiler): self.compiler = new_compiler(compiler=self.compiler, dry_run=self.dry_run, force=1) customize_compiler(self.compiler) if self.include_dirs: self.compiler.set_include_dirs(self.include_dirs) if self.libraries: self.compiler.set_libraries(self.libraries) if self.library_dirs: self.compiler.set_library_dirs(self.library_dirs) def _gen_temp_sourcefile(self, body, headers, lang): filename = "_configtest" + LANG_EXT[lang] file = open(filename, "w") if headers: for header in headers: file.write("#include <%s>\n" % header) file.write("\n") file.write(body) if body[-1] != "\n": file.write("\n") file.close() return filename def _preprocess(self, body, headers, include_dirs, lang): src = self._gen_temp_sourcefile(body, headers, lang) out = "_configtest.i" self.temp_files.extend([src, out]) self.compiler.preprocess(src, out, include_dirs=include_dirs) return (src, out) def _compile(self, body, headers, include_dirs, lang): src = self._gen_temp_sourcefile(body, headers, lang) if self.dump_source: dump_file(src, "compiling '%s':" % src) (obj,) = self.compiler.object_filenames([src]) self.temp_files.extend([src, obj]) self.compiler.compile([src], include_dirs=include_dirs) return (src, obj) def _link(self, body, headers, include_dirs, libraries, library_dirs, lang): (src, obj) = self._compile(body, headers, include_dirs, lang) prog = os.path.splitext(os.path.basename(src))[0] self.compiler.link_executable([obj], prog, libraries=libraries, library_dirs=library_dirs, target_lang=lang) if self.compiler.exe_extension is not None: prog = prog + self.compiler.exe_extension self.temp_files.append(prog) return (src, obj, prog) def _clean(self, *filenames): if not filenames: filenames = self.temp_files self.temp_files = [] log.info("removing: %s", ' '.join(filenames)) for filename in filenames: try: os.remove(filename) except OSError: pass # XXX these ignore the dry-run flag: what to do, what to do? even if # you want a dry-run build, you still need some sort of configuration # info. My inclination is to make it up to the real config command to # consult 'dry_run', and assume a default (minimal) configuration if # true. The problem with trying to do it here is that you'd have to # return either true or false from all the 'try' methods, neither of # which is correct. # XXX need access to the header search path and maybe default macros. def try_cpp(self, body=None, headers=None, include_dirs=None, lang="c"): """Construct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) """ from distutils.ccompiler import CompileError self._check_compiler() ok = True try: self._preprocess(body, headers, include_dirs, lang) except CompileError: ok = False self._clean() return ok def search_cpp(self, pattern, body=None, headers=None, include_dirs=None, lang="c"): """Construct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. """ self._check_compiler() src, out = self._preprocess(body, headers, include_dirs, lang) if isinstance(pattern, str): pattern = re.compile(pattern) file = open(out) match = False while True: line = file.readline() if line == '': break if pattern.search(line): match = True break file.close() self._clean() return match def try_compile(self, body, headers=None, include_dirs=None, lang="c"): """Try to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. """ from distutils.ccompiler import CompileError self._check_compiler() try: self._compile(body, headers, include_dirs, lang) ok = True except CompileError: ok = False log.info(ok and "success!" or "failure.") self._clean() return ok def try_link(self, body, headers=None, include_dirs=None, libraries=None, library_dirs=None, lang="c"): """Try to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. """ from distutils.ccompiler import CompileError, LinkError self._check_compiler() try: self._link(body, headers, include_dirs, libraries, library_dirs, lang) ok = True except (CompileError, LinkError): ok = False log.info(ok and "success!" or "failure.") self._clean() return ok def try_run(self, body, headers=None, include_dirs=None, libraries=None, library_dirs=None, lang="c"): """Try to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. """ from distutils.ccompiler import CompileError, LinkError self._check_compiler() try: src, obj, exe = self._link(body, headers, include_dirs, libraries, library_dirs, lang) self.spawn([exe]) ok = True except (CompileError, LinkError, DistutilsExecError): ok = False log.info(ok and "success!" or "failure.") self._clean() return ok # -- High-level methods -------------------------------------------- # (these are the ones that are actually likely to be useful # when implementing a real-world config command!) def check_func(self, func, headers=None, include_dirs=None, libraries=None, library_dirs=None, decl=0, call=0): """Determine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. """ self._check_compiler() body = [] if decl: body.append("int %s ();" % func) body.append("int main () {") if call: body.append(" %s();" % func) else: body.append(" %s;" % func) body.append("}") body = "\n".join(body) + "\n" return self.try_link(body, headers, include_dirs, libraries, library_dirs) def check_lib(self, library, library_dirs=None, headers=None, include_dirs=None, other_libraries=[]): """Determine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. """ self._check_compiler() return self.try_link("int main (void) { }", headers, include_dirs, [library] + other_libraries, library_dirs) def check_header(self, header, include_dirs=None, library_dirs=None, lang="c"): """Determine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. """ return self.try_cpp(body="/* No body */", headers=[header], include_dirs=include_dirs) def dump_file(filename, head=None): """Dumps a file content into log.info. If head is not None, will be dumped before the file content. """ if head is None: log.info('%s', filename) else: log.info(head) file = open(filename) try: log.info(file.read()) finally: file.close() PKD];command/__init__.pynu["""distutils.command Package containing implementation of all the standard Distutils commands.""" __all__ = ['build', 'build_py', 'build_ext', 'build_clib', 'build_scripts', 'clean', 'install', 'install_lib', 'install_headers', 'install_scripts', 'install_data', 'sdist', 'register', 'bdist', 'bdist_dumb', 'bdist_rpm', 'bdist_wininst', 'check', 'upload', # These two are reserved for future use: #'bdist_sdux', #'bdist_pkgtool', # Note: # bdist_packager is not included because it only provides # an abstract base class ] PKD]^90command/bdist_msi.pynu[# Copyright (C) 2005, 2006 Martin von Löwis # Licensed to PSF under a Contributor Agreement. # The bdist_wininst command proper # based on bdist_wininst """ Implements the bdist_msi command. """ import sys, os from distutils.core import Command from distutils.dir_util import remove_tree from distutils.sysconfig import get_python_version from distutils.version import StrictVersion from distutils.errors import DistutilsOptionError from distutils.util import get_platform from distutils import log import msilib from msilib import schema, sequence, text from msilib import Directory, Feature, Dialog, add_data class PyDialog(Dialog): """Dialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.""" def __init__(self, *args, **kw): """Dialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)""" Dialog.__init__(self, *args) ruler = self.h - 36 bmwidth = 152*ruler/328 #if kw.get("bitmap", True): # self.bitmap("Bitmap", 0, 0, bmwidth, ruler, "PythonWin") self.line("BottomLine", 0, ruler, self.w, 0) def title(self, title): "Set the title text of the dialog at the top." # name, x, y, w, h, flags=Visible|Enabled|Transparent|NoPrefix, # text, in VerdanaBold10 self.text("Title", 15, 10, 320, 60, 0x30003, r"{\VerdanaBold10}%s" % title) def back(self, title, next, name = "Back", active = 1): """Add a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associated""" if active: flags = 3 # Visible|Enabled else: flags = 1 # Visible return self.pushbutton(name, 180, self.h-27 , 56, 17, flags, title, next) def cancel(self, title, next, name = "Cancel", active = 1): """Add a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associated""" if active: flags = 3 # Visible|Enabled else: flags = 1 # Visible return self.pushbutton(name, 304, self.h-27, 56, 17, flags, title, next) def next(self, title, next, name = "Next", active = 1): """Add a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associated""" if active: flags = 3 # Visible|Enabled else: flags = 1 # Visible return self.pushbutton(name, 236, self.h-27, 56, 17, flags, title, next) def xbutton(self, name, title, next, xpos): """Add a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associated""" return self.pushbutton(name, int(self.w*xpos - 28), self.h-27, 56, 17, 3, title, next) class bdist_msi(Command): description = "create a Microsoft Installer (.msi) binary distribution" user_options = [('bdist-dir=', None, "temporary directory for creating the distribution"), ('plat-name=', 'p', "platform name to embed in generated filenames " "(default: %s)" % get_platform()), ('keep-temp', 'k', "keep the pseudo-installation tree around after " + "creating the distribution archive"), ('target-version=', None, "require a specific python version" + " on the target system"), ('no-target-compile', 'c', "do not compile .py to .pyc on the target system"), ('no-target-optimize', 'o', "do not compile .py to .pyo (optimized) " "on the target system"), ('dist-dir=', 'd', "directory to put final built distributions in"), ('skip-build', None, "skip rebuilding everything (for testing/debugging)"), ('install-script=', None, "basename of installation script to be run after " "installation or before deinstallation"), ('pre-install-script=', None, "Fully qualified filename of a script to be run before " "any files are installed. This script need not be in the " "distribution"), ] boolean_options = ['keep-temp', 'no-target-compile', 'no-target-optimize', 'skip-build'] all_versions = ['2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '2.8', '2.9', '3.0', '3.1', '3.2', '3.3', '3.4', '3.5', '3.6', '3.7', '3.8', '3.9'] other_version = 'X' def initialize_options(self): self.bdist_dir = None self.plat_name = None self.keep_temp = 0 self.no_target_compile = 0 self.no_target_optimize = 0 self.target_version = None self.dist_dir = None self.skip_build = None self.install_script = None self.pre_install_script = None self.versions = None def finalize_options(self): self.set_undefined_options('bdist', ('skip_build', 'skip_build')) if self.bdist_dir is None: bdist_base = self.get_finalized_command('bdist').bdist_base self.bdist_dir = os.path.join(bdist_base, 'msi') short_version = get_python_version() if (not self.target_version) and self.distribution.has_ext_modules(): self.target_version = short_version if self.target_version: self.versions = [self.target_version] if not self.skip_build and self.distribution.has_ext_modules()\ and self.target_version != short_version: raise DistutilsOptionError( "target version can only be %s, or the '--skip-build'" " option must be specified" % (short_version,)) else: self.versions = list(self.all_versions) self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'), ('plat_name', 'plat_name'), ) if self.pre_install_script: raise DistutilsOptionError( "the pre-install-script feature is not yet implemented") if self.install_script: for script in self.distribution.scripts: if self.install_script == os.path.basename(script): break else: raise DistutilsOptionError( "install_script '%s' not found in scripts" % self.install_script) self.install_script_key = None def run(self): if not self.skip_build: self.run_command('build') install = self.reinitialize_command('install', reinit_subcommands=1) install.prefix = self.bdist_dir install.skip_build = self.skip_build install.warn_dir = 0 install_lib = self.reinitialize_command('install_lib') # we do not want to include pyc or pyo files install_lib.compile = 0 install_lib.optimize = 0 if self.distribution.has_ext_modules(): # If we are building an installer for a Python version other # than the one we are currently running, then we need to ensure # our build_lib reflects the other Python version rather than ours. # Note that for target_version!=sys.version, we must have skipped the # build step, so there is no issue with enforcing the build of this # version. target_version = self.target_version if not target_version: assert self.skip_build, "Should have already checked this" target_version = '%d.%d' % sys.version_info[:2] plat_specifier = ".%s-%s" % (self.plat_name, target_version) build = self.get_finalized_command('build') build.build_lib = os.path.join(build.build_base, 'lib' + plat_specifier) log.info("installing to %s", self.bdist_dir) install.ensure_finalized() # avoid warning of 'install_lib' about installing # into a directory not in sys.path sys.path.insert(0, os.path.join(self.bdist_dir, 'PURELIB')) install.run() del sys.path[0] self.mkpath(self.dist_dir) fullname = self.distribution.get_fullname() installer_name = self.get_installer_filename(fullname) installer_name = os.path.abspath(installer_name) if os.path.exists(installer_name): os.unlink(installer_name) metadata = self.distribution.metadata author = metadata.author if not author: author = metadata.maintainer if not author: author = "UNKNOWN" version = metadata.get_version() # ProductVersion must be strictly numeric # XXX need to deal with prerelease versions sversion = "%d.%d.%d" % StrictVersion(version).version # Prefix ProductName with Python x.y, so that # it sorts together with the other Python packages # in Add-Remove-Programs (APR) fullname = self.distribution.get_fullname() if self.target_version: product_name = "Python %s %s" % (self.target_version, fullname) else: product_name = "Python %s" % (fullname) self.db = msilib.init_database(installer_name, schema, product_name, msilib.gen_uuid(), sversion, author) msilib.add_tables(self.db, sequence) props = [('DistVersion', version)] email = metadata.author_email or metadata.maintainer_email if email: props.append(("ARPCONTACT", email)) if metadata.url: props.append(("ARPURLINFOABOUT", metadata.url)) if props: add_data(self.db, 'Property', props) self.add_find_python() self.add_files() self.add_scripts() self.add_ui() self.db.Commit() if hasattr(self.distribution, 'dist_files'): tup = 'bdist_msi', self.target_version or 'any', fullname self.distribution.dist_files.append(tup) if not self.keep_temp: remove_tree(self.bdist_dir, dry_run=self.dry_run) def add_files(self): db = self.db cab = msilib.CAB("distfiles") rootdir = os.path.abspath(self.bdist_dir) root = Directory(db, cab, None, rootdir, "TARGETDIR", "SourceDir") f = Feature(db, "Python", "Python", "Everything", 0, 1, directory="TARGETDIR") items = [(f, root, '')] for version in self.versions + [self.other_version]: target = "TARGETDIR" + version name = default = "Python" + version desc = "Everything" if version is self.other_version: title = "Python from another location" level = 2 else: title = "Python %s from registry" % version level = 1 f = Feature(db, name, title, desc, 1, level, directory=target) dir = Directory(db, cab, root, rootdir, target, default) items.append((f, dir, version)) db.Commit() seen = {} for feature, dir, version in items: todo = [dir] while todo: dir = todo.pop() for file in os.listdir(dir.absolute): afile = os.path.join(dir.absolute, file) if os.path.isdir(afile): short = "%s|%s" % (dir.make_short(file), file) default = file + version newdir = Directory(db, cab, dir, file, default, short) todo.append(newdir) else: if not dir.component: dir.start_component(dir.logical, feature, 0) if afile not in seen: key = seen[afile] = dir.add_file(file) if file==self.install_script: if self.install_script_key: raise DistutilsOptionError( "Multiple files with name %s" % file) self.install_script_key = '[#%s]' % key else: key = seen[afile] add_data(self.db, "DuplicateFile", [(key + version, dir.component, key, None, dir.logical)]) db.Commit() cab.commit(db) def add_find_python(self): """Adds code to the installer to compute the location of Python. Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the registry for each version of Python. Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined, else from PYTHON.MACHINE.X.Y. Properties PYTHONX.Y will be set to TARGETDIRX.Y\\python.exe""" start = 402 for ver in self.versions: install_path = r"SOFTWARE\Python\PythonCore\%s\InstallPath" % ver machine_reg = "python.machine." + ver user_reg = "python.user." + ver machine_prop = "PYTHON.MACHINE." + ver user_prop = "PYTHON.USER." + ver machine_action = "PythonFromMachine" + ver user_action = "PythonFromUser" + ver exe_action = "PythonExe" + ver target_dir_prop = "TARGETDIR" + ver exe_prop = "PYTHON" + ver if msilib.Win64: # type: msidbLocatorTypeRawValue + msidbLocatorType64bit Type = 2+16 else: Type = 2 add_data(self.db, "RegLocator", [(machine_reg, 2, install_path, None, Type), (user_reg, 1, install_path, None, Type)]) add_data(self.db, "AppSearch", [(machine_prop, machine_reg), (user_prop, user_reg)]) add_data(self.db, "CustomAction", [(machine_action, 51+256, target_dir_prop, "[" + machine_prop + "]"), (user_action, 51+256, target_dir_prop, "[" + user_prop + "]"), (exe_action, 51+256, exe_prop, "[" + target_dir_prop + "]\\python.exe"), ]) add_data(self.db, "InstallExecuteSequence", [(machine_action, machine_prop, start), (user_action, user_prop, start + 1), (exe_action, None, start + 2), ]) add_data(self.db, "InstallUISequence", [(machine_action, machine_prop, start), (user_action, user_prop, start + 1), (exe_action, None, start + 2), ]) add_data(self.db, "Condition", [("Python" + ver, 0, "NOT TARGETDIR" + ver)]) start += 4 assert start < 500 def add_scripts(self): if self.install_script: start = 6800 for ver in self.versions + [self.other_version]: install_action = "install_script." + ver exe_prop = "PYTHON" + ver add_data(self.db, "CustomAction", [(install_action, 50, exe_prop, self.install_script_key)]) add_data(self.db, "InstallExecuteSequence", [(install_action, "&Python%s=3" % ver, start)]) start += 1 # XXX pre-install scripts are currently refused in finalize_options() # but if this feature is completed, it will also need to add # entries for each version as the above code does if self.pre_install_script: scriptfn = os.path.join(self.bdist_dir, "preinstall.bat") f = open(scriptfn, "w") # The batch file will be executed with [PYTHON], so that %1 # is the path to the Python interpreter; %0 will be the path # of the batch file. # rem =""" # %1 %0 # exit # """ # f.write('rem ="""\n%1 %0\nexit\n"""\n') f.write(open(self.pre_install_script).read()) f.close() add_data(self.db, "Binary", [("PreInstall", msilib.Binary(scriptfn)) ]) add_data(self.db, "CustomAction", [("PreInstall", 2, "PreInstall", None) ]) add_data(self.db, "InstallExecuteSequence", [("PreInstall", "NOT Installed", 450)]) def add_ui(self): db = self.db x = y = 50 w = 370 h = 300 title = "[ProductName] Setup" # see "Dialog Style Bits" modal = 3 # visible | modal modeless = 1 # visible track_disk_space = 32 # UI customization properties add_data(db, "Property", # See "DefaultUIFont Property" [("DefaultUIFont", "DlgFont8"), # See "ErrorDialog Style Bit" ("ErrorDialog", "ErrorDlg"), ("Progress1", "Install"), # modified in maintenance type dlg ("Progress2", "installs"), ("MaintenanceForm_Action", "Repair"), # possible values: ALL, JUSTME ("WhichUsers", "ALL") ]) # Fonts, see "TextStyle Table" add_data(db, "TextStyle", [("DlgFont8", "Tahoma", 9, None, 0), ("DlgFontBold8", "Tahoma", 8, None, 1), #bold ("VerdanaBold10", "Verdana", 10, None, 1), ("VerdanaRed9", "Verdana", 9, 255, 0), ]) # UI Sequences, see "InstallUISequence Table", "Using a Sequence Table" # Numbers indicate sequence; see sequence.py for how these action integrate add_data(db, "InstallUISequence", [("PrepareDlg", "Not Privileged or Windows9x or Installed", 140), ("WhichUsersDlg", "Privileged and not Windows9x and not Installed", 141), # In the user interface, assume all-users installation if privileged. ("SelectFeaturesDlg", "Not Installed", 1230), # XXX no support for resume installations yet #("ResumeDlg", "Installed AND (RESUME OR Preselected)", 1240), ("MaintenanceTypeDlg", "Installed AND NOT RESUME AND NOT Preselected", 1250), ("ProgressDlg", None, 1280)]) add_data(db, 'ActionText', text.ActionText) add_data(db, 'UIText', text.UIText) ##################################################################### # Standard dialogs: FatalError, UserExit, ExitDialog fatal=PyDialog(db, "FatalError", x, y, w, h, modal, title, "Finish", "Finish", "Finish") fatal.title("[ProductName] Installer ended prematurely") fatal.back("< Back", "Finish", active = 0) fatal.cancel("Cancel", "Back", active = 0) fatal.text("Description1", 15, 70, 320, 80, 0x30003, "[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.") fatal.text("Description2", 15, 155, 320, 20, 0x30003, "Click the Finish button to exit the Installer.") c=fatal.next("Finish", "Cancel", name="Finish") c.event("EndDialog", "Exit") user_exit=PyDialog(db, "UserExit", x, y, w, h, modal, title, "Finish", "Finish", "Finish") user_exit.title("[ProductName] Installer was interrupted") user_exit.back("< Back", "Finish", active = 0) user_exit.cancel("Cancel", "Back", active = 0) user_exit.text("Description1", 15, 70, 320, 80, 0x30003, "[ProductName] setup was interrupted. Your system has not been modified. " "To install this program at a later time, please run the installation again.") user_exit.text("Description2", 15, 155, 320, 20, 0x30003, "Click the Finish button to exit the Installer.") c = user_exit.next("Finish", "Cancel", name="Finish") c.event("EndDialog", "Exit") exit_dialog = PyDialog(db, "ExitDialog", x, y, w, h, modal, title, "Finish", "Finish", "Finish") exit_dialog.title("Completing the [ProductName] Installer") exit_dialog.back("< Back", "Finish", active = 0) exit_dialog.cancel("Cancel", "Back", active = 0) exit_dialog.text("Description", 15, 235, 320, 20, 0x30003, "Click the Finish button to exit the Installer.") c = exit_dialog.next("Finish", "Cancel", name="Finish") c.event("EndDialog", "Return") ##################################################################### # Required dialog: FilesInUse, ErrorDlg inuse = PyDialog(db, "FilesInUse", x, y, w, h, 19, # KeepModeless|Modal|Visible title, "Retry", "Retry", "Retry", bitmap=False) inuse.text("Title", 15, 6, 200, 15, 0x30003, r"{\DlgFontBold8}Files in Use") inuse.text("Description", 20, 23, 280, 20, 0x30003, "Some files that need to be updated are currently in use.") inuse.text("Text", 20, 55, 330, 50, 3, "The following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.") inuse.control("List", "ListBox", 20, 107, 330, 130, 7, "FileInUseProcess", None, None, None) c=inuse.back("Exit", "Ignore", name="Exit") c.event("EndDialog", "Exit") c=inuse.next("Ignore", "Retry", name="Ignore") c.event("EndDialog", "Ignore") c=inuse.cancel("Retry", "Exit", name="Retry") c.event("EndDialog","Retry") # See "Error Dialog". See "ICE20" for the required names of the controls. error = Dialog(db, "ErrorDlg", 50, 10, 330, 101, 65543, # Error|Minimize|Modal|Visible title, "ErrorText", None, None) error.text("ErrorText", 50,9,280,48,3, "") #error.control("ErrorIcon", "Icon", 15, 9, 24, 24, 5242881, None, "py.ico", None, None) error.pushbutton("N",120,72,81,21,3,"No",None).event("EndDialog","ErrorNo") error.pushbutton("Y",240,72,81,21,3,"Yes",None).event("EndDialog","ErrorYes") error.pushbutton("A",0,72,81,21,3,"Abort",None).event("EndDialog","ErrorAbort") error.pushbutton("C",42,72,81,21,3,"Cancel",None).event("EndDialog","ErrorCancel") error.pushbutton("I",81,72,81,21,3,"Ignore",None).event("EndDialog","ErrorIgnore") error.pushbutton("O",159,72,81,21,3,"Ok",None).event("EndDialog","ErrorOk") error.pushbutton("R",198,72,81,21,3,"Retry",None).event("EndDialog","ErrorRetry") ##################################################################### # Global "Query Cancel" dialog cancel = Dialog(db, "CancelDlg", 50, 10, 260, 85, 3, title, "No", "No", "No") cancel.text("Text", 48, 15, 194, 30, 3, "Are you sure you want to cancel [ProductName] installation?") #cancel.control("Icon", "Icon", 15, 15, 24, 24, 5242881, None, # "py.ico", None, None) c=cancel.pushbutton("Yes", 72, 57, 56, 17, 3, "Yes", "No") c.event("EndDialog", "Exit") c=cancel.pushbutton("No", 132, 57, 56, 17, 3, "No", "Yes") c.event("EndDialog", "Return") ##################################################################### # Global "Wait for costing" dialog costing = Dialog(db, "WaitForCostingDlg", 50, 10, 260, 85, modal, title, "Return", "Return", "Return") costing.text("Text", 48, 15, 194, 30, 3, "Please wait while the installer finishes determining your disk space requirements.") c = costing.pushbutton("Return", 102, 57, 56, 17, 3, "Return", None) c.event("EndDialog", "Exit") ##################################################################### # Preparation dialog: no user input except cancellation prep = PyDialog(db, "PrepareDlg", x, y, w, h, modeless, title, "Cancel", "Cancel", "Cancel") prep.text("Description", 15, 70, 320, 40, 0x30003, "Please wait while the Installer prepares to guide you through the installation.") prep.title("Welcome to the [ProductName] Installer") c=prep.text("ActionText", 15, 110, 320, 20, 0x30003, "Pondering...") c.mapping("ActionText", "Text") c=prep.text("ActionData", 15, 135, 320, 30, 0x30003, None) c.mapping("ActionData", "Text") prep.back("Back", None, active=0) prep.next("Next", None, active=0) c=prep.cancel("Cancel", None) c.event("SpawnDialog", "CancelDlg") ##################################################################### # Feature (Python directory) selection seldlg = PyDialog(db, "SelectFeaturesDlg", x, y, w, h, modal, title, "Next", "Next", "Cancel") seldlg.title("Select Python Installations") seldlg.text("Hint", 15, 30, 300, 20, 3, "Select the Python locations where %s should be installed." % self.distribution.get_fullname()) seldlg.back("< Back", None, active=0) c = seldlg.next("Next >", "Cancel") order = 1 c.event("[TARGETDIR]", "[SourceDir]", ordering=order) for version in self.versions + [self.other_version]: order += 1 c.event("[TARGETDIR]", "[TARGETDIR%s]" % version, "FEATURE_SELECTED AND &Python%s=3" % version, ordering=order) c.event("SpawnWaitDialog", "WaitForCostingDlg", ordering=order + 1) c.event("EndDialog", "Return", ordering=order + 2) c = seldlg.cancel("Cancel", "Features") c.event("SpawnDialog", "CancelDlg") c = seldlg.control("Features", "SelectionTree", 15, 60, 300, 120, 3, "FEATURE", None, "PathEdit", None) c.event("[FEATURE_SELECTED]", "1") ver = self.other_version install_other_cond = "FEATURE_SELECTED AND &Python%s=3" % ver dont_install_other_cond = "FEATURE_SELECTED AND &Python%s<>3" % ver c = seldlg.text("Other", 15, 200, 300, 15, 3, "Provide an alternate Python location") c.condition("Enable", install_other_cond) c.condition("Show", install_other_cond) c.condition("Disable", dont_install_other_cond) c.condition("Hide", dont_install_other_cond) c = seldlg.control("PathEdit", "PathEdit", 15, 215, 300, 16, 1, "TARGETDIR" + ver, None, "Next", None) c.condition("Enable", install_other_cond) c.condition("Show", install_other_cond) c.condition("Disable", dont_install_other_cond) c.condition("Hide", dont_install_other_cond) ##################################################################### # Disk cost cost = PyDialog(db, "DiskCostDlg", x, y, w, h, modal, title, "OK", "OK", "OK", bitmap=False) cost.text("Title", 15, 6, 200, 15, 0x30003, r"{\DlgFontBold8}Disk Space Requirements") cost.text("Description", 20, 20, 280, 20, 0x30003, "The disk space required for the installation of the selected features.") cost.text("Text", 20, 53, 330, 60, 3, "The highlighted volumes (if any) do not have enough disk space " "available for the currently selected features. You can either " "remove some files from the highlighted volumes, or choose to " "install less features onto local drive(s), or select different " "destination drive(s).") cost.control("VolumeList", "VolumeCostList", 20, 100, 330, 150, 393223, None, "{120}{70}{70}{70}{70}", None, None) cost.xbutton("OK", "Ok", None, 0.5).event("EndDialog", "Return") ##################################################################### # WhichUsers Dialog. Only available on NT, and for privileged users. # This must be run before FindRelatedProducts, because that will # take into account whether the previous installation was per-user # or per-machine. We currently don't support going back to this # dialog after "Next" was selected; to support this, we would need to # find how to reset the ALLUSERS property, and how to re-run # FindRelatedProducts. # On Windows9x, the ALLUSERS property is ignored on the command line # and in the Property table, but installer fails according to the documentation # if a dialog attempts to set ALLUSERS. whichusers = PyDialog(db, "WhichUsersDlg", x, y, w, h, modal, title, "AdminInstall", "Next", "Cancel") whichusers.title("Select whether to install [ProductName] for all users of this computer.") # A radio group with two options: allusers, justme g = whichusers.radiogroup("AdminInstall", 15, 60, 260, 50, 3, "WhichUsers", "", "Next") g.add("ALL", 0, 5, 150, 20, "Install for all users") g.add("JUSTME", 0, 25, 150, 20, "Install just for me") whichusers.back("Back", None, active=0) c = whichusers.next("Next >", "Cancel") c.event("[ALLUSERS]", "1", 'WhichUsers="ALL"', 1) c.event("EndDialog", "Return", ordering = 2) c = whichusers.cancel("Cancel", "AdminInstall") c.event("SpawnDialog", "CancelDlg") ##################################################################### # Installation Progress dialog (modeless) progress = PyDialog(db, "ProgressDlg", x, y, w, h, modeless, title, "Cancel", "Cancel", "Cancel", bitmap=False) progress.text("Title", 20, 15, 200, 15, 0x30003, r"{\DlgFontBold8}[Progress1] [ProductName]") progress.text("Text", 35, 65, 300, 30, 3, "Please wait while the Installer [Progress2] [ProductName]. " "This may take several minutes.") progress.text("StatusLabel", 35, 100, 35, 20, 3, "Status:") c=progress.text("ActionText", 70, 100, w-70, 20, 3, "Pondering...") c.mapping("ActionText", "Text") #c=progress.text("ActionData", 35, 140, 300, 20, 3, None) #c.mapping("ActionData", "Text") c=progress.control("ProgressBar", "ProgressBar", 35, 120, 300, 10, 65537, None, "Progress done", None, None) c.mapping("SetProgress", "Progress") progress.back("< Back", "Next", active=False) progress.next("Next >", "Cancel", active=False) progress.cancel("Cancel", "Back").event("SpawnDialog", "CancelDlg") ################################################################### # Maintenance type: repair/uninstall maint = PyDialog(db, "MaintenanceTypeDlg", x, y, w, h, modal, title, "Next", "Next", "Cancel") maint.title("Welcome to the [ProductName] Setup Wizard") maint.text("BodyText", 15, 63, 330, 42, 3, "Select whether you want to repair or remove [ProductName].") g=maint.radiogroup("RepairRadioGroup", 15, 108, 330, 60, 3, "MaintenanceForm_Action", "", "Next") #g.add("Change", 0, 0, 200, 17, "&Change [ProductName]") g.add("Repair", 0, 18, 200, 17, "&Repair [ProductName]") g.add("Remove", 0, 36, 200, 17, "Re&move [ProductName]") maint.back("< Back", None, active=False) c=maint.next("Finish", "Cancel") # Change installation: Change progress dialog to "Change", then ask # for feature selection #c.event("[Progress1]", "Change", 'MaintenanceForm_Action="Change"', 1) #c.event("[Progress2]", "changes", 'MaintenanceForm_Action="Change"', 2) # Reinstall: Change progress dialog to "Repair", then invoke reinstall # Also set list of reinstalled features to "ALL" c.event("[REINSTALL]", "ALL", 'MaintenanceForm_Action="Repair"', 5) c.event("[Progress1]", "Repairing", 'MaintenanceForm_Action="Repair"', 6) c.event("[Progress2]", "repairs", 'MaintenanceForm_Action="Repair"', 7) c.event("Reinstall", "ALL", 'MaintenanceForm_Action="Repair"', 8) # Uninstall: Change progress to "Remove", then invoke uninstall # Also set list of removed features to "ALL" c.event("[REMOVE]", "ALL", 'MaintenanceForm_Action="Remove"', 11) c.event("[Progress1]", "Removing", 'MaintenanceForm_Action="Remove"', 12) c.event("[Progress2]", "removes", 'MaintenanceForm_Action="Remove"', 13) c.event("Remove", "ALL", 'MaintenanceForm_Action="Remove"', 14) # Close dialog when maintenance action scheduled c.event("EndDialog", "Return", 'MaintenanceForm_Action<>"Change"', 20) #c.event("NewDialog", "SelectFeaturesDlg", 'MaintenanceForm_Action="Change"', 21) maint.cancel("Cancel", "RepairRadioGroup").event("SpawnDialog", "CancelDlg") def get_installer_filename(self, fullname): # Factored out to allow overriding in subclasses if self.target_version: base_name = "%s.%s-py%s.msi" % (fullname, self.plat_name, self.target_version) else: base_name = "%s.%s.msi" % (fullname, self.plat_name) installer_name = os.path.join(self.dist_dir, base_name) return installer_name PKD]*Rj&command/install_headers.pynu["""distutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.""" from distutils.core import Command # XXX force is never used class install_headers(Command): description = "install C/C++ header files" user_options = [('install-dir=', 'd', "directory to install header files to"), ('force', 'f', "force installation (overwrite existing files)"), ] boolean_options = ['force'] def initialize_options(self): self.install_dir = None self.force = 0 self.outfiles = [] def finalize_options(self): self.set_undefined_options('install', ('install_headers', 'install_dir'), ('force', 'force')) def run(self): headers = self.distribution.headers if not headers: return self.mkpath(self.install_dir) for header in headers: (out, _) = self.copy_file(header, self.install_dir) self.outfiles.append(out) def get_inputs(self): return self.distribution.headers or [] def get_outputs(self): return self.outfiles PKD]v3;VVcommand/build_clib.pynu["""distutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.""" # XXX this module has *lots* of code ripped-off quite transparently from # build_ext.py -- not surprisingly really, as the work required to build # a static library from a collection of C source files is not really all # that different from what's required to build a shared object file from # a collection of C source files. Nevertheless, I haven't done the # necessary refactoring to account for the overlap in code between the # two modules, mainly because a number of subtle details changed in the # cut 'n paste. Sigh. import os from distutils.core import Command from distutils.errors import * from distutils.sysconfig import customize_compiler from distutils import log def show_compilers(): from distutils.ccompiler import show_compilers show_compilers() class build_clib(Command): description = "build C/C++ libraries used by Python extensions" user_options = [ ('build-clib=', 'b', "directory to build C/C++ libraries to"), ('build-temp=', 't', "directory to put temporary build by-products"), ('debug', 'g', "compile with debugging information"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), ('compiler=', 'c', "specify the compiler type"), ] boolean_options = ['debug', 'force'] help_options = [ ('help-compiler', None, "list available compilers", show_compilers), ] def initialize_options(self): self.build_clib = None self.build_temp = None # List of libraries to build self.libraries = None # Compilation options for all libraries self.include_dirs = None self.define = None self.undef = None self.debug = None self.force = 0 self.compiler = None def finalize_options(self): # This might be confusing: both build-clib and build-temp default # to build-temp as defined by the "build" command. This is because # I think that C libraries are really just temporary build # by-products, at least from the point of view of building Python # extensions -- but I want to keep my options open. self.set_undefined_options('build', ('build_temp', 'build_clib'), ('build_temp', 'build_temp'), ('compiler', 'compiler'), ('debug', 'debug'), ('force', 'force')) self.libraries = self.distribution.libraries if self.libraries: self.check_library_list(self.libraries) if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] if isinstance(self.include_dirs, str): self.include_dirs = self.include_dirs.split(os.pathsep) # XXX same as for build_ext -- what about 'self.define' and # 'self.undef' ? def run(self): if not self.libraries: return # Yech -- this is cut 'n pasted from build_ext.py! from distutils.ccompiler import new_compiler self.compiler = new_compiler(compiler=self.compiler, dry_run=self.dry_run, force=self.force) customize_compiler(self.compiler) if self.include_dirs is not None: self.compiler.set_include_dirs(self.include_dirs) if self.define is not None: # 'define' option is a list of (name,value) tuples for (name,value) in self.define: self.compiler.define_macro(name, value) if self.undef is not None: for macro in self.undef: self.compiler.undefine_macro(macro) self.build_libraries(self.libraries) def check_library_list(self, libraries): """Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. """ if not isinstance(libraries, list): raise DistutilsSetupError( "'libraries' option must be a list of tuples") for lib in libraries: if not isinstance(lib, tuple) and len(lib) != 2: raise DistutilsSetupError( "each element of 'libraries' must a 2-tuple") name, build_info = lib if not isinstance(name, str): raise DistutilsSetupError( "first element of each tuple in 'libraries' " "must be a string (the library name)") if '/' in name or (os.sep != '/' and os.sep in name): raise DistutilsSetupError("bad library name '%s': " "may not contain directory separators" % lib[0]) if not isinstance(build_info, dict): raise DistutilsSetupError( "second element of each tuple in 'libraries' " "must be a dictionary (build info)") def get_library_names(self): # Assume the library list is valid -- 'check_library_list()' is # called from 'finalize_options()', so it should be! if not self.libraries: return None lib_names = [] for (lib_name, build_info) in self.libraries: lib_names.append(lib_name) return lib_names def get_source_files(self): self.check_library_list(self.libraries) filenames = [] for (lib_name, build_info) in self.libraries: sources = build_info.get('sources') if sources is None or not isinstance(sources, (list, tuple)): raise DistutilsSetupError( "in 'libraries' option (library '%s'), " "'sources' must be present and must be " "a list of source filenames" % lib_name) filenames.extend(sources) return filenames def build_libraries(self, libraries): for (lib_name, build_info) in libraries: sources = build_info.get('sources') if sources is None or not isinstance(sources, (list, tuple)): raise DistutilsSetupError( "in 'libraries' option (library '%s'), " "'sources' must be present and must be " "a list of source filenames" % lib_name) sources = list(sources) log.info("building '%s' library", lib_name) # First, compile the source code to object files in the library # directory. (This should probably change to putting object # files in a temporary build directory.) macros = build_info.get('macros') include_dirs = build_info.get('include_dirs') objects = self.compiler.compile(sources, output_dir=self.build_temp, macros=macros, include_dirs=include_dirs, debug=self.debug) # Now "link" the object files together into a static library. # (On Unix at least, this isn't really linking -- it just # builds an archive. Whatever.) self.compiler.create_static_lib(objects, lib_name, output_dir=self.build_clib, debug=self.debug) PKD]n*.OOutil.pynu["""distutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. """ import os import re import importlib.util import string import sys from distutils.errors import DistutilsPlatformError from distutils.dep_util import newer from distutils.spawn import spawn from distutils import log from distutils.errors import DistutilsByteCompileError def get_platform (): """Return a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. """ if os.name == 'nt': if 'amd64' in sys.version.lower(): return 'win-amd64' return sys.platform # Set for cross builds explicitly if "_PYTHON_HOST_PLATFORM" in os.environ: return os.environ["_PYTHON_HOST_PLATFORM"] if os.name != "posix" or not hasattr(os, 'uname'): # XXX what about the architecture? NT is Intel or Alpha, # Mac OS is M68k or PPC, etc. return sys.platform # Try to distinguish various flavours of Unix (osname, host, release, version, machine) = os.uname() # Convert the OS name to lowercase, remove '/' characters, and translate # spaces (for "Power Macintosh") osname = osname.lower().replace('/', '') machine = machine.replace(' ', '_') machine = machine.replace('/', '-') if osname[:5] == "linux": # At least on Linux/Intel, 'machine' is the processor -- # i386, etc. # XXX what about Alpha, SPARC, etc? return "%s-%s" % (osname, machine) elif osname[:5] == "sunos": if release[0] >= "5": # SunOS 5 == Solaris 2 osname = "solaris" release = "%d.%s" % (int(release[0]) - 3, release[2:]) # We can't use "platform.architecture()[0]" because a # bootstrap problem. We use a dict to get an error # if some suspicious happens. bitness = {2147483647:"32bit", 9223372036854775807:"64bit"} machine += ".%s" % bitness[sys.maxsize] # fall through to standard osname-release-machine representation elif osname[:3] == "aix": return "%s-%s.%s" % (osname, version, release) elif osname[:6] == "cygwin": osname = "cygwin" rel_re = re.compile (r'[\d.]+', re.ASCII) m = rel_re.match(release) if m: release = m.group() elif osname[:6] == "darwin": import _osx_support, distutils.sysconfig osname, release, machine = _osx_support.get_platform_osx( distutils.sysconfig.get_config_vars(), osname, release, machine) return "%s-%s-%s" % (osname, release, machine) # get_platform () def convert_path (pathname): """Return 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. """ if os.sep == '/': return pathname if not pathname: return pathname if pathname[0] == '/': raise ValueError("path '%s' cannot be absolute" % pathname) if pathname[-1] == '/': raise ValueError("path '%s' cannot end with '/'" % pathname) paths = pathname.split('/') while '.' in paths: paths.remove('.') if not paths: return os.curdir return os.path.join(*paths) # convert_path () def change_root (new_root, pathname): """Return 'pathname' with 'new_root' prepended. If 'pathname' is relative, this is equivalent to "os.path.join(new_root,pathname)". Otherwise, it requires making 'pathname' relative and then joining the two, which is tricky on DOS/Windows and Mac OS. """ if os.name == 'posix': if not os.path.isabs(pathname): return os.path.join(new_root, pathname) else: return os.path.join(new_root, pathname[1:]) elif os.name == 'nt': (drive, path) = os.path.splitdrive(pathname) if path[0] == '\\': path = path[1:] return os.path.join(new_root, path) else: raise DistutilsPlatformError("nothing known about platform '%s'" % os.name) _environ_checked = 0 def check_environ (): """Ensure that 'os.environ' has all the environment variables we guarantee that users can use in config files, command-line options, etc. Currently this includes: HOME - user's home directory (Unix only) PLAT - description of the current platform, including hardware and OS (see 'get_platform()') """ global _environ_checked if _environ_checked: return if os.name == 'posix' and 'HOME' not in os.environ: try: import pwd os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] except (ImportError, KeyError): # bpo-10496: if the current user identifier doesn't exist in the # password database, do nothing pass if 'PLAT' not in os.environ: os.environ['PLAT'] = get_platform() _environ_checked = 1 def subst_vars (s, local_vars): """Perform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. """ check_environ() def _subst (match, local_vars=local_vars): var_name = match.group(1) if var_name in local_vars: return str(local_vars[var_name]) else: return os.environ[var_name] try: return re.sub(r'\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s) except KeyError as var: raise ValueError("invalid variable '$%s'" % var) # subst_vars () def grok_environment_error (exc, prefix="error: "): # Function kept for backward compatibility. # Used to try clever things with EnvironmentErrors, # but nowadays str(exception) produces good messages. return prefix + str(exc) # Needed by 'split_quoted()' _wordchars_re = _squote_re = _dquote_re = None def _init_regex(): global _wordchars_re, _squote_re, _dquote_re _wordchars_re = re.compile(r'[^\\\'\"%s ]*' % string.whitespace) _squote_re = re.compile(r"'(?:[^'\\]|\\.)*'") _dquote_re = re.compile(r'"(?:[^"\\]|\\.)*"') def split_quoted (s): """Split a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. """ # This is a nice algorithm for splitting up a single string, since it # doesn't require character-by-character examination. It was a little # bit of a brain-bender to get it working right, though... if _wordchars_re is None: _init_regex() s = s.strip() words = [] pos = 0 while s: m = _wordchars_re.match(s, pos) end = m.end() if end == len(s): words.append(s[:end]) break if s[end] in string.whitespace: # unescaped, unquoted whitespace: now words.append(s[:end]) # we definitely have a word delimiter s = s[end:].lstrip() pos = 0 elif s[end] == '\\': # preserve whatever is being escaped; # will become part of the current word s = s[:end] + s[end+1:] pos = end+1 else: if s[end] == "'": # slurp singly-quoted string m = _squote_re.match(s, end) elif s[end] == '"': # slurp doubly-quoted string m = _dquote_re.match(s, end) else: raise RuntimeError("this can't happen (bad char '%c')" % s[end]) if m is None: raise ValueError("bad string (mismatched %s quotes?)" % s[end]) (beg, end) = m.span() s = s[:beg] + s[beg+1:end-1] + s[end:] pos = m.end() - 2 if pos >= len(s): words.append(s) break return words # split_quoted () def execute (func, args, msg=None, verbose=0, dry_run=0): """Perform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. """ if msg is None: msg = "%s%r" % (func.__name__, args) if msg[-2:] == ',)': # correct for singleton tuple msg = msg[0:-2] + ')' log.info(msg) if not dry_run: func(*args) def strtobool (val): """Convert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. """ val = val.lower() if val in ('y', 'yes', 't', 'true', 'on', '1'): return 1 elif val in ('n', 'no', 'f', 'false', 'off', '0'): return 0 else: raise ValueError("invalid truth value %r" % (val,)) def byte_compile (py_files, optimize=0, force=0, prefix=None, base_dir=None, verbose=1, dry_run=0, direct=None): """Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. """ # Late import to fix a bootstrap issue: _posixsubprocess is built by # setup.py, but setup.py uses distutils. import subprocess # nothing is done if sys.dont_write_bytecode is True if sys.dont_write_bytecode: raise DistutilsByteCompileError('byte-compiling is disabled.') # First, if the caller didn't force us into direct or indirect mode, # figure out which mode we should be in. We take a conservative # approach: choose direct mode *only* if the current interpreter is # in debug mode and optimize is 0. If we're not in debug mode (-O # or -OO), we don't know which level of optimization this # interpreter is running with, so we can't do direct # byte-compilation and be certain that it's the right thing. Thus, # always compile indirectly if the current interpreter is in either # optimize mode, or if either optimization level was requested by # the caller. if direct is None: direct = (__debug__ and optimize == 0) # "Indirect" byte-compilation: write a temporary script and then # run it with the appropriate flags. if not direct: try: from tempfile import mkstemp (script_fd, script_name) = mkstemp(".py") except ImportError: from tempfile import mktemp (script_fd, script_name) = None, mktemp(".py") log.info("writing byte-compilation script '%s'", script_name) if not dry_run: if script_fd is not None: script = os.fdopen(script_fd, "w") else: script = open(script_name, "w") script.write("""\ from distutils.util import byte_compile files = [ """) # XXX would be nice to write absolute filenames, just for # safety's sake (script should be more robust in the face of # chdir'ing before running it). But this requires abspath'ing # 'prefix' as well, and that breaks the hack in build_lib's # 'byte_compile()' method that carefully tacks on a trailing # slash (os.sep really) to make sure the prefix here is "just # right". This whole prefix business is rather delicate -- the # problem is that it's really a directory, but I'm treating it # as a dumb string, so trailing slashes and so forth matter. #py_files = map(os.path.abspath, py_files) #if prefix: # prefix = os.path.abspath(prefix) script.write(",\n".join(map(repr, py_files)) + "]\n") script.write(""" byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) """ % (optimize, force, prefix, base_dir, verbose)) script.close() cmd = [sys.executable] cmd.extend(subprocess._optim_args_from_interpreter_flags()) cmd.append(script_name) spawn(cmd, dry_run=dry_run) execute(os.remove, (script_name,), "removing %s" % script_name, dry_run=dry_run) # "Direct" byte-compilation: use the py_compile module to compile # right here, right now. Note that the script generated in indirect # mode simply calls 'byte_compile()' in direct mode, a weird sort of # cross-process recursion. Hey, it works! else: from py_compile import compile for file in py_files: if file[-3:] != ".py": # This lets us be lazy and not filter filenames in # the "install_lib" command. continue # Terminology from the py_compile module: # cfile - byte-compiled file # dfile - purported source filename (same as 'file' by default) if optimize >= 0: opt = '' if optimize == 0 else optimize cfile = importlib.util.cache_from_source( file, optimization=opt) else: cfile = importlib.util.cache_from_source(file) dfile = file if prefix: if file[:len(prefix)] != prefix: raise ValueError("invalid prefix: filename %r doesn't start with %r" % (file, prefix)) dfile = dfile[len(prefix):] if base_dir: dfile = os.path.join(base_dir, dfile) cfile_base = os.path.basename(cfile) if direct: if force or newer(file, cfile): log.info("byte-compiling %s to %s", file, cfile_base) if not dry_run: compile(file, cfile, dfile) else: log.debug("skipping byte-compilation of %s to %s", file, cfile_base) # byte_compile () def rfc822_escape (header): """Return a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline. """ lines = header.split('\n') sep = '\n' + 8 * ' ' return sep.join(lines) # 2to3 support def run_2to3(files, fixer_names=None, options=None, explicit=None): """Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.""" if not files: return # Make this class local, to delay import of 2to3 from lib2to3.refactor import RefactoringTool, get_fixers_from_package class DistutilsRefactoringTool(RefactoringTool): def log_error(self, msg, *args, **kw): log.error(msg, *args) def log_message(self, msg, *args): log.info(msg, *args) def log_debug(self, msg, *args): log.debug(msg, *args) if fixer_names is None: fixer_names = get_fixers_from_package('lib2to3.fixes') r = DistutilsRefactoringTool(fixer_names, options=options) r.refactor(files, write=True) def copydir_run_2to3(src, dest, template=None, fixer_names=None, options=None, explicit=None): """Recursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. """ from distutils.dir_util import mkpath from distutils.file_util import copy_file from distutils.filelist import FileList filelist = FileList() curdir = os.getcwd() os.chdir(src) try: filelist.findall() finally: os.chdir(curdir) filelist.files[:] = filelist.allfiles if template: for line in template.splitlines(): line = line.strip() if not line: continue filelist.process_template_line(line) copied = [] for filename in filelist.files: outname = os.path.join(dest, filename) mkpath(os.path.dirname(outname)) res = copy_file(os.path.join(src, filename), outname, update=1) if res[1]: copied.append(outname) run_2to3([fn for fn in copied if fn.lower().endswith('.py')], fixer_names=fixer_names, options=options, explicit=explicit) return copied class Mixin2to3: '''Mixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.''' # provide list of fixers to run; # defaults to all from lib2to3.fixers fixer_names = None # options dictionary options = None # list of fixers to invoke even though they are marked as explicit explicit = None def run_2to3(self, files): return run_2to3(files, self.fixer_names, self.options, self.explicit) PKD]=/w/wmsvc9compiler.pynu["""distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. """ # Written by Perry Stoll # hacked by Robin Becker and Thomas Heller to do a better job of # finding DevStudio (through the registry) # ported to VS2005 and VS 2008 by Christian Heimes import os import subprocess import sys import re from distutils.errors import DistutilsExecError, DistutilsPlatformError, \ CompileError, LibError, LinkError from distutils.ccompiler import CCompiler, gen_preprocess_options, \ gen_lib_options from distutils import log from distutils.util import get_platform import winreg RegOpenKeyEx = winreg.OpenKeyEx RegEnumKey = winreg.EnumKey RegEnumValue = winreg.EnumValue RegError = winreg.error HKEYS = (winreg.HKEY_USERS, winreg.HKEY_CURRENT_USER, winreg.HKEY_LOCAL_MACHINE, winreg.HKEY_CLASSES_ROOT) NATIVE_WIN64 = (sys.platform == 'win32' and sys.maxsize > 2**32) if NATIVE_WIN64: # Visual C++ is a 32-bit application, so we need to look in # the corresponding registry branch, if we're running a # 64-bit Python on Win64 VS_BASE = r"Software\Wow6432Node\Microsoft\VisualStudio\%0.1f" WINSDK_BASE = r"Software\Wow6432Node\Microsoft\Microsoft SDKs\Windows" NET_BASE = r"Software\Wow6432Node\Microsoft\.NETFramework" else: VS_BASE = r"Software\Microsoft\VisualStudio\%0.1f" WINSDK_BASE = r"Software\Microsoft\Microsoft SDKs\Windows" NET_BASE = r"Software\Microsoft\.NETFramework" # A map keyed by get_platform() return values to values accepted by # 'vcvarsall.bat'. Note a cross-compile may combine these (eg, 'x86_amd64' is # the param to cross-compile on x86 targeting amd64.) PLAT_TO_VCVARS = { 'win32' : 'x86', 'win-amd64' : 'amd64', } class Reg: """Helper class to read values from the registry """ def get_value(cls, path, key): for base in HKEYS: d = cls.read_values(base, path) if d and key in d: return d[key] raise KeyError(key) get_value = classmethod(get_value) def read_keys(cls, base, key): """Return list of registry keys.""" try: handle = RegOpenKeyEx(base, key) except RegError: return None L = [] i = 0 while True: try: k = RegEnumKey(handle, i) except RegError: break L.append(k) i += 1 return L read_keys = classmethod(read_keys) def read_values(cls, base, key): """Return dict of registry keys and values. All names are converted to lowercase. """ try: handle = RegOpenKeyEx(base, key) except RegError: return None d = {} i = 0 while True: try: name, value, type = RegEnumValue(handle, i) except RegError: break name = name.lower() d[cls.convert_mbcs(name)] = cls.convert_mbcs(value) i += 1 return d read_values = classmethod(read_values) def convert_mbcs(s): dec = getattr(s, "decode", None) if dec is not None: try: s = dec("mbcs") except UnicodeError: pass return s convert_mbcs = staticmethod(convert_mbcs) class MacroExpander: def __init__(self, version): self.macros = {} self.vsbase = VS_BASE % version self.load_macros(version) def set_macro(self, macro, path, key): self.macros["$(%s)" % macro] = Reg.get_value(path, key) def load_macros(self, version): self.set_macro("VCInstallDir", self.vsbase + r"\Setup\VC", "productdir") self.set_macro("VSInstallDir", self.vsbase + r"\Setup\VS", "productdir") self.set_macro("FrameworkDir", NET_BASE, "installroot") try: if version >= 8.0: self.set_macro("FrameworkSDKDir", NET_BASE, "sdkinstallrootv2.0") else: raise KeyError("sdkinstallrootv2.0") except KeyError: raise DistutilsPlatformError( """Python was built with Visual Studio 2008; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2008 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.""") if version >= 9.0: self.set_macro("FrameworkVersion", self.vsbase, "clr version") self.set_macro("WindowsSdkDir", WINSDK_BASE, "currentinstallfolder") else: p = r"Software\Microsoft\NET Framework Setup\Product" for base in HKEYS: try: h = RegOpenKeyEx(base, p) except RegError: continue key = RegEnumKey(h, 0) d = Reg.get_value(base, r"%s\%s" % (p, key)) self.macros["$(FrameworkVersion)"] = d["version"] def sub(self, s): for k, v in self.macros.items(): s = s.replace(k, v) return s def get_build_version(): """Return the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. """ prefix = "MSC v." i = sys.version.find(prefix) if i == -1: return 6 i = i + len(prefix) s, rest = sys.version[i:].split(" ", 1) majorVersion = int(s[:-2]) - 6 if majorVersion >= 13: # v13 was skipped and should be v14 majorVersion += 1 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: minorVersion = 0 if majorVersion >= 6: return majorVersion + minorVersion # else we don't know what version of the compiler this is return None def normalize_and_reduce_paths(paths): """Return a list of normalized paths with duplicates removed. The current order of paths is maintained. """ # Paths are normalized so things like: /a and /a/ aren't both preserved. reduced_paths = [] for p in paths: np = os.path.normpath(p) # XXX(nnorwitz): O(n**2), if reduced_paths gets long perhaps use a set. if np not in reduced_paths: reduced_paths.append(np) return reduced_paths def removeDuplicates(variable): """Remove duplicate values of an environment variable. """ oldList = variable.split(os.pathsep) newList = [] for i in oldList: if i not in newList: newList.append(i) newVariable = os.pathsep.join(newList) return newVariable def find_vcvarsall(version): """Find the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. """ vsbase = VS_BASE % version try: productdir = Reg.get_value(r"%s\Setup\VC" % vsbase, "productdir") except KeyError: log.debug("Unable to find productdir in registry") productdir = None if not productdir or not os.path.isdir(productdir): toolskey = "VS%0.f0COMNTOOLS" % version toolsdir = os.environ.get(toolskey, None) if toolsdir and os.path.isdir(toolsdir): productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.abspath(productdir) if not os.path.isdir(productdir): log.debug("%s is not a valid directory" % productdir) return None else: log.debug("Env var %s is not set or invalid" % toolskey) if not productdir: log.debug("No productdir found") return None vcvarsall = os.path.join(productdir, "vcvarsall.bat") if os.path.isfile(vcvarsall): return vcvarsall log.debug("Unable to find vcvarsall.bat") return None def query_vcvarsall(version, arch="x86"): """Launch vcvarsall.bat and read the settings from its environment """ vcvarsall = find_vcvarsall(version) interesting = {"include", "lib", "libpath", "path"} result = {} if vcvarsall is None: raise DistutilsPlatformError("Unable to find vcvarsall.bat") log.debug("Calling 'vcvarsall.bat %s' (version=%s)", arch, version) popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch), stdout=subprocess.PIPE, stderr=subprocess.PIPE) try: stdout, stderr = popen.communicate() if popen.wait() != 0: raise DistutilsPlatformError(stderr.decode("mbcs")) stdout = stdout.decode("mbcs") for line in stdout.split("\n"): line = Reg.convert_mbcs(line) if '=' not in line: continue line = line.strip() key, value = line.split('=', 1) key = key.lower() if key in interesting: if value.endswith(os.pathsep): value = value[:-1] result[key] = removeDuplicates(value) finally: popen.stdout.close() popen.stderr.close() if len(result) != len(interesting): raise ValueError(str(list(result.keys()))) return result # More globals VERSION = get_build_version() if VERSION < 8.0: raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION) # MACROS = MacroExpander(VERSION) class MSVCCompiler(CCompiler) : """Concrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.""" compiler_type = 'msvc' # Just set this so CCompiler's constructor doesn't barf. We currently # don't use the 'set_executables()' bureaucracy provided by CCompiler, # as it really isn't necessary for this sort of single-compiler class. # Would be nice to have a consistent interface with UnixCCompiler, # though, so it's worth thinking about. executables = {} # Private class data (need to distinguish C from C++ source for compiler) _c_extensions = ['.c'] _cpp_extensions = ['.cc', '.cpp', '.cxx'] _rc_extensions = ['.rc'] _mc_extensions = ['.mc'] # Needed for the filename generation methods provided by the # base class, CCompiler. src_extensions = (_c_extensions + _cpp_extensions + _rc_extensions + _mc_extensions) res_extension = '.res' obj_extension = '.obj' static_lib_extension = '.lib' shared_lib_extension = '.dll' static_lib_format = shared_lib_format = '%s%s' exe_extension = '.exe' def __init__(self, verbose=0, dry_run=0, force=0): CCompiler.__init__ (self, verbose, dry_run, force) self.__version = VERSION self.__root = r"Software\Microsoft\VisualStudio" # self.__macros = MACROS self.__paths = [] # target platform (.plat_name is consistent with 'bdist') self.plat_name = None self.__arch = None # deprecated name self.initialized = False def initialize(self, plat_name=None): # multi-init means we would need to check platform same each time... assert not self.initialized, "don't init multiple times" if plat_name is None: plat_name = get_platform() # sanity check for platforms to prevent obscure errors later. ok_plats = 'win32', 'win-amd64' if plat_name not in ok_plats: raise DistutilsPlatformError("--plat-name must be one of %s" % (ok_plats,)) if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"): # Assume that the SDK set up everything alright; don't try to be # smarter self.cc = "cl.exe" self.linker = "link.exe" self.lib = "lib.exe" self.rc = "rc.exe" self.mc = "mc.exe" else: # On x86, 'vcvars32.bat amd64' creates an env that doesn't work; # to cross compile, you use 'x86_amd64'. # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross # compile use 'x86' (ie, it runs the x86 compiler directly) if plat_name == get_platform() or plat_name == 'win32': # native build or cross-compile to win32 plat_spec = PLAT_TO_VCVARS[plat_name] else: # cross compile from win32 -> some 64bit plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \ PLAT_TO_VCVARS[plat_name] vc_env = query_vcvarsall(VERSION, plat_spec) self.__paths = vc_env['path'].split(os.pathsep) os.environ['lib'] = vc_env['lib'] os.environ['include'] = vc_env['include'] if len(self.__paths) == 0: raise DistutilsPlatformError("Python was built with %s, " "and extensions need to be built with the same " "version of the compiler, but it isn't installed." % self.__product) self.cc = self.find_exe("cl.exe") self.linker = self.find_exe("link.exe") self.lib = self.find_exe("lib.exe") self.rc = self.find_exe("rc.exe") # resource compiler self.mc = self.find_exe("mc.exe") # message compiler #self.set_path_env_var('lib') #self.set_path_env_var('include') # extend the MSVC path with the current path try: for p in os.environ['path'].split(';'): self.__paths.append(p) except KeyError: pass self.__paths = normalize_and_reduce_paths(self.__paths) os.environ['path'] = ";".join(self.__paths) self.preprocess_options = None if self.__arch == "x86": self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/Z7', '/D_DEBUG'] else: # Win64 self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GS-' , '/DNDEBUG'] self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GS-', '/Z7', '/D_DEBUG'] self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO'] if self.__version >= 7: self.ldflags_shared_debug = [ '/DLL', '/nologo', '/INCREMENTAL:no', '/DEBUG' ] self.ldflags_static = [ '/nologo'] self.initialized = True # -- Worker methods ------------------------------------------------ def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): # Copied from ccompiler.py, extended to return .res as 'object'-file # for .rc input file if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: (base, ext) = os.path.splitext (src_name) base = os.path.splitdrive(base)[1] # Chop off the drive base = base[os.path.isabs(base):] # If abs, chop off leading / if ext not in self.src_extensions: # Better to raise an exception instead of silently continuing # and later complain about sources and targets having # different lengths raise CompileError ("Don't know how to compile %s" % src_name) if strip_dir: base = os.path.basename (base) if ext in self._rc_extensions: obj_names.append (os.path.join (output_dir, base + self.res_extension)) elif ext in self._mc_extensions: obj_names.append (os.path.join (output_dir, base + self.res_extension)) else: obj_names.append (os.path.join (output_dir, base + self.obj_extension)) return obj_names def compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): if not self.initialized: self.initialize() compile_info = self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs) macros, objects, extra_postargs, pp_opts, build = compile_info compile_opts = extra_preargs or [] compile_opts.append ('/c') if debug: compile_opts.extend(self.compile_options_debug) else: compile_opts.extend(self.compile_options) for obj in objects: try: src, ext = build[obj] except KeyError: continue if debug: # pass the full pathname to MSVC in debug mode, # this allows the debugger to find the source file # without asking the user to browse for it src = os.path.abspath(src) if ext in self._c_extensions: input_opt = "/Tc" + src elif ext in self._cpp_extensions: input_opt = "/Tp" + src elif ext in self._rc_extensions: # compile .RC to .RES file input_opt = src output_opt = "/fo" + obj try: self.spawn([self.rc] + pp_opts + [output_opt] + [input_opt]) except DistutilsExecError as msg: raise CompileError(msg) continue elif ext in self._mc_extensions: # Compile .MC to .RC file to .RES file. # * '-h dir' specifies the directory for the # generated include file # * '-r dir' specifies the target directory of the # generated RC file and the binary message resource # it includes # # For now (since there are no options to change this), # we use the source-directory for the include file and # the build directory for the RC file and message # resources. This works at least for win32all. h_dir = os.path.dirname(src) rc_dir = os.path.dirname(obj) try: # first compile .MC to .RC and .H file self.spawn([self.mc] + ['-h', h_dir, '-r', rc_dir] + [src]) base, _ = os.path.splitext (os.path.basename (src)) rc_file = os.path.join (rc_dir, base + '.rc') # then compile .RC to .RES file self.spawn([self.rc] + ["/fo" + obj] + [rc_file]) except DistutilsExecError as msg: raise CompileError(msg) continue else: # how to handle this file? raise CompileError("Don't know how to compile %s to %s" % (src, obj)) output_opt = "/Fo" + obj try: self.spawn([self.cc] + compile_opts + pp_opts + [input_opt, output_opt] + extra_postargs) except DistutilsExecError as msg: raise CompileError(msg) return objects def create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None): if not self.initialized: self.initialize() (objects, output_dir) = self._fix_object_args(objects, output_dir) output_filename = self.library_filename(output_libname, output_dir=output_dir) if self._need_link(objects, output_filename): lib_args = objects + ['/OUT:' + output_filename] if debug: pass # XXX what goes here? try: self.spawn([self.lib] + lib_args) except DistutilsExecError as msg: raise LibError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): if not self.initialized: self.initialize() (objects, output_dir) = self._fix_object_args(objects, output_dir) fixed_args = self._fix_lib_args(libraries, library_dirs, runtime_library_dirs) (libraries, library_dirs, runtime_library_dirs) = fixed_args if runtime_library_dirs: self.warn ("I don't know what to do with 'runtime_library_dirs': " + str (runtime_library_dirs)) lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, libraries) if output_dir is not None: output_filename = os.path.join(output_dir, output_filename) if self._need_link(objects, output_filename): if target_desc == CCompiler.EXECUTABLE: if debug: ldflags = self.ldflags_shared_debug[1:] else: ldflags = self.ldflags_shared[1:] else: if debug: ldflags = self.ldflags_shared_debug else: ldflags = self.ldflags_shared export_opts = [] for sym in (export_symbols or []): export_opts.append("/EXPORT:" + sym) ld_args = (ldflags + lib_opts + export_opts + objects + ['/OUT:' + output_filename]) # The MSVC linker generates .lib and .exp files, which cannot be # suppressed by any linker switches. The .lib files may even be # needed! Make sure they are generated in the temporary build # directory. Since they have different names for debug and release # builds, they can go into the same directory. build_temp = os.path.dirname(objects[0]) if export_symbols is not None: (dll_name, dll_ext) = os.path.splitext( os.path.basename(output_filename)) implib_file = os.path.join( build_temp, self.library_filename(dll_name)) ld_args.append ('/IMPLIB:' + implib_file) self.manifest_setup_ldargs(output_filename, build_temp, ld_args) if extra_preargs: ld_args[:0] = extra_preargs if extra_postargs: ld_args.extend(extra_postargs) self.mkpath(os.path.dirname(output_filename)) try: self.spawn([self.linker] + ld_args) except DistutilsExecError as msg: raise LinkError(msg) # embed the manifest # XXX - this is somewhat fragile - if mt.exe fails, distutils # will still consider the DLL up-to-date, but it will not have a # manifest. Maybe we should link to a temp file? OTOH, that # implies a build environment error that shouldn't go undetected. mfinfo = self.manifest_get_embed_info(target_desc, ld_args) if mfinfo is not None: mffilename, mfid = mfinfo out_arg = '-outputresource:%s;%s' % (output_filename, mfid) try: self.spawn(['mt.exe', '-nologo', '-manifest', mffilename, out_arg]) except DistutilsExecError as msg: raise LinkError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) def manifest_setup_ldargs(self, output_filename, build_temp, ld_args): # If we need a manifest at all, an embedded manifest is recommended. # See MSDN article titled # "How to: Embed a Manifest Inside a C/C++ Application" # (currently at http://msdn2.microsoft.com/en-us/library/ms235591(VS.80).aspx) # Ask the linker to generate the manifest in the temp dir, so # we can check it, and possibly embed it, later. temp_manifest = os.path.join( build_temp, os.path.basename(output_filename) + ".manifest") ld_args.append('/MANIFESTFILE:' + temp_manifest) def manifest_get_embed_info(self, target_desc, ld_args): # If a manifest should be embedded, return a tuple of # (manifest_filename, resource_id). Returns None if no manifest # should be embedded. See http://bugs.python.org/issue7833 for why # we want to avoid any manifest for extension modules if we can) for arg in ld_args: if arg.startswith("/MANIFESTFILE:"): temp_manifest = arg.split(":", 1)[1] break else: # no /MANIFESTFILE so nothing to do. return None if target_desc == CCompiler.EXECUTABLE: # by default, executables always get the manifest with the # CRT referenced. mfid = 1 else: # Extension modules try and avoid any manifest if possible. mfid = 2 temp_manifest = self._remove_visual_c_ref(temp_manifest) if temp_manifest is None: return None return temp_manifest, mfid def _remove_visual_c_ref(self, manifest_file): try: # Remove references to the Visual C runtime, so they will # fall through to the Visual C dependency of Python.exe. # This way, when installed for a restricted user (e.g. # runtimes are not in WinSxS folder, but in Python's own # folder), the runtimes do not need to be in every folder # with .pyd's. # Returns either the filename of the modified manifest or # None if no manifest should be embedded. manifest_f = open(manifest_file) try: manifest_buf = manifest_f.read() finally: manifest_f.close() pattern = re.compile( r"""|)""", re.DOTALL) manifest_buf = re.sub(pattern, "", manifest_buf) pattern = r"\s*" manifest_buf = re.sub(pattern, "", manifest_buf) # Now see if any other assemblies are referenced - if not, we # don't want a manifest embedded. pattern = re.compile( r"""|)""", re.DOTALL) if re.search(pattern, manifest_buf) is None: return None manifest_f = open(manifest_file, 'w') try: manifest_f.write(manifest_buf) return manifest_file finally: manifest_f.close() except OSError: pass # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function, in # ccompiler.py. def library_dir_option(self, dir): return "/LIBPATH:" + dir def runtime_library_dir_option(self, dir): raise DistutilsPlatformError( "don't know how to set runtime library search path for MSVC++") def library_option(self, lib): return self.library_filename(lib) def find_library_file(self, dirs, lib, debug=0): # Prefer a debugging library if found (and requested), but deal # with it if we don't have one. if debug: try_names = [lib + "_d", lib] else: try_names = [lib] for dir in dirs: for name in try_names: libfile = os.path.join(dir, self.library_filename (name)) if os.path.exists(libfile): return libfile else: # Oops, didn't find it in *any* of 'dirs' return None # Helper methods for using the MSVC registry settings def find_exe(self, exe): """Return path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. """ for p in self.__paths: fn = os.path.join(os.path.abspath(p), exe) if os.path.isfile(fn): return fn # didn't find it; try existing path for p in os.environ['Path'].split(';'): fn = os.path.join(os.path.abspath(p),exe) if os.path.isfile(fn): return fn return exe PKD]2PII ccompiler.pynu["""distutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.""" import sys, os, re from distutils.errors import * from distutils.spawn import spawn from distutils.file_util import move_file from distutils.dir_util import mkpath from distutils.dep_util import newer_pairwise, newer_group from distutils.util import split_quoted, execute from distutils import log class CCompiler: """Abstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. """ # 'compiler_type' is a class attribute that identifies this class. It # keeps code that wants to know what kind of compiler it's dealing with # from having to import all possible compiler classes just to do an # 'isinstance'. In concrete CCompiler subclasses, 'compiler_type' # should really, really be one of the keys of the 'compiler_class' # dictionary (see below -- used by the 'new_compiler()' factory # function) -- authors of new compiler interface classes are # responsible for updating 'compiler_class'! compiler_type = None # XXX things not handled by this compiler abstraction model: # * client can't provide additional options for a compiler, # e.g. warning, optimization, debugging flags. Perhaps this # should be the domain of concrete compiler abstraction classes # (UnixCCompiler, MSVCCompiler, etc.) -- or perhaps the base # class should have methods for the common ones. # * can't completely override the include or library searchg # path, ie. no "cc -I -Idir1 -Idir2" or "cc -L -Ldir1 -Ldir2". # I'm not sure how widely supported this is even by Unix # compilers, much less on other platforms. And I'm even less # sure how useful it is; maybe for cross-compiling, but # support for that is a ways off. (And anyways, cross # compilers probably have a dedicated binary with the # right paths compiled in. I hope.) # * can't do really freaky things with the library list/library # dirs, e.g. "-Ldir1 -lfoo -Ldir2 -lfoo" to link against # different versions of libfoo.a in different locations. I # think this is useless without the ability to null out the # library search path anyways. # Subclasses that rely on the standard filename generation methods # implemented below should override these; see the comment near # those methods ('object_filenames()' et. al.) for details: src_extensions = None # list of strings obj_extension = None # string static_lib_extension = None shared_lib_extension = None # string static_lib_format = None # format string shared_lib_format = None # prob. same as static_lib_format exe_extension = None # string # Default language settings. language_map is used to detect a source # file or Extension target language, checking source filenames. # language_order is used to detect the language precedence, when deciding # what language to use when mixing source types. For example, if some # extension has two files with ".c" extension, and one with ".cpp", it # is still linked as c++. language_map = {".c" : "c", ".cc" : "c++", ".cpp" : "c++", ".cxx" : "c++", ".m" : "objc", } language_order = ["c++", "objc", "c"] def __init__(self, verbose=0, dry_run=0, force=0): self.dry_run = dry_run self.force = force self.verbose = verbose # 'output_dir': a common output directory for object, library, # shared object, and shared library files self.output_dir = None # 'macros': a list of macro definitions (or undefinitions). A # macro definition is a 2-tuple (name, value), where the value is # either a string or None (no explicit value). A macro # undefinition is a 1-tuple (name,). self.macros = [] # 'include_dirs': a list of directories to search for include files self.include_dirs = [] # 'libraries': a list of libraries to include in any link # (library names, not filenames: eg. "foo" not "libfoo.a") self.libraries = [] # 'library_dirs': a list of directories to search for libraries self.library_dirs = [] # 'runtime_library_dirs': a list of directories to search for # shared libraries/objects at runtime self.runtime_library_dirs = [] # 'objects': a list of object files (or similar, such as explicitly # named library files) to include on any link self.objects = [] for key in self.executables.keys(): self.set_executable(key, self.executables[key]) def set_executables(self, **kwargs): """Define the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) """ # Note that some CCompiler implementation classes will define class # attributes 'cpp', 'cc', etc. with hard-coded executable names; # this is appropriate when a compiler class is for exactly one # compiler/OS combination (eg. MSVCCompiler). Other compiler # classes (UnixCCompiler, in particular) are driven by information # discovered at run-time, since there are many different ways to do # basically the same things with Unix C compilers. for key in kwargs: if key not in self.executables: raise ValueError("unknown executable '%s' for class %s" % (key, self.__class__.__name__)) self.set_executable(key, kwargs[key]) def set_executable(self, key, value): if isinstance(value, str): setattr(self, key, split_quoted(value)) else: setattr(self, key, value) def _find_macro(self, name): i = 0 for defn in self.macros: if defn[0] == name: return i i += 1 return None def _check_macro_definitions(self, definitions): """Ensures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. """ for defn in definitions: if not (isinstance(defn, tuple) and (len(defn) in (1, 2) and (isinstance (defn[1], str) or defn[1] is None)) and isinstance (defn[0], str)): raise TypeError(("invalid macro definition '%s': " % defn) + \ "must be tuple (string,), (string, string), or " + \ "(string, None)") # -- Bookkeeping methods ------------------------------------------- def define_macro(self, name, value=None): """Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) """ # Delete from the list of macro definitions/undefinitions if # already there (so that this one will take precedence). i = self._find_macro (name) if i is not None: del self.macros[i] self.macros.append((name, value)) def undefine_macro(self, name): """Undefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. """ # Delete from the list of macro definitions/undefinitions if # already there (so that this one will take precedence). i = self._find_macro (name) if i is not None: del self.macros[i] undefn = (name,) self.macros.append(undefn) def add_include_dir(self, dir): """Add 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. """ self.include_dirs.append(dir) def set_include_dirs(self, dirs): """Set the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. """ self.include_dirs = dirs[:] def add_library(self, libname): """Add 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. """ self.libraries.append(libname) def set_libraries(self, libnames): """Set the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. """ self.libraries = libnames[:] def add_library_dir(self, dir): """Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. """ self.library_dirs.append(dir) def set_library_dirs(self, dirs): """Set the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. """ self.library_dirs = dirs[:] def add_runtime_library_dir(self, dir): """Add 'dir' to the list of directories that will be searched for shared libraries at runtime. """ self.runtime_library_dirs.append(dir) def set_runtime_library_dirs(self, dirs): """Set the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. """ self.runtime_library_dirs = dirs[:] def add_link_object(self, object): """Add 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. """ self.objects.append(object) def set_link_objects(self, objects): """Set the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). """ self.objects = objects[:] # -- Private utility methods -------------------------------------- # (here for the convenience of subclasses) # Helper method to prep compiler in subclass compile() methods def _setup_compile(self, outdir, macros, incdirs, sources, depends, extra): """Process arguments and decide which source files to compile.""" if outdir is None: outdir = self.output_dir elif not isinstance(outdir, str): raise TypeError("'output_dir' must be a string or None") if macros is None: macros = self.macros elif isinstance(macros, list): macros = macros + (self.macros or []) else: raise TypeError("'macros' (if supplied) must be a list of tuples") if incdirs is None: incdirs = self.include_dirs elif isinstance(incdirs, (list, tuple)): incdirs = list(incdirs) + (self.include_dirs or []) else: raise TypeError( "'include_dirs' (if supplied) must be a list of strings") if extra is None: extra = [] # Get the list of expected output (object) files objects = self.object_filenames(sources, strip_dir=0, output_dir=outdir) assert len(objects) == len(sources) pp_opts = gen_preprocess_options(macros, incdirs) build = {} for i in range(len(sources)): src = sources[i] obj = objects[i] ext = os.path.splitext(src)[1] self.mkpath(os.path.dirname(obj)) build[obj] = (src, ext) return macros, objects, extra, pp_opts, build def _get_cc_args(self, pp_opts, debug, before): # works for unixccompiler, cygwinccompiler cc_args = pp_opts + ['-c'] if debug: cc_args[:0] = ['-g'] if before: cc_args[:0] = before return cc_args def _fix_compile_args(self, output_dir, macros, include_dirs): """Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. """ if output_dir is None: output_dir = self.output_dir elif not isinstance(output_dir, str): raise TypeError("'output_dir' must be a string or None") if macros is None: macros = self.macros elif isinstance(macros, list): macros = macros + (self.macros or []) else: raise TypeError("'macros' (if supplied) must be a list of tuples") if include_dirs is None: include_dirs = self.include_dirs elif isinstance(include_dirs, (list, tuple)): include_dirs = list(include_dirs) + (self.include_dirs or []) else: raise TypeError( "'include_dirs' (if supplied) must be a list of strings") return output_dir, macros, include_dirs def _prep_compile(self, sources, output_dir, depends=None): """Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. """ # Get the list of expected output (object) files objects = self.object_filenames(sources, output_dir=output_dir) assert len(objects) == len(sources) # Return an empty dict for the "which source files can be skipped" # return value to preserve API compatibility. return objects, {} def _fix_object_args(self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. """ if not isinstance(objects, (list, tuple)): raise TypeError("'objects' must be a list or tuple of strings") objects = list(objects) if output_dir is None: output_dir = self.output_dir elif not isinstance(output_dir, str): raise TypeError("'output_dir' must be a string or None") return (objects, output_dir) def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs): """Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. """ if libraries is None: libraries = self.libraries elif isinstance(libraries, (list, tuple)): libraries = list (libraries) + (self.libraries or []) else: raise TypeError( "'libraries' (if supplied) must be a list of strings") if library_dirs is None: library_dirs = self.library_dirs elif isinstance(library_dirs, (list, tuple)): library_dirs = list (library_dirs) + (self.library_dirs or []) else: raise TypeError( "'library_dirs' (if supplied) must be a list of strings") if runtime_library_dirs is None: runtime_library_dirs = self.runtime_library_dirs elif isinstance(runtime_library_dirs, (list, tuple)): runtime_library_dirs = (list(runtime_library_dirs) + (self.runtime_library_dirs or [])) else: raise TypeError("'runtime_library_dirs' (if supplied) " "must be a list of strings") return (libraries, library_dirs, runtime_library_dirs) def _need_link(self, objects, output_file): """Return true if we need to relink the files listed in 'objects' to recreate 'output_file'. """ if self.force: return True else: if self.dry_run: newer = newer_group (objects, output_file, missing='newer') else: newer = newer_group (objects, output_file) return newer def detect_language(self, sources): """Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. """ if not isinstance(sources, list): sources = [sources] lang = None index = len(self.language_order) for source in sources: base, ext = os.path.splitext(source) extlang = self.language_map.get(ext) try: extindex = self.language_order.index(extlang) if extindex < index: lang = extlang index = extindex except ValueError: pass return lang # -- Worker methods ------------------------------------------------ # (must be implemented by subclasses) def preprocess(self, source, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None): """Preprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. """ pass def compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): """Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. """ # A concrete compiler class can either override this method # entirely or implement _compile(). macros, objects, extra_postargs, pp_opts, build = \ self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs) cc_args = self._get_cc_args(pp_opts, debug, extra_preargs) for obj in objects: try: src, ext = build[obj] except KeyError: continue self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) # Return *all* object filenames, not just the ones we just built. return objects def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): """Compile 'src' to product 'obj'.""" # A concrete compiler class that does not override compile() # should implement _compile(). pass def create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None): """Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. """ pass # values for target_desc parameter in link() SHARED_OBJECT = "shared_object" SHARED_LIBRARY = "shared_library" EXECUTABLE = "executable" def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): """Link a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. """ raise NotImplementedError # Old 'link_*()' methods, rewritten to use the new 'link()' method. def link_shared_lib(self, objects, output_libname, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): self.link(CCompiler.SHARED_LIBRARY, objects, self.library_filename(output_libname, lib_type='shared'), output_dir, libraries, library_dirs, runtime_library_dirs, export_symbols, debug, extra_preargs, extra_postargs, build_temp, target_lang) def link_shared_object(self, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): self.link(CCompiler.SHARED_OBJECT, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, export_symbols, debug, extra_preargs, extra_postargs, build_temp, target_lang) def link_executable(self, objects, output_progname, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, target_lang=None): self.link(CCompiler.EXECUTABLE, objects, self.executable_filename(output_progname), output_dir, libraries, library_dirs, runtime_library_dirs, None, debug, extra_preargs, extra_postargs, None, target_lang) # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function; there is # no appropriate default implementation so subclasses should # implement all of these. def library_dir_option(self, dir): """Return the compiler option to add 'dir' to the list of directories searched for libraries. """ raise NotImplementedError def runtime_library_dir_option(self, dir): """Return the compiler option to add 'dir' to the list of directories searched for runtime libraries. """ raise NotImplementedError def library_option(self, lib): """Return the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. """ raise NotImplementedError def has_function(self, funcname, includes=None, include_dirs=None, libraries=None, library_dirs=None): """Return a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. """ # this can't be included at module scope because it tries to # import math which might not be available at that point - maybe # the necessary logic should just be inlined? import tempfile if includes is None: includes = [] if include_dirs is None: include_dirs = [] if libraries is None: libraries = [] if library_dirs is None: library_dirs = [] fd, fname = tempfile.mkstemp(".c", funcname, text=True) f = os.fdopen(fd, "w") try: for incl in includes: f.write("""#include "%s"\n""" % incl) f.write("""\ int main (int argc, char **argv) { %s(); return 0; } """ % funcname) finally: f.close() try: objects = self.compile([fname], include_dirs=include_dirs) except CompileError: return False try: self.link_executable(objects, "a.out", libraries=libraries, library_dirs=library_dirs) except (LinkError, TypeError): return False return True def find_library_file (self, dirs, lib, debug=0): """Search the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. """ raise NotImplementedError # -- Filename generation methods ----------------------------------- # The default implementation of the filename generating methods are # prejudiced towards the Unix/DOS/Windows view of the world: # * object files are named by replacing the source file extension # (eg. .c/.cpp -> .o/.obj) # * library files (shared or static) are named by plugging the # library name and extension into a format string, eg. # "lib%s.%s" % (lib_name, ".a") for Unix static libraries # * executables are named by appending an extension (possibly # empty) to the program name: eg. progname + ".exe" for # Windows # # To reduce redundant code, these methods expect to find # several attributes in the current object (presumably defined # as class attributes): # * src_extensions - # list of C/C++ source file extensions, eg. ['.c', '.cpp'] # * obj_extension - # object file extension, eg. '.o' or '.obj' # * static_lib_extension - # extension for static library files, eg. '.a' or '.lib' # * shared_lib_extension - # extension for shared library/object files, eg. '.so', '.dll' # * static_lib_format - # format string for generating static library filenames, # eg. 'lib%s.%s' or '%s.%s' # * shared_lib_format # format string for generating shared library filenames # (probably same as static_lib_format, since the extension # is one of the intended parameters to the format string) # * exe_extension - # extension for executable files, eg. '' or '.exe' def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: base, ext = os.path.splitext(src_name) base = os.path.splitdrive(base)[1] # Chop off the drive base = base[os.path.isabs(base):] # If abs, chop off leading / if ext not in self.src_extensions: raise UnknownFileError( "unknown file type '%s' (from '%s')" % (ext, src_name)) if strip_dir: base = os.path.basename(base) obj_names.append(os.path.join(output_dir, base + self.obj_extension)) return obj_names def shared_object_filename(self, basename, strip_dir=0, output_dir=''): assert output_dir is not None if strip_dir: basename = os.path.basename(basename) return os.path.join(output_dir, basename + self.shared_lib_extension) def executable_filename(self, basename, strip_dir=0, output_dir=''): assert output_dir is not None if strip_dir: basename = os.path.basename(basename) return os.path.join(output_dir, basename + (self.exe_extension or '')) def library_filename(self, libname, lib_type='static', # or 'shared' strip_dir=0, output_dir=''): assert output_dir is not None if lib_type not in ("static", "shared", "dylib", "xcode_stub"): raise ValueError( "'lib_type' must be \"static\", \"shared\", \"dylib\", or \"xcode_stub\"") fmt = getattr(self, lib_type + "_lib_format") ext = getattr(self, lib_type + "_lib_extension") dir, base = os.path.split(libname) filename = fmt % (base, ext) if strip_dir: dir = '' return os.path.join(output_dir, dir, filename) # -- Utility methods ----------------------------------------------- def announce(self, msg, level=1): log.debug(msg) def debug_print(self, msg): from distutils.debug import DEBUG if DEBUG: print(msg) def warn(self, msg): sys.stderr.write("warning: %s\n" % msg) def execute(self, func, args, msg=None, level=1): execute(func, args, msg, self.dry_run) def spawn(self, cmd): spawn(cmd, dry_run=self.dry_run) def move_file(self, src, dst): return move_file(src, dst, dry_run=self.dry_run) def mkpath (self, name, mode=0o777): mkpath(name, mode, dry_run=self.dry_run) # Map a sys.platform/os.name ('posix', 'nt') to the default compiler # type for that platform. Keys are interpreted as re match # patterns. Order is important; platform mappings are preferred over # OS names. _default_compilers = ( # Platform string mappings # on a cygwin built python we can use gcc like an ordinary UNIXish # compiler ('cygwin.*', 'unix'), # OS name mappings ('posix', 'unix'), ('nt', 'msvc'), ) def get_default_compiler(osname=None, platform=None): """Determine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. """ if osname is None: osname = os.name if platform is None: platform = sys.platform for pattern, compiler in _default_compilers: if re.match(pattern, platform) is not None or \ re.match(pattern, osname) is not None: return compiler # Default to Unix compiler return 'unix' # Map compiler types to (module_name, class_name) pairs -- ie. where to # find the code that implements an interface to this compiler. (The module # is assumed to be in the 'distutils' package.) compiler_class = { 'unix': ('unixccompiler', 'UnixCCompiler', "standard UNIX-style compiler"), 'msvc': ('_msvccompiler', 'MSVCCompiler', "Microsoft Visual C++"), 'cygwin': ('cygwinccompiler', 'CygwinCCompiler', "Cygwin port of GNU C Compiler for Win32"), 'mingw32': ('cygwinccompiler', 'Mingw32CCompiler', "Mingw32 port of GNU C Compiler for Win32"), 'bcpp': ('bcppcompiler', 'BCPPCompiler', "Borland C++ Compiler"), } def show_compilers(): """Print list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). """ # XXX this "knows" that the compiler option it's describing is # "--compiler", which just happens to be the case for the three # commands that use it. from distutils.fancy_getopt import FancyGetopt compilers = [] for compiler in compiler_class.keys(): compilers.append(("compiler="+compiler, None, compiler_class[compiler][2])) compilers.sort() pretty_printer = FancyGetopt(compilers) pretty_printer.print_help("List of available compilers:") def new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0): """Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. """ if plat is None: plat = os.name try: if compiler is None: compiler = get_default_compiler(plat) (module_name, class_name, long_description) = compiler_class[compiler] except KeyError: msg = "don't know how to compile C/C++ code on platform '%s'" % plat if compiler is not None: msg = msg + " with '%s' compiler" % compiler raise DistutilsPlatformError(msg) try: module_name = "distutils." + module_name __import__ (module_name) module = sys.modules[module_name] klass = vars(module)[class_name] except ImportError: raise DistutilsModuleError( "can't compile C/C++ code: unable to load module '%s'" % \ module_name) except KeyError: raise DistutilsModuleError( "can't compile C/C++ code: unable to find class '%s' " "in module '%s'" % (class_name, module_name)) # XXX The None is necessary to preserve backwards compatibility # with classes that expect verbose to be the first positional # argument. return klass(None, dry_run, force) def gen_preprocess_options(macros, include_dirs): """Generate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. """ # XXX it would be nice (mainly aesthetic, and so we don't generate # stupid-looking command lines) to go over 'macros' and eliminate # redundant definitions/undefinitions (ie. ensure that only the # latest mention of a particular macro winds up on the command # line). I don't think it's essential, though, since most (all?) # Unix C compilers only pay attention to the latest -D or -U # mention of a macro on their command line. Similar situation for # 'include_dirs'. I'm punting on both for now. Anyways, weeding out # redundancies like this should probably be the province of # CCompiler, since the data structures used are inherited from it # and therefore common to all CCompiler classes. pp_opts = [] for macro in macros: if not (isinstance(macro, tuple) and 1 <= len(macro) <= 2): raise TypeError( "bad macro definition '%s': " "each element of 'macros' list must be a 1- or 2-tuple" % macro) if len(macro) == 1: # undefine this macro pp_opts.append("-U%s" % macro[0]) elif len(macro) == 2: if macro[1] is None: # define with no explicit value pp_opts.append("-D%s" % macro[0]) else: # XXX *don't* need to be clever about quoting the # macro value here, because we're going to avoid the # shell at all costs when we spawn the command! pp_opts.append("-D%s=%s" % macro) for dir in include_dirs: pp_opts.append("-I%s" % dir) return pp_opts def gen_lib_options (compiler, library_dirs, runtime_library_dirs, libraries): """Generate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). """ lib_opts = [] for dir in library_dirs: lib_opts.append(compiler.library_dir_option(dir)) for dir in runtime_library_dirs: opt = compiler.runtime_library_dir_option(dir) if isinstance(opt, list): lib_opts = lib_opts + opt else: lib_opts.append(opt) # XXX it's important that we *not* remove redundant library mentions! # sometimes you really do have to say "-lfoo -lbar -lfoo" in order to # resolve all symbols. I just hope we never have to say "-lfoo obj.o # -lbar" to get things to work -- that's certainly a possibility, but a # pretty nasty way to arrange your C code. for lib in libraries: (lib_dir, lib_name) = os.path.split(lib) if lib_dir: lib_file = compiler.find_library_file([lib_dir], lib_name) if lib_file: lib_opts.append(lib_file) else: compiler.warn("no library file corresponding to " "'%s' found (skipping)" % lib) else: lib_opts.append(compiler.library_option (lib)) return lib_opts PKD]3bb dir_util.pynu["""distutils.dir_util Utility functions for manipulating directories and directory trees.""" import os import errno from distutils.errors import DistutilsFileError, DistutilsInternalError from distutils import log # cache for by mkpath() -- in addition to cheapening redundant calls, # eliminates redundant "creating /foo/bar/baz" messages in dry-run mode _path_created = {} # I don't use os.makedirs because a) it's new to Python 1.5.2, and # b) it blows up if the directory already exists (I want to silently # succeed in that case). def mkpath(name, mode=0o777, verbose=1, dry_run=0): """Create a directory and any missing ancestor directories. If the directory already exists (or if 'name' is the empty string, which means the current directory, which of course exists), then do nothing. Raise DistutilsFileError if unable to create some directory along the way (eg. some sub-path exists, but is a file rather than a directory). If 'verbose' is true, print a one-line summary of each mkdir to stdout. Return the list of directories actually created. """ global _path_created # Detect a common bug -- name is None if not isinstance(name, str): raise DistutilsInternalError( "mkpath: 'name' must be a string (got %r)" % (name,)) # XXX what's the better way to handle verbosity? print as we create # each directory in the path (the current behaviour), or only announce # the creation of the whole path? (quite easy to do the latter since # we're not using a recursive algorithm) name = os.path.normpath(name) created_dirs = [] if os.path.isdir(name) or name == '': return created_dirs if _path_created.get(os.path.abspath(name)): return created_dirs (head, tail) = os.path.split(name) tails = [tail] # stack of lone dirs to create while head and tail and not os.path.isdir(head): (head, tail) = os.path.split(head) tails.insert(0, tail) # push next higher dir onto stack # now 'head' contains the deepest directory that already exists # (that is, the child of 'head' in 'name' is the highest directory # that does *not* exist) for d in tails: #print "head = %s, d = %s: " % (head, d), head = os.path.join(head, d) abs_head = os.path.abspath(head) if _path_created.get(abs_head): continue if verbose >= 1: log.info("creating %s", head) if not dry_run: try: os.mkdir(head, mode) except OSError as exc: if not (exc.errno == errno.EEXIST and os.path.isdir(head)): raise DistutilsFileError( "could not create '%s': %s" % (head, exc.args[-1])) created_dirs.append(head) _path_created[abs_head] = 1 return created_dirs def create_tree(base_dir, files, mode=0o777, verbose=1, dry_run=0): """Create all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. """ # First get the list of directories to create need_dir = set() for file in files: need_dir.add(os.path.join(base_dir, os.path.dirname(file))) # Now create them for dir in sorted(need_dir): mkpath(dir, mode, verbose=verbose, dry_run=dry_run) def copy_tree(src, dst, preserve_mode=1, preserve_times=1, preserve_symlinks=0, update=0, verbose=1, dry_run=0): """Copy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. """ from distutils.file_util import copy_file if not dry_run and not os.path.isdir(src): raise DistutilsFileError( "cannot copy tree '%s': not a directory" % src) try: names = os.listdir(src) except OSError as e: if dry_run: names = [] else: raise DistutilsFileError( "error listing files in '%s': %s" % (src, e.strerror)) if not dry_run: mkpath(dst, verbose=verbose) outputs = [] for n in names: src_name = os.path.join(src, n) dst_name = os.path.join(dst, n) if n.startswith('.nfs'): # skip NFS rename files continue if preserve_symlinks and os.path.islink(src_name): link_dest = os.readlink(src_name) if verbose >= 1: log.info("linking %s -> %s", dst_name, link_dest) if not dry_run: os.symlink(link_dest, dst_name) outputs.append(dst_name) elif os.path.isdir(src_name): outputs.extend( copy_tree(src_name, dst_name, preserve_mode, preserve_times, preserve_symlinks, update, verbose=verbose, dry_run=dry_run)) else: copy_file(src_name, dst_name, preserve_mode, preserve_times, update, verbose=verbose, dry_run=dry_run) outputs.append(dst_name) return outputs def _build_cmdtuple(path, cmdtuples): """Helper for remove_tree().""" for f in os.listdir(path): real_f = os.path.join(path,f) if os.path.isdir(real_f) and not os.path.islink(real_f): _build_cmdtuple(real_f, cmdtuples) else: cmdtuples.append((os.remove, real_f)) cmdtuples.append((os.rmdir, path)) def remove_tree(directory, verbose=1, dry_run=0): """Recursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). """ global _path_created if verbose >= 1: log.info("removing '%s' (and everything under it)", directory) if dry_run: return cmdtuples = [] _build_cmdtuple(directory, cmdtuples) for cmd in cmdtuples: try: cmd[0](cmd[1]) # remove dir from cache if it's already there abspath = os.path.abspath(cmd[1]) if abspath in _path_created: del _path_created[abspath] except OSError as exc: log.warn("error removing %s: %s", directory, exc) def ensure_relative(path): """Take the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). """ drive, path = os.path.splitdrive(path) if path[0:1] == os.sep: path = drive + path[1:] return path PKD]c+9090 version.pynu[# # distutils/version.py # # Implements multiple version numbering conventions for the # Python Module Distribution Utilities. # # $Id$ # """Provides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) """ import re class Version: """Abstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. """ def __init__ (self, vstring=None): if vstring: self.parse(vstring) def __repr__ (self): return "%s ('%s')" % (self.__class__.__name__, str(self)) def __eq__(self, other): c = self._cmp(other) if c is NotImplemented: return c return c == 0 def __lt__(self, other): c = self._cmp(other) if c is NotImplemented: return c return c < 0 def __le__(self, other): c = self._cmp(other) if c is NotImplemented: return c return c <= 0 def __gt__(self, other): c = self._cmp(other) if c is NotImplemented: return c return c > 0 def __ge__(self, other): c = self._cmp(other) if c is NotImplemented: return c return c >= 0 # Interface for version-number classes -- must be implemented # by the following classes (the concrete ones -- Version should # be treated as an abstract class). # __init__ (string) - create and take same action as 'parse' # (string parameter is optional) # parse (string) - convert a string representation to whatever # internal representation is appropriate for # this style of version numbering # __str__ (self) - convert back to a string; should be very similar # (if not identical to) the string supplied to parse # __repr__ (self) - generate Python code to recreate # the instance # _cmp (self, other) - compare two version numbers ('other' may # be an unparsed version string, or another # instance of your version class) class StrictVersion (Version): """Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. """ version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$', re.VERBOSE | re.ASCII) def parse (self, vstring): match = self.version_re.match(vstring) if not match: raise ValueError("invalid version number '%s'" % vstring) (major, minor, patch, prerelease, prerelease_num) = \ match.group(1, 2, 4, 5, 6) if patch: self.version = tuple(map(int, [major, minor, patch])) else: self.version = tuple(map(int, [major, minor])) + (0,) if prerelease: self.prerelease = (prerelease[0], int(prerelease_num)) else: self.prerelease = None def __str__ (self): if self.version[2] == 0: vstring = '.'.join(map(str, self.version[0:2])) else: vstring = '.'.join(map(str, self.version)) if self.prerelease: vstring = vstring + self.prerelease[0] + str(self.prerelease[1]) return vstring def _cmp (self, other): if isinstance(other, str): other = StrictVersion(other) if self.version != other.version: # numeric versions don't match # prerelease stuff doesn't matter if self.version < other.version: return -1 else: return 1 # have to compare prerelease # case 1: neither has prerelease; they're equal # case 2: self has prerelease, other doesn't; other is greater # case 3: self doesn't have prerelease, other does: self is greater # case 4: both have prerelease: must compare them! if (not self.prerelease and not other.prerelease): return 0 elif (self.prerelease and not other.prerelease): return -1 elif (not self.prerelease and other.prerelease): return 1 elif (self.prerelease and other.prerelease): if self.prerelease == other.prerelease: return 0 elif self.prerelease < other.prerelease: return -1 else: return 1 else: assert False, "never get here" # end class StrictVersion # The rules according to Greg Stein: # 1) a version number has 1 or more numbers separated by a period or by # sequences of letters. If only periods, then these are compared # left-to-right to determine an ordering. # 2) sequences of letters are part of the tuple for comparison and are # compared lexicographically # 3) recognize the numeric components may have leading zeroes # # The LooseVersion class below implements these rules: a version number # string is split up into a tuple of integer and string components, and # comparison is a simple tuple comparison. This means that version # numbers behave in a predictable and obvious way, but a way that might # not necessarily be how people *want* version numbers to behave. There # wouldn't be a problem if people could stick to purely numeric version # numbers: just split on period and compare the numbers as tuples. # However, people insist on putting letters into their version numbers; # the most common purpose seems to be: # - indicating a "pre-release" version # ('alpha', 'beta', 'a', 'b', 'pre', 'p') # - indicating a post-release patch ('p', 'pl', 'patch') # but of course this can't cover all version number schemes, and there's # no way to know what a programmer means without asking him. # # The problem is what to do with letters (and other non-numeric # characters) in a version number. The current implementation does the # obvious and predictable thing: keep them as strings and compare # lexically within a tuple comparison. This has the desired effect if # an appended letter sequence implies something "post-release": # eg. "0.99" < "0.99pl14" < "1.0", and "5.001" < "5.001m" < "5.002". # # However, if letters in a version number imply a pre-release version, # the "obvious" thing isn't correct. Eg. you would expect that # "1.5.1" < "1.5.2a2" < "1.5.2", but under the tuple/lexical comparison # implemented here, this just isn't so. # # Two possible solutions come to mind. The first is to tie the # comparison algorithm to a particular set of semantic rules, as has # been done in the StrictVersion class above. This works great as long # as everyone can go along with bondage and discipline. Hopefully a # (large) subset of Python module programmers will agree that the # particular flavour of bondage and discipline provided by StrictVersion # provides enough benefit to be worth using, and will submit their # version numbering scheme to its domination. The free-thinking # anarchists in the lot will never give in, though, and something needs # to be done to accommodate them. # # Perhaps a "moderately strict" version class could be implemented that # lets almost anything slide (syntactically), and makes some heuristic # assumptions about non-digits in version number strings. This could # sink into special-case-hell, though; if I was as talented and # idiosyncratic as Larry Wall, I'd go ahead and implement a class that # somehow knows that "1.2.1" < "1.2.2a2" < "1.2.2" < "1.2.2pl3", and is # just as happy dealing with things like "2g6" and "1.13++". I don't # think I'm smart enough to do it right though. # # In any case, I've coded the test suite for this module (see # ../test/test_version.py) specifically to fail on things like comparing # "1.2a2" and "1.2". That's not because the *code* is doing anything # wrong, it's because the simple, obvious design doesn't match my # complicated, hairy expectations for real-world version numbers. It # would be a snap to fix the test suite to say, "Yep, LooseVersion does # the Right Thing" (ie. the code matches the conception). But I'd rather # have a conception that matches common notions about version numbers. class LooseVersion (Version): """Version numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). """ component_re = re.compile(r'(\d+ | [a-z]+ | \.)', re.VERBOSE) def __init__ (self, vstring=None): if vstring: self.parse(vstring) def parse (self, vstring): # I've given up on thinking I can reconstruct the version string # from the parsed tuple -- so I just store the string here for # use by __str__ self.vstring = vstring components = [x for x in self.component_re.split(vstring) if x and x != '.'] for i, obj in enumerate(components): try: components[i] = int(obj) except ValueError: pass self.version = components def __str__ (self): return self.vstring def __repr__ (self): return "LooseVersion ('%s')" % str(self) def _cmp (self, other): if isinstance(other, str): other = LooseVersion(other) if self.version == other.version: return 0 if self.version < other.version: return -1 if self.version > other.version: return 1 # end class LooseVersion PKD] file_util.pynu["""distutils.file_util Utility functions for operating on single files. """ import os from distutils.errors import DistutilsFileError from distutils import log # for generating verbose output in 'copy_file()' _copy_action = { None: 'copying', 'hard': 'hard linking', 'sym': 'symbolically linking' } def _copy_file_contents(src, dst, buffer_size=16*1024): """Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. """ # Stolen from shutil module in the standard library, but with # custom error-handling added. fsrc = None fdst = None try: try: fsrc = open(src, 'rb') except OSError as e: raise DistutilsFileError("could not open '%s': %s" % (src, e.strerror)) if os.path.exists(dst): try: os.unlink(dst) except OSError as e: raise DistutilsFileError( "could not delete '%s': %s" % (dst, e.strerror)) try: fdst = open(dst, 'wb') except OSError as e: raise DistutilsFileError( "could not create '%s': %s" % (dst, e.strerror)) while True: try: buf = fsrc.read(buffer_size) except OSError as e: raise DistutilsFileError( "could not read from '%s': %s" % (src, e.strerror)) if not buf: break try: fdst.write(buf) except OSError as e: raise DistutilsFileError( "could not write to '%s': %s" % (dst, e.strerror)) finally: if fdst: fdst.close() if fsrc: fsrc.close() def copy_file(src, dst, preserve_mode=1, preserve_times=1, update=0, link=None, verbose=1, dry_run=0): """Copy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is copied there with the same name; otherwise, it must be a filename. (If the file exists, it will be ruthlessly clobbered.) If 'preserve_mode' is true (the default), the file's mode (type and permission bits, or whatever is analogous on the current platform) is copied. If 'preserve_times' is true (the default), the last-modified and last-access times are copied as well. If 'update' is true, 'src' will only be copied if 'dst' does not exist, or if 'dst' does exist but is older than 'src'. 'link' allows you to make hard links (os.link) or symbolic links (os.symlink) instead of copying: set it to "hard" or "sym"; if it is None (the default), files are copied. Don't set 'link' on systems that don't support it: 'copy_file()' doesn't check if hard or symbolic linking is available. If hardlink fails, falls back to _copy_file_contents(). Under Mac OS, uses the native file copy function in macostools; on other systems, uses '_copy_file_contents()' to copy file contents. Return a tuple (dest_name, copied): 'dest_name' is the actual name of the output file, and 'copied' is true if the file was copied (or would have been copied, if 'dry_run' true). """ # XXX if the destination file already exists, we clobber it if # copying, but blow up if linking. Hmmm. And I don't know what # macostools.copyfile() does. Should definitely be consistent, and # should probably blow up if destination exists and we would be # changing it (ie. it's not already a hard/soft link to src OR # (not update) and (src newer than dst). from distutils.dep_util import newer from stat import ST_ATIME, ST_MTIME, ST_MODE, S_IMODE if not os.path.isfile(src): raise DistutilsFileError( "can't copy '%s': doesn't exist or not a regular file" % src) if os.path.isdir(dst): dir = dst dst = os.path.join(dst, os.path.basename(src)) else: dir = os.path.dirname(dst) if update and not newer(src, dst): if verbose >= 1: log.debug("not copying %s (output up-to-date)", src) return (dst, 0) try: action = _copy_action[link] except KeyError: raise ValueError("invalid value '%s' for 'link' argument" % link) if verbose >= 1: if os.path.basename(dst) == os.path.basename(src): log.info("%s %s -> %s", action, src, dir) else: log.info("%s %s -> %s", action, src, dst) if dry_run: return (dst, 1) # If linking (hard or symbolic), use the appropriate system call # (Unix only, of course, but that's the caller's responsibility) elif link == 'hard': if not (os.path.exists(dst) and os.path.samefile(src, dst)): try: os.link(src, dst) return (dst, 1) except OSError: # If hard linking fails, fall back on copying file # (some special filesystems don't support hard linking # even under Unix, see issue #8876). pass elif link == 'sym': if not (os.path.exists(dst) and os.path.samefile(src, dst)): os.symlink(src, dst) return (dst, 1) # Otherwise (non-Mac, not linking), copy the file contents and # (optionally) copy the times and mode. _copy_file_contents(src, dst) if preserve_mode or preserve_times: st = os.stat(src) # According to David Ascher , utime() should be done # before chmod() (at least under NT). if preserve_times: os.utime(dst, (st[ST_ATIME], st[ST_MTIME])) if preserve_mode: os.chmod(dst, S_IMODE(st[ST_MODE])) return (dst, 1) # XXX I suspect this is Unix-specific -- need porting help! def move_file (src, dst, verbose=1, dry_run=0): """Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? """ from os.path import exists, isfile, isdir, basename, dirname import errno if verbose >= 1: log.info("moving %s -> %s", src, dst) if dry_run: return dst if not isfile(src): raise DistutilsFileError("can't move '%s': not a regular file" % src) if isdir(dst): dst = os.path.join(dst, basename(src)) elif exists(dst): raise DistutilsFileError( "can't move '%s': destination '%s' already exists" % (src, dst)) if not isdir(dirname(dst)): raise DistutilsFileError( "can't move '%s': destination '%s' not a valid path" % (src, dst)) copy_it = False try: os.rename(src, dst) except OSError as e: (num, msg) = e.args if num == errno.EXDEV: copy_it = True else: raise DistutilsFileError( "couldn't move '%s' to '%s': %s" % (src, dst, msg)) if copy_it: copy_file(src, dst, verbose=verbose) try: os.unlink(src) except OSError as e: (num, msg) = e.args try: os.unlink(dst) except OSError: pass raise DistutilsFileError( "couldn't move '%s' to '%s' by copy/delete: " "delete '%s' failed: %s" % (src, dst, src, msg)) return dst def write_file (filename, contents): """Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. """ f = open(filename, "w") try: for line in contents: f.write(line + "\n") finally: f.close() PKD]IS^""core.pynu["""distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. """ import os import sys from distutils.debug import DEBUG from distutils.errors import * # Mainly import these so setup scripts can "from distutils.core import" them. from distutils.dist import Distribution from distutils.cmd import Command from distutils.config import PyPIRCCommand from distutils.extension import Extension # This is a barebones help message generated displayed when the user # runs the setup script with no arguments at all. More useful help # is generated with various --help options: global help, list commands, # and per-command help. USAGE = """\ usage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help """ def gen_usage (script_name): script = os.path.basename(script_name) return USAGE % vars() # Some mild magic to control the behaviour of 'setup()' from 'run_setup()'. _setup_stop_after = None _setup_distribution = None # Legal keyword arguments for the setup() function setup_keywords = ('distclass', 'script_name', 'script_args', 'options', 'name', 'version', 'author', 'author_email', 'maintainer', 'maintainer_email', 'url', 'license', 'description', 'long_description', 'keywords', 'platforms', 'classifiers', 'download_url', 'requires', 'provides', 'obsoletes', ) # Legal keyword arguments for the Extension constructor extension_keywords = ('name', 'sources', 'include_dirs', 'define_macros', 'undef_macros', 'library_dirs', 'libraries', 'runtime_library_dirs', 'extra_objects', 'extra_compile_args', 'extra_link_args', 'swig_opts', 'export_symbols', 'depends', 'language') def setup (**attrs): """The gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. """ global _setup_stop_after, _setup_distribution # Determine the distribution class -- either caller-supplied or # our Distribution (see below). klass = attrs.get('distclass') if klass: del attrs['distclass'] else: klass = Distribution if 'script_name' not in attrs: attrs['script_name'] = os.path.basename(sys.argv[0]) if 'script_args' not in attrs: attrs['script_args'] = sys.argv[1:] # Create the Distribution instance, using the remaining arguments # (ie. everything except distclass) to initialize it try: _setup_distribution = dist = klass(attrs) except DistutilsSetupError as msg: if 'name' not in attrs: raise SystemExit("error in setup command: %s" % msg) else: raise SystemExit("error in %s setup command: %s" % \ (attrs['name'], msg)) if _setup_stop_after == "init": return dist # Find and parse the config file(s): they will override options from # the setup script, but be overridden by the command line. dist.parse_config_files() if DEBUG: print("options (after parsing config files):") dist.dump_option_dicts() if _setup_stop_after == "config": return dist # Parse the command line and override config files; any # command-line errors are the end user's fault, so turn them into # SystemExit to suppress tracebacks. try: ok = dist.parse_command_line() except DistutilsArgError as msg: raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg) if DEBUG: print("options (after parsing command line):") dist.dump_option_dicts() if _setup_stop_after == "commandline": return dist # And finally, run all the commands found on the command line. if ok: try: dist.run_commands() except KeyboardInterrupt: raise SystemExit("interrupted") except OSError as exc: if DEBUG: sys.stderr.write("error: %s\n" % (exc,)) raise else: raise SystemExit("error: %s" % (exc,)) except (DistutilsError, CCompilerError) as msg: if DEBUG: raise else: raise SystemExit("error: " + str(msg)) return dist # setup () def run_setup (script_name, script_args=None, stop_after="run"): """Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. """ if stop_after not in ('init', 'config', 'commandline', 'run'): raise ValueError("invalid value for 'stop_after': %r" % (stop_after,)) global _setup_stop_after, _setup_distribution _setup_stop_after = stop_after save_argv = sys.argv.copy() g = {'__file__': script_name} try: try: sys.argv[0] = script_name if script_args is not None: sys.argv[1:] = script_args with open(script_name, 'rb') as f: exec(f.read(), g) finally: sys.argv = save_argv _setup_stop_after = None except SystemExit: # Hmm, should we do something if exiting with a non-zero code # (ie. error)? pass if _setup_distribution is None: raise RuntimeError(("'distutils.core.setup()' was never called -- " "perhaps '%s' is not a Distutils setup script?") % \ script_name) # I wonder if the setup script's namespace -- g and l -- would be of # any interest to callers? #print "_setup_distribution:", _setup_distribution return _setup_distribution # run_setup () PKD]2  versionpredicate.pynu["""Module for parsing and testing package version predicate strings. """ import re import distutils.version import operator re_validPackage = re.compile(r"(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)", re.ASCII) # (package) (rest) re_paren = re.compile(r"^\s*\((.*)\)\s*$") # (list) inside of parentheses re_splitComparison = re.compile(r"^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$") # (comp) (version) def splitUp(pred): """Parse a single version comparison. Return (comparison string, StrictVersion) """ res = re_splitComparison.match(pred) if not res: raise ValueError("bad package restriction syntax: %r" % pred) comp, verStr = res.groups() return (comp, distutils.version.StrictVersion(verStr)) compmap = {"<": operator.lt, "<=": operator.le, "==": operator.eq, ">": operator.gt, ">=": operator.ge, "!=": operator.ne} class VersionPredicate: """Parse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' """ def __init__(self, versionPredicateStr): """Parse a version predicate string. """ # Fields: # name: package name # pred: list of (comparison string, StrictVersion) versionPredicateStr = versionPredicateStr.strip() if not versionPredicateStr: raise ValueError("empty package restriction") match = re_validPackage.match(versionPredicateStr) if not match: raise ValueError("bad package name in %r" % versionPredicateStr) self.name, paren = match.groups() paren = paren.strip() if paren: match = re_paren.match(paren) if not match: raise ValueError("expected parenthesized list: %r" % paren) str = match.groups()[0] self.pred = [splitUp(aPred) for aPred in str.split(",")] if not self.pred: raise ValueError("empty parenthesized list in %r" % versionPredicateStr) else: self.pred = [] def __str__(self): if self.pred: seq = [cond + " " + str(ver) for cond, ver in self.pred] return self.name + " (" + ", ".join(seq) + ")" else: return self.name def satisfied_by(self, version): """True if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. """ for cond, ver in self.pred: if not compmap[cond](version, ver): return False return True _provision_rx = None def split_provision(value): """Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) """ global _provision_rx if _provision_rx is None: _provision_rx = re.compile( r"([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$", re.ASCII) value = value.strip() m = _provision_rx.match(value) if not m: raise ValueError("illegal provides specification: %r" % value) ver = m.group(2) or None if ver: ver = distutils.version.StrictVersion(ver) return m.group(1), ver PKD]lW:W:bcppcompiler.pynu["""distutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. """ # This implementation by Lyle Johnson, based on the original msvccompiler.py # module and using the directions originally published by Gordon Williams. # XXX looks like there's a LOT of overlap between these two classes: # someone should sit down and factor out the common code as # WindowsCCompiler! --GPW import os from distutils.errors import \ DistutilsExecError, DistutilsPlatformError, \ CompileError, LibError, LinkError, UnknownFileError from distutils.ccompiler import \ CCompiler, gen_preprocess_options, gen_lib_options from distutils.file_util import write_file from distutils.dep_util import newer from distutils import log class BCPPCompiler(CCompiler) : """Concrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. """ compiler_type = 'bcpp' # Just set this so CCompiler's constructor doesn't barf. We currently # don't use the 'set_executables()' bureaucracy provided by CCompiler, # as it really isn't necessary for this sort of single-compiler class. # Would be nice to have a consistent interface with UnixCCompiler, # though, so it's worth thinking about. executables = {} # Private class data (need to distinguish C from C++ source for compiler) _c_extensions = ['.c'] _cpp_extensions = ['.cc', '.cpp', '.cxx'] # Needed for the filename generation methods provided by the # base class, CCompiler. src_extensions = _c_extensions + _cpp_extensions obj_extension = '.obj' static_lib_extension = '.lib' shared_lib_extension = '.dll' static_lib_format = shared_lib_format = '%s%s' exe_extension = '.exe' def __init__ (self, verbose=0, dry_run=0, force=0): CCompiler.__init__ (self, verbose, dry_run, force) # These executables are assumed to all be in the path. # Borland doesn't seem to use any special registry settings to # indicate their installation locations. self.cc = "bcc32.exe" self.linker = "ilink32.exe" self.lib = "tlib.exe" self.preprocess_options = None self.compile_options = ['/tWM', '/O2', '/q', '/g0'] self.compile_options_debug = ['/tWM', '/Od', '/q', '/g0'] self.ldflags_shared = ['/Tpd', '/Gn', '/q', '/x'] self.ldflags_shared_debug = ['/Tpd', '/Gn', '/q', '/x'] self.ldflags_static = [] self.ldflags_exe = ['/Gn', '/q', '/x'] self.ldflags_exe_debug = ['/Gn', '/q', '/x','/r'] # -- Worker methods ------------------------------------------------ def compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): macros, objects, extra_postargs, pp_opts, build = \ self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs) compile_opts = extra_preargs or [] compile_opts.append ('-c') if debug: compile_opts.extend (self.compile_options_debug) else: compile_opts.extend (self.compile_options) for obj in objects: try: src, ext = build[obj] except KeyError: continue # XXX why do the normpath here? src = os.path.normpath(src) obj = os.path.normpath(obj) # XXX _setup_compile() did a mkpath() too but before the normpath. # Is it possible to skip the normpath? self.mkpath(os.path.dirname(obj)) if ext == '.res': # This is already a binary file -- skip it. continue # the 'for' loop if ext == '.rc': # This needs to be compiled to a .res file -- do it now. try: self.spawn (["brcc32", "-fo", obj, src]) except DistutilsExecError as msg: raise CompileError(msg) continue # the 'for' loop # The next two are both for the real compiler. if ext in self._c_extensions: input_opt = "" elif ext in self._cpp_extensions: input_opt = "-P" else: # Unknown file type -- no extra options. The compiler # will probably fail, but let it just in case this is a # file the compiler recognizes even if we don't. input_opt = "" output_opt = "-o" + obj # Compiler command line syntax is: "bcc32 [options] file(s)". # Note that the source file names must appear at the end of # the command line. try: self.spawn ([self.cc] + compile_opts + pp_opts + [input_opt, output_opt] + extra_postargs + [src]) except DistutilsExecError as msg: raise CompileError(msg) return objects # compile () def create_static_lib (self, objects, output_libname, output_dir=None, debug=0, target_lang=None): (objects, output_dir) = self._fix_object_args (objects, output_dir) output_filename = \ self.library_filename (output_libname, output_dir=output_dir) if self._need_link (objects, output_filename): lib_args = [output_filename, '/u'] + objects if debug: pass # XXX what goes here? try: self.spawn ([self.lib] + lib_args) except DistutilsExecError as msg: raise LibError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) # create_static_lib () def link (self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): # XXX this ignores 'build_temp'! should follow the lead of # msvccompiler.py (objects, output_dir) = self._fix_object_args (objects, output_dir) (libraries, library_dirs, runtime_library_dirs) = \ self._fix_lib_args (libraries, library_dirs, runtime_library_dirs) if runtime_library_dirs: log.warn("I don't know what to do with 'runtime_library_dirs': %s", str(runtime_library_dirs)) if output_dir is not None: output_filename = os.path.join (output_dir, output_filename) if self._need_link (objects, output_filename): # Figure out linker args based on type of target. if target_desc == CCompiler.EXECUTABLE: startup_obj = 'c0w32' if debug: ld_args = self.ldflags_exe_debug[:] else: ld_args = self.ldflags_exe[:] else: startup_obj = 'c0d32' if debug: ld_args = self.ldflags_shared_debug[:] else: ld_args = self.ldflags_shared[:] # Create a temporary exports file for use by the linker if export_symbols is None: def_file = '' else: head, tail = os.path.split (output_filename) modname, ext = os.path.splitext (tail) temp_dir = os.path.dirname(objects[0]) # preserve tree structure def_file = os.path.join (temp_dir, '%s.def' % modname) contents = ['EXPORTS'] for sym in (export_symbols or []): contents.append(' %s=_%s' % (sym, sym)) self.execute(write_file, (def_file, contents), "writing %s" % def_file) # Borland C++ has problems with '/' in paths objects2 = map(os.path.normpath, objects) # split objects in .obj and .res files # Borland C++ needs them at different positions in the command line objects = [startup_obj] resources = [] for file in objects2: (base, ext) = os.path.splitext(os.path.normcase(file)) if ext == '.res': resources.append(file) else: objects.append(file) for l in library_dirs: ld_args.append("/L%s" % os.path.normpath(l)) ld_args.append("/L.") # we sometimes use relative paths # list of object files ld_args.extend(objects) # XXX the command-line syntax for Borland C++ is a bit wonky; # certain filenames are jammed together in one big string, but # comma-delimited. This doesn't mesh too well with the # Unix-centric attitude (with a DOS/Windows quoting hack) of # 'spawn()', so constructing the argument list is a bit # awkward. Note that doing the obvious thing and jamming all # the filenames and commas into one argument would be wrong, # because 'spawn()' would quote any filenames with spaces in # them. Arghghh!. Apparently it works fine as coded... # name of dll/exe file ld_args.extend([',',output_filename]) # no map file and start libraries ld_args.append(',,') for lib in libraries: # see if we find it and if there is a bcpp specific lib # (xxx_bcpp.lib) libfile = self.find_library_file(library_dirs, lib, debug) if libfile is None: ld_args.append(lib) # probably a BCPP internal library -- don't warn else: # full name which prefers bcpp_xxx.lib over xxx.lib ld_args.append(libfile) # some default libraries ld_args.append ('import32') ld_args.append ('cw32mt') # def file for export symbols ld_args.extend([',',def_file]) # add resource files ld_args.append(',') ld_args.extend(resources) if extra_preargs: ld_args[:0] = extra_preargs if extra_postargs: ld_args.extend(extra_postargs) self.mkpath (os.path.dirname (output_filename)) try: self.spawn ([self.linker] + ld_args) except DistutilsExecError as msg: raise LinkError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) # link () # -- Miscellaneous methods ----------------------------------------- def find_library_file (self, dirs, lib, debug=0): # List of effective library names to try, in order of preference: # xxx_bcpp.lib is better than xxx.lib # and xxx_d.lib is better than xxx.lib if debug is set # # The "_bcpp" suffix is to handle a Python installation for people # with multiple compilers (primarily Distutils hackers, I suspect # ;-). The idea is they'd have one static library for each # compiler they care about, since (almost?) every Windows compiler # seems to have a different format for static libraries. if debug: dlib = (lib + "_d") try_names = (dlib + "_bcpp", lib + "_bcpp", dlib, lib) else: try_names = (lib + "_bcpp", lib) for dir in dirs: for name in try_names: libfile = os.path.join(dir, self.library_filename(name)) if os.path.exists(libfile): return libfile else: # Oops, didn't find it in *any* of 'dirs' return None # overwrite the one from CCompiler to support rc and res-files def object_filenames (self, source_filenames, strip_dir=0, output_dir=''): if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: # use normcase to make sure '.rc' is really '.rc' and not '.RC' (base, ext) = os.path.splitext (os.path.normcase(src_name)) if ext not in (self.src_extensions + ['.rc','.res']): raise UnknownFileError("unknown file type '%s' (from '%s')" % \ (ext, src_name)) if strip_dir: base = os.path.basename (base) if ext == '.res': # these can go unchanged obj_names.append (os.path.join (output_dir, base + ext)) elif ext == '.rc': # these need to be compiled to .res-files obj_names.append (os.path.join (output_dir, base + '.res')) else: obj_names.append (os.path.join (output_dir, base + self.obj_extension)) return obj_names # object_filenames () def preprocess (self, source, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None): (_, macros, include_dirs) = \ self._fix_compile_args(None, macros, include_dirs) pp_opts = gen_preprocess_options(macros, include_dirs) pp_args = ['cpp32.exe'] + pp_opts if output_file is not None: pp_args.append('-o' + output_file) if extra_preargs: pp_args[:0] = extra_preargs if extra_postargs: pp_args.extend(extra_postargs) pp_args.append(source) # We need to preprocess: either we're being forced to, or the # source file is newer than the target (or the target doesn't # exist). if self.force or output_file is None or newer(source, output_file): if output_file: self.mkpath(os.path.dirname(output_file)) try: self.spawn(pp_args) except DistutilsExecError as msg: print(msg) raise CompileError(msg) # preprocess() PKD]k"# dep_util.pynu["""distutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.""" import os from distutils.errors import DistutilsFileError def newer (source, target): """Return true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. """ if not os.path.exists(source): raise DistutilsFileError("file '%s' does not exist" % os.path.abspath(source)) if not os.path.exists(target): return 1 from stat import ST_MTIME mtime1 = os.stat(source)[ST_MTIME] mtime2 = os.stat(target)[ST_MTIME] return mtime1 > mtime2 # newer () def newer_pairwise (sources, targets): """Walk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. """ if len(sources) != len(targets): raise ValueError("'sources' and 'targets' must be same length") # build a pair of lists (sources, targets) where source is newer n_sources = [] n_targets = [] for i in range(len(sources)): if newer(sources[i], targets[i]): n_sources.append(sources[i]) n_targets.append(targets[i]) return (n_sources, n_targets) # newer_pairwise () def newer_group (sources, target, missing='error'): """Return true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). """ # If the target doesn't even exist, then it's definitely out-of-date. if not os.path.exists(target): return 1 # Otherwise we have to find out the hard way: if *any* source file # is more recent than 'target', then 'target' is out-of-date and # we can immediately return true. If we fall through to the end # of the loop, then 'target' is up-to-date and we return false. from stat import ST_MTIME target_mtime = os.stat(target)[ST_MTIME] for source in sources: if not os.path.exists(source): if missing == 'error': # blow up when we stat() the file pass elif missing == 'ignore': # missing source dropped from continue # target's dependency list elif missing == 'newer': # missing source means target is return 1 # out-of-date source_mtime = os.stat(source)[ST_MTIME] if source_mtime > target_mtime: return 1 else: return 0 # newer_group () PKD]۟FFcmd.pynu["""distutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. """ import sys, os, re from distutils.errors import DistutilsOptionError from distutils import util, dir_util, file_util, archive_util, dep_util from distutils import log class Command: """Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. """ # 'sub_commands' formalizes the notion of a "family" of commands, # eg. "install" as the parent with sub-commands "install_lib", # "install_headers", etc. The parent of a family of commands # defines 'sub_commands' as a class attribute; it's a list of # (command_name : string, predicate : unbound_method | string | None) # tuples, where 'predicate' is a method of the parent command that # determines whether the corresponding command is applicable in the # current situation. (Eg. we "install_headers" is only applicable if # we have any C header files to install.) If 'predicate' is None, # that command is always applicable. # # 'sub_commands' is usually defined at the *end* of a class, because # predicates can be unbound methods, so they must already have been # defined. The canonical example is the "install" command. sub_commands = [] # -- Creation/initialization methods ------------------------------- def __init__(self, dist): """Create and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. """ # late import because of mutual dependence between these classes from distutils.dist import Distribution if not isinstance(dist, Distribution): raise TypeError("dist must be a Distribution instance") if self.__class__ is Command: raise RuntimeError("Command is an abstract class") self.distribution = dist self.initialize_options() # Per-command versions of the global flags, so that the user can # customize Distutils' behaviour command-by-command and let some # commands fall back on the Distribution's behaviour. None means # "not defined, check self.distribution's copy", while 0 or 1 mean # false and true (duh). Note that this means figuring out the real # value of each flag is a touch complicated -- hence "self._dry_run" # will be handled by __getattr__, below. # XXX This needs to be fixed. self._dry_run = None # verbose is largely ignored, but needs to be set for # backwards compatibility (I think)? self.verbose = dist.verbose # Some commands define a 'self.force' option to ignore file # timestamps, but methods defined *here* assume that # 'self.force' exists for all commands. So define it here # just to be safe. self.force = None # The 'help' flag is just used for command-line parsing, so # none of that complicated bureaucracy is needed. self.help = 0 # 'finalized' records whether or not 'finalize_options()' has been # called. 'finalize_options()' itself should not pay attention to # this flag: it is the business of 'ensure_finalized()', which # always calls 'finalize_options()', to respect/update it. self.finalized = 0 # XXX A more explicit way to customize dry_run would be better. def __getattr__(self, attr): if attr == 'dry_run': myval = getattr(self, "_" + attr) if myval is None: return getattr(self.distribution, attr) else: return myval else: raise AttributeError(attr) def ensure_finalized(self): if not self.finalized: self.finalize_options() self.finalized = 1 # Subclasses must define: # initialize_options() # provide default values for all options; may be customized by # setup script, by options from config file(s), or by command-line # options # finalize_options() # decide on the final values for all options; this is called # after all possible intervention from the outside world # (command-line, option file, etc.) has been processed # run() # run the command: do whatever it is we're here to do, # controlled by the command's various option values def initialize_options(self): """Set default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. """ raise RuntimeError("abstract method -- subclass %s must override" % self.__class__) def finalize_options(self): """Set final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. """ raise RuntimeError("abstract method -- subclass %s must override" % self.__class__) def dump_options(self, header=None, indent=""): from distutils.fancy_getopt import longopt_xlate if header is None: header = "command options for '%s':" % self.get_command_name() self.announce(indent + header, level=log.INFO) indent = indent + " " for (option, _, _) in self.user_options: option = option.translate(longopt_xlate) if option[-1] == "=": option = option[:-1] value = getattr(self, option) self.announce(indent + "%s = %s" % (option, value), level=log.INFO) def run(self): """A command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. """ raise RuntimeError("abstract method -- subclass %s must override" % self.__class__) def announce(self, msg, level=1): """If the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. """ log.log(level, msg) def debug_print(self, msg): """Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. """ from distutils.debug import DEBUG if DEBUG: print(msg) sys.stdout.flush() # -- Option validation methods ------------------------------------- # (these are very handy in writing the 'finalize_options()' method) # # NB. the general philosophy here is to ensure that a particular option # value meets certain type and value constraints. If not, we try to # force it into conformance (eg. if we expect a list but have a string, # split the string on comma and/or whitespace). If we can't force the # option into conformance, raise DistutilsOptionError. Thus, command # classes need do nothing more than (eg.) # self.ensure_string_list('foo') # and they can be guaranteed that thereafter, self.foo will be # a list of strings. def _ensure_stringlike(self, option, what, default=None): val = getattr(self, option) if val is None: setattr(self, option, default) return default elif not isinstance(val, str): raise DistutilsOptionError("'%s' must be a %s (got `%s`)" % (option, what, val)) return val def ensure_string(self, option, default=None): """Ensure that 'option' is a string; if not defined, set it to 'default'. """ self._ensure_stringlike(option, "string", default) def ensure_string_list(self, option): r"""Ensure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. """ val = getattr(self, option) if val is None: return elif isinstance(val, str): setattr(self, option, re.split(r',\s*|\s+', val)) else: if isinstance(val, list): ok = all(isinstance(v, str) for v in val) else: ok = False if not ok: raise DistutilsOptionError( "'%s' must be a list of strings (got %r)" % (option, val)) def _ensure_tested_string(self, option, tester, what, error_fmt, default=None): val = self._ensure_stringlike(option, what, default) if val is not None and not tester(val): raise DistutilsOptionError(("error in '%s' option: " + error_fmt) % (option, val)) def ensure_filename(self, option): """Ensure that 'option' is the name of an existing file.""" self._ensure_tested_string(option, os.path.isfile, "filename", "'%s' does not exist or is not a file") def ensure_dirname(self, option): self._ensure_tested_string(option, os.path.isdir, "directory name", "'%s' does not exist or is not a directory") # -- Convenience methods for commands ------------------------------ def get_command_name(self): if hasattr(self, 'command_name'): return self.command_name else: return self.__class__.__name__ def set_undefined_options(self, src_cmd, *option_pairs): """Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". """ # Option_pairs: list of (src_option, dst_option) tuples src_cmd_obj = self.distribution.get_command_obj(src_cmd) src_cmd_obj.ensure_finalized() for (src_option, dst_option) in option_pairs: if getattr(self, dst_option) is None: setattr(self, dst_option, getattr(src_cmd_obj, src_option)) def get_finalized_command(self, command, create=1): """Wrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. """ cmd_obj = self.distribution.get_command_obj(command, create) cmd_obj.ensure_finalized() return cmd_obj # XXX rename to 'get_reinitialized_command()'? (should do the # same in dist.py, if so) def reinitialize_command(self, command, reinit_subcommands=0): return self.distribution.reinitialize_command(command, reinit_subcommands) def run_command(self, command): """Run some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. """ self.distribution.run_command(command) def get_sub_commands(self): """Determine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. """ commands = [] for (cmd_name, method) in self.sub_commands: if method is None or method(self): commands.append(cmd_name) return commands # -- External world manipulation ----------------------------------- def warn(self, msg): log.warn("warning: %s: %s\n", self.get_command_name(), msg) def execute(self, func, args, msg=None, level=1): util.execute(func, args, msg, dry_run=self.dry_run) def mkpath(self, name, mode=0o777): dir_util.mkpath(name, mode, dry_run=self.dry_run) def copy_file(self, infile, outfile, preserve_mode=1, preserve_times=1, link=None, level=1): """Copy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)""" return file_util.copy_file(infile, outfile, preserve_mode, preserve_times, not self.force, link, dry_run=self.dry_run) def copy_tree(self, infile, outfile, preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1): """Copy an entire directory tree respecting verbose, dry-run, and force flags. """ return dir_util.copy_tree(infile, outfile, preserve_mode, preserve_times, preserve_symlinks, not self.force, dry_run=self.dry_run) def move_file (self, src, dst, level=1): """Move a file respecting dry-run flag.""" return file_util.move_file(src, dst, dry_run=self.dry_run) def spawn(self, cmd, search_path=1, level=1): """Spawn an external command respecting dry-run flag.""" from distutils.spawn import spawn spawn(cmd, search_path, dry_run=self.dry_run) def make_archive(self, base_name, format, root_dir=None, base_dir=None, owner=None, group=None): return archive_util.make_archive(base_name, format, root_dir, base_dir, dry_run=self.dry_run, owner=owner, group=group) def make_file(self, infiles, outfile, func, args, exec_msg=None, skip_msg=None, level=1): """Special case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. """ if skip_msg is None: skip_msg = "skipping %s (inputs unchanged)" % outfile # Allow 'infiles' to be a single string if isinstance(infiles, str): infiles = (infiles,) elif not isinstance(infiles, (list, tuple)): raise TypeError( "'infiles' must be a string, or a list or tuple of strings") if exec_msg is None: exec_msg = "generating %s from %s" % (outfile, ', '.join(infiles)) # If 'outfile' must be regenerated (either because it doesn't # exist, is out-of-date, or the 'force' flag is true) then # perform the action that presumably regenerates it if self.force or dep_util.newer_group(infiles, outfile): self.execute(func, args, exec_msg, level) # Otherwise, print the "skip" message else: log.debug(skip_msg) PKD]$Fq config.pynu["""distutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. """ import os from configparser import RawConfigParser from distutils.cmd import Command DEFAULT_PYPIRC = """\ [distutils] index-servers = pypi [pypi] username:%s password:%s """ class PyPIRCCommand(Command): """Base command that knows how to handle the .pypirc file """ DEFAULT_REPOSITORY = 'https://upload.pypi.org/legacy/' DEFAULT_REALM = 'pypi' repository = None realm = None user_options = [ ('repository=', 'r', "url of repository [default: %s]" % \ DEFAULT_REPOSITORY), ('show-response', None, 'display full response text from server')] boolean_options = ['show-response'] def _get_rc_file(self): """Returns rc file path.""" return os.path.join(os.path.expanduser('~'), '.pypirc') def _store_pypirc(self, username, password): """Creates a default .pypirc file.""" rc = self._get_rc_file() with os.fdopen(os.open(rc, os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f: f.write(DEFAULT_PYPIRC % (username, password)) def _read_pypirc(self): """Reads the .pypirc file.""" rc = self._get_rc_file() if os.path.exists(rc): self.announce('Using PyPI login from %s' % rc) repository = self.repository or self.DEFAULT_REPOSITORY config = RawConfigParser() config.read(rc) sections = config.sections() if 'distutils' in sections: # let's get the list of servers index_servers = config.get('distutils', 'index-servers') _servers = [server.strip() for server in index_servers.split('\n') if server.strip() != ''] if _servers == []: # nothing set, let's try to get the default pypi if 'pypi' in sections: _servers = ['pypi'] else: # the file is not properly defined, returning # an empty dict return {} for server in _servers: current = {'server': server} current['username'] = config.get(server, 'username') # optional params for key, default in (('repository', self.DEFAULT_REPOSITORY), ('realm', self.DEFAULT_REALM), ('password', None)): if config.has_option(server, key): current[key] = config.get(server, key) else: current[key] = default # work around people having "repository" for the "pypi" # section of their config set to the HTTP (rather than # HTTPS) URL if (server == 'pypi' and repository in (self.DEFAULT_REPOSITORY, 'pypi')): current['repository'] = self.DEFAULT_REPOSITORY return current if (current['server'] == repository or current['repository'] == repository): return current elif 'server-login' in sections: # old format server = 'server-login' if config.has_option(server, 'repository'): repository = config.get(server, 'repository') else: repository = self.DEFAULT_REPOSITORY return {'username': config.get(server, 'username'), 'password': config.get(server, 'password'), 'repository': repository, 'server': server, 'realm': self.DEFAULT_REALM} return {} def _read_pypi_response(self, response): """Read and decode a PyPI HTTP response.""" import cgi content_type = response.getheader('content-type', 'text/plain') encoding = cgi.parse_header(content_type)[1].get('charset', 'ascii') return response.read().decode(encoding) def initialize_options(self): """Initialize options.""" self.repository = None self.realm = None self.show_response = 0 def finalize_options(self): """Finalizes options.""" if self.repository is None: self.repository = self.DEFAULT_REPOSITORY if self.realm is None: self.realm = self.DEFAULT_REALM PKD]Q800 text_file.pynu["""text_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.""" import sys, io class TextFile: """Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.""" default_options = { 'strip_comments': 1, 'skip_blanks': 1, 'lstrip_ws': 0, 'rstrip_ws': 1, 'join_lines': 0, 'collapse_join': 0, 'errors': 'strict', } def __init__(self, filename=None, file=None, **options): """Construct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.""" if filename is None and file is None: raise RuntimeError("you must supply either or both of 'filename' and 'file'") # set values for all options -- either from client option hash # or fallback to default_options for opt in self.default_options.keys(): if opt in options: setattr(self, opt, options[opt]) else: setattr(self, opt, self.default_options[opt]) # sanity check client option hash for opt in options.keys(): if opt not in self.default_options: raise KeyError("invalid TextFile option '%s'" % opt) if file is None: self.open(filename) else: self.filename = filename self.file = file self.current_line = 0 # assuming that file is at BOF! # 'linebuf' is a stack of lines that will be emptied before we # actually read from the file; it's only populated by an # 'unreadline()' operation self.linebuf = [] def open(self, filename): """Open a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.""" self.filename = filename self.file = io.open(self.filename, 'r', errors=self.errors) self.current_line = 0 def close(self): """Close the current file and forget everything we know about it (filename, current line number).""" file = self.file self.file = None self.filename = None self.current_line = None file.close() def gen_error(self, msg, line=None): outmsg = [] if line is None: line = self.current_line outmsg.append(self.filename + ", ") if isinstance(line, (list, tuple)): outmsg.append("lines %d-%d: " % tuple(line)) else: outmsg.append("line %d: " % line) outmsg.append(str(msg)) return "".join(outmsg) def error(self, msg, line=None): raise ValueError("error: " + self.gen_error(msg, line)) def warn(self, msg, line=None): """Print (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.""" sys.stderr.write("warning: " + self.gen_error(msg, line) + "\n") def readline(self): """Read and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.""" # If any "unread" lines waiting in 'linebuf', return the top # one. (We don't actually buffer read-ahead data -- lines only # get put in 'linebuf' if the client explicitly does an # 'unreadline()'. if self.linebuf: line = self.linebuf[-1] del self.linebuf[-1] return line buildup_line = '' while True: # read the line, make it None if EOF line = self.file.readline() if line == '': line = None if self.strip_comments and line: # Look for the first "#" in the line. If none, never # mind. If we find one and it's the first character, or # is not preceded by "\", then it starts a comment -- # strip the comment, strip whitespace before it, and # carry on. Otherwise, it's just an escaped "#", so # unescape it (and any other escaped "#"'s that might be # lurking in there) and otherwise leave the line alone. pos = line.find("#") if pos == -1: # no "#" -- no comments pass # It's definitely a comment -- either "#" is the first # character, or it's elsewhere and unescaped. elif pos == 0 or line[pos-1] != "\\": # Have to preserve the trailing newline, because it's # the job of a later step (rstrip_ws) to remove it -- # and if rstrip_ws is false, we'd better preserve it! # (NB. this means that if the final line is all comment # and has no trailing newline, we will think that it's # EOF; I think that's OK.) eol = (line[-1] == '\n') and '\n' or '' line = line[0:pos] + eol # If all that's left is whitespace, then skip line # *now*, before we try to join it to 'buildup_line' -- # that way constructs like # hello \\ # # comment that should be ignored # there # result in "hello there". if line.strip() == "": continue else: # it's an escaped "#" line = line.replace("\\#", "#") # did previous line end with a backslash? then accumulate if self.join_lines and buildup_line: # oops: end of file if line is None: self.warn("continuation line immediately precedes " "end-of-file") return buildup_line if self.collapse_join: line = line.lstrip() line = buildup_line + line # careful: pay attention to line number when incrementing it if isinstance(self.current_line, list): self.current_line[1] = self.current_line[1] + 1 else: self.current_line = [self.current_line, self.current_line + 1] # just an ordinary line, read it as usual else: if line is None: # eof return None # still have to be careful about incrementing the line number! if isinstance(self.current_line, list): self.current_line = self.current_line[1] + 1 else: self.current_line = self.current_line + 1 # strip whitespace however the client wants (leading and # trailing, or one or the other, or neither) if self.lstrip_ws and self.rstrip_ws: line = line.strip() elif self.lstrip_ws: line = line.lstrip() elif self.rstrip_ws: line = line.rstrip() # blank line (whether we rstrip'ed or not)? skip to next line # if appropriate if (line == '' or line == '\n') and self.skip_blanks: continue if self.join_lines: if line[-1] == '\\': buildup_line = line[:-1] continue if line[-2:] == '\\\n': buildup_line = line[0:-2] + '\n' continue # well, I guess there's some actual content there: return it return line def readlines(self): """Read and return the list of all logical lines remaining in the current file.""" lines = [] while True: line = self.readline() if line is None: return lines lines.append(line) def unreadline(self, line): """Push 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.""" self.linebuf.append(line) PKD]\MM_msvccompiler.pynu["""distutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. """ # Written by Perry Stoll # hacked by Robin Becker and Thomas Heller to do a better job of # finding DevStudio (through the registry) # ported to VS 2005 and VS 2008 by Christian Heimes # ported to VS 2015 by Steve Dower import os import shutil import stat import subprocess import winreg from distutils.errors import DistutilsExecError, DistutilsPlatformError, \ CompileError, LibError, LinkError from distutils.ccompiler import CCompiler, gen_lib_options from distutils import log from distutils.util import get_platform from itertools import count def _find_vc2015(): try: key = winreg.OpenKeyEx( winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\VisualStudio\SxS\VC7", access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY ) except OSError: log.debug("Visual C++ is not registered") return None, None best_version = 0 best_dir = None with key: for i in count(): try: v, vc_dir, vt = winreg.EnumValue(key, i) except OSError: break if v and vt == winreg.REG_SZ and os.path.isdir(vc_dir): try: version = int(float(v)) except (ValueError, TypeError): continue if version >= 14 and version > best_version: best_version, best_dir = version, vc_dir return best_version, best_dir def _find_vc2017(): """Returns "15, path" based on the result of invoking vswhere.exe If no install is found, returns "None, None" The version is returned to avoid unnecessarily changing the function result. It may be ignored when the path is not None. If vswhere.exe is not available, by definition, VS 2017 is not installed. """ import json root = os.environ.get("ProgramFiles(x86)") or os.environ.get("ProgramFiles") if not root: return None, None try: path = subprocess.check_output([ os.path.join(root, "Microsoft Visual Studio", "Installer", "vswhere.exe"), "-latest", "-prerelease", "-requires", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "-property", "installationPath", "-products", "*", ], encoding="mbcs", errors="strict").strip() except (subprocess.CalledProcessError, OSError, UnicodeDecodeError): return None, None path = os.path.join(path, "VC", "Auxiliary", "Build") if os.path.isdir(path): return 15, path return None, None def _find_vcvarsall(plat_spec): # bpo-38597: Removed vcruntime return value _, best_dir = _find_vc2017() if not best_dir: best_version, best_dir = _find_vc2015() if not best_dir: log.debug("No suitable Visual C++ version found") return None, None vcvarsall = os.path.join(best_dir, "vcvarsall.bat") if not os.path.isfile(vcvarsall): log.debug("%s cannot be found", vcvarsall) return None, None return vcvarsall, None def _get_vc_env(plat_spec): if os.getenv("DISTUTILS_USE_SDK"): return { key.lower(): value for key, value in os.environ.items() } vcvarsall, _ = _find_vcvarsall(plat_spec) if not vcvarsall: raise DistutilsPlatformError("Unable to find vcvarsall.bat") try: out = subprocess.check_output( 'cmd /u /c "{}" {} && set'.format(vcvarsall, plat_spec), stderr=subprocess.STDOUT, ).decode('utf-16le', errors='replace') except subprocess.CalledProcessError as exc: log.error(exc.output) raise DistutilsPlatformError("Error executing {}" .format(exc.cmd)) env = { key.lower(): value for key, _, value in (line.partition('=') for line in out.splitlines()) if key and value } return env def _find_exe(exe, paths=None): """Return path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. """ if not paths: paths = os.getenv('path').split(os.pathsep) for p in paths: fn = os.path.join(os.path.abspath(p), exe) if os.path.isfile(fn): return fn return exe # A map keyed by get_platform() return values to values accepted by # 'vcvarsall.bat'. Always cross-compile from x86 to work with the # lighter-weight MSVC installs that do not include native 64-bit tools. PLAT_TO_VCVARS = { 'win32' : 'x86', 'win-amd64' : 'x86_amd64', } class MSVCCompiler(CCompiler) : """Concrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.""" compiler_type = 'msvc' # Just set this so CCompiler's constructor doesn't barf. We currently # don't use the 'set_executables()' bureaucracy provided by CCompiler, # as it really isn't necessary for this sort of single-compiler class. # Would be nice to have a consistent interface with UnixCCompiler, # though, so it's worth thinking about. executables = {} # Private class data (need to distinguish C from C++ source for compiler) _c_extensions = ['.c'] _cpp_extensions = ['.cc', '.cpp', '.cxx'] _rc_extensions = ['.rc'] _mc_extensions = ['.mc'] # Needed for the filename generation methods provided by the # base class, CCompiler. src_extensions = (_c_extensions + _cpp_extensions + _rc_extensions + _mc_extensions) res_extension = '.res' obj_extension = '.obj' static_lib_extension = '.lib' shared_lib_extension = '.dll' static_lib_format = shared_lib_format = '%s%s' exe_extension = '.exe' def __init__(self, verbose=0, dry_run=0, force=0): CCompiler.__init__ (self, verbose, dry_run, force) # target platform (.plat_name is consistent with 'bdist') self.plat_name = None self.initialized = False def initialize(self, plat_name=None): # multi-init means we would need to check platform same each time... assert not self.initialized, "don't init multiple times" if plat_name is None: plat_name = get_platform() # sanity check for platforms to prevent obscure errors later. if plat_name not in PLAT_TO_VCVARS: raise DistutilsPlatformError("--plat-name must be one of {}" .format(tuple(PLAT_TO_VCVARS))) # Get the vcvarsall.bat spec for the requested platform. plat_spec = PLAT_TO_VCVARS[plat_name] vc_env = _get_vc_env(plat_spec) if not vc_env: raise DistutilsPlatformError("Unable to find a compatible " "Visual Studio installation.") self._paths = vc_env.get('path', '') paths = self._paths.split(os.pathsep) self.cc = _find_exe("cl.exe", paths) self.linker = _find_exe("link.exe", paths) self.lib = _find_exe("lib.exe", paths) self.rc = _find_exe("rc.exe", paths) # resource compiler self.mc = _find_exe("mc.exe", paths) # message compiler self.mt = _find_exe("mt.exe", paths) # message compiler for dir in vc_env.get('include', '').split(os.pathsep): if dir: self.add_include_dir(dir.rstrip(os.sep)) for dir in vc_env.get('lib', '').split(os.pathsep): if dir: self.add_library_dir(dir.rstrip(os.sep)) self.preprocess_options = None # bpo-38597: Always compile with dynamic linking # Future releases of Python 3.x will include all past # versions of vcruntime*.dll for compatibility. self.compile_options = [ '/nologo', '/Ox', '/W3', '/GL', '/DNDEBUG', '/MD' ] self.compile_options_debug = [ '/nologo', '/Od', '/MDd', '/Zi', '/W3', '/D_DEBUG' ] ldflags = [ '/nologo', '/INCREMENTAL:NO', '/LTCG' ] ldflags_debug = [ '/nologo', '/INCREMENTAL:NO', '/LTCG', '/DEBUG:FULL' ] self.ldflags_exe = [*ldflags, '/MANIFEST:EMBED,ID=1'] self.ldflags_exe_debug = [*ldflags_debug, '/MANIFEST:EMBED,ID=1'] self.ldflags_shared = [*ldflags, '/DLL', '/MANIFEST:EMBED,ID=2', '/MANIFESTUAC:NO'] self.ldflags_shared_debug = [*ldflags_debug, '/DLL', '/MANIFEST:EMBED,ID=2', '/MANIFESTUAC:NO'] self.ldflags_static = [*ldflags] self.ldflags_static_debug = [*ldflags_debug] self._ldflags = { (CCompiler.EXECUTABLE, None): self.ldflags_exe, (CCompiler.EXECUTABLE, False): self.ldflags_exe, (CCompiler.EXECUTABLE, True): self.ldflags_exe_debug, (CCompiler.SHARED_OBJECT, None): self.ldflags_shared, (CCompiler.SHARED_OBJECT, False): self.ldflags_shared, (CCompiler.SHARED_OBJECT, True): self.ldflags_shared_debug, (CCompiler.SHARED_LIBRARY, None): self.ldflags_static, (CCompiler.SHARED_LIBRARY, False): self.ldflags_static, (CCompiler.SHARED_LIBRARY, True): self.ldflags_static_debug, } self.initialized = True # -- Worker methods ------------------------------------------------ def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): ext_map = { **{ext: self.obj_extension for ext in self.src_extensions}, **{ext: self.res_extension for ext in self._rc_extensions + self._mc_extensions}, } output_dir = output_dir or '' def make_out_path(p): base, ext = os.path.splitext(p) if strip_dir: base = os.path.basename(base) else: _, base = os.path.splitdrive(base) if base.startswith((os.path.sep, os.path.altsep)): base = base[1:] try: # XXX: This may produce absurdly long paths. We should check # the length of the result and trim base until we fit within # 260 characters. return os.path.join(output_dir, base + ext_map[ext]) except LookupError: # Better to raise an exception instead of silently continuing # and later complain about sources and targets having # different lengths raise CompileError("Don't know how to compile {}".format(p)) return list(map(make_out_path, source_filenames)) def compile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): if not self.initialized: self.initialize() compile_info = self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs) macros, objects, extra_postargs, pp_opts, build = compile_info compile_opts = extra_preargs or [] compile_opts.append('/c') if debug: compile_opts.extend(self.compile_options_debug) else: compile_opts.extend(self.compile_options) add_cpp_opts = False for obj in objects: try: src, ext = build[obj] except KeyError: continue if debug: # pass the full pathname to MSVC in debug mode, # this allows the debugger to find the source file # without asking the user to browse for it src = os.path.abspath(src) if ext in self._c_extensions: input_opt = "/Tc" + src elif ext in self._cpp_extensions: input_opt = "/Tp" + src add_cpp_opts = True elif ext in self._rc_extensions: # compile .RC to .RES file input_opt = src output_opt = "/fo" + obj try: self.spawn([self.rc] + pp_opts + [output_opt, input_opt]) except DistutilsExecError as msg: raise CompileError(msg) continue elif ext in self._mc_extensions: # Compile .MC to .RC file to .RES file. # * '-h dir' specifies the directory for the # generated include file # * '-r dir' specifies the target directory of the # generated RC file and the binary message resource # it includes # # For now (since there are no options to change this), # we use the source-directory for the include file and # the build directory for the RC file and message # resources. This works at least for win32all. h_dir = os.path.dirname(src) rc_dir = os.path.dirname(obj) try: # first compile .MC to .RC and .H file self.spawn([self.mc, '-h', h_dir, '-r', rc_dir, src]) base, _ = os.path.splitext(os.path.basename (src)) rc_file = os.path.join(rc_dir, base + '.rc') # then compile .RC to .RES file self.spawn([self.rc, "/fo" + obj, rc_file]) except DistutilsExecError as msg: raise CompileError(msg) continue else: # how to handle this file? raise CompileError("Don't know how to compile {} to {}" .format(src, obj)) args = [self.cc] + compile_opts + pp_opts if add_cpp_opts: args.append('/EHsc') args.append(input_opt) args.append("/Fo" + obj) args.extend(extra_postargs) try: self.spawn(args) except DistutilsExecError as msg: raise CompileError(msg) return objects def create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None): if not self.initialized: self.initialize() objects, output_dir = self._fix_object_args(objects, output_dir) output_filename = self.library_filename(output_libname, output_dir=output_dir) if self._need_link(objects, output_filename): lib_args = objects + ['/OUT:' + output_filename] if debug: pass # XXX what goes here? try: log.debug('Executing "%s" %s', self.lib, ' '.join(lib_args)) self.spawn([self.lib] + lib_args) except DistutilsExecError as msg: raise LibError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): if not self.initialized: self.initialize() objects, output_dir = self._fix_object_args(objects, output_dir) fixed_args = self._fix_lib_args(libraries, library_dirs, runtime_library_dirs) libraries, library_dirs, runtime_library_dirs = fixed_args if runtime_library_dirs: self.warn("I don't know what to do with 'runtime_library_dirs': " + str(runtime_library_dirs)) lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, libraries) if output_dir is not None: output_filename = os.path.join(output_dir, output_filename) if self._need_link(objects, output_filename): ldflags = self._ldflags[target_desc, debug] export_opts = ["/EXPORT:" + sym for sym in (export_symbols or [])] ld_args = (ldflags + lib_opts + export_opts + objects + ['/OUT:' + output_filename]) # The MSVC linker generates .lib and .exp files, which cannot be # suppressed by any linker switches. The .lib files may even be # needed! Make sure they are generated in the temporary build # directory. Since they have different names for debug and release # builds, they can go into the same directory. build_temp = os.path.dirname(objects[0]) if export_symbols is not None: (dll_name, dll_ext) = os.path.splitext( os.path.basename(output_filename)) implib_file = os.path.join( build_temp, self.library_filename(dll_name)) ld_args.append ('/IMPLIB:' + implib_file) if extra_preargs: ld_args[:0] = extra_preargs if extra_postargs: ld_args.extend(extra_postargs) output_dir = os.path.dirname(os.path.abspath(output_filename)) self.mkpath(output_dir) try: log.debug('Executing "%s" %s', self.linker, ' '.join(ld_args)) self.spawn([self.linker] + ld_args) except DistutilsExecError as msg: raise LinkError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) def spawn(self, cmd): old_path = os.getenv('path') try: os.environ['path'] = self._paths return super().spawn(cmd) finally: os.environ['path'] = old_path # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function, in # ccompiler.py. def library_dir_option(self, dir): return "/LIBPATH:" + dir def runtime_library_dir_option(self, dir): raise DistutilsPlatformError( "don't know how to set runtime library search path for MSVC") def library_option(self, lib): return self.library_filename(lib) def find_library_file(self, dirs, lib, debug=0): # Prefer a debugging library if found (and requested), but deal # with it if we don't have one. if debug: try_names = [lib + "_d", lib] else: try_names = [lib] for dir in dirs: for name in try_names: libfile = os.path.join(dir, self.library_filename(name)) if os.path.isfile(libfile): return libfile else: # Oops, didn't find it in *any* of 'dirs' return None PKD][ __init__.pynu["""distutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) """ import sys __version__ = sys.version[:sys.version.index(' ')] PKD]fP[5 2 2 filelist.pynu["""distutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. """ import os, re import fnmatch import functools from distutils.util import convert_path from distutils.errors import DistutilsTemplateError, DistutilsInternalError from distutils import log class FileList: """A list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) """ def __init__(self, warn=None, debug_print=None): # ignore argument to FileList, but keep them for backwards # compatibility self.allfiles = None self.files = [] def set_allfiles(self, allfiles): self.allfiles = allfiles def findall(self, dir=os.curdir): self.allfiles = findall(dir) def debug_print(self, msg): """Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. """ from distutils.debug import DEBUG if DEBUG: print(msg) # -- List-like methods --------------------------------------------- def append(self, item): self.files.append(item) def extend(self, items): self.files.extend(items) def sort(self): # Not a strict lexical sort! sortable_files = sorted(map(os.path.split, self.files)) self.files = [] for sort_tuple in sortable_files: self.files.append(os.path.join(*sort_tuple)) # -- Other miscellaneous utility methods --------------------------- def remove_duplicates(self): # Assumes list has been sorted! for i in range(len(self.files) - 1, 0, -1): if self.files[i] == self.files[i - 1]: del self.files[i] # -- "File template" methods --------------------------------------- def _parse_template_line(self, line): words = line.split() action = words[0] patterns = dir = dir_pattern = None if action in ('include', 'exclude', 'global-include', 'global-exclude'): if len(words) < 2: raise DistutilsTemplateError( "'%s' expects ..." % action) patterns = [convert_path(w) for w in words[1:]] elif action in ('recursive-include', 'recursive-exclude'): if len(words) < 3: raise DistutilsTemplateError( "'%s' expects ..." % action) dir = convert_path(words[1]) patterns = [convert_path(w) for w in words[2:]] elif action in ('graft', 'prune'): if len(words) != 2: raise DistutilsTemplateError( "'%s' expects a single " % action) dir_pattern = convert_path(words[1]) else: raise DistutilsTemplateError("unknown action '%s'" % action) return (action, patterns, dir, dir_pattern) def process_template_line(self, line): # Parse the line: split it up, make sure the right number of words # is there, and return the relevant words. 'action' is always # defined: it's the first word of the line. Which of the other # three are defined depends on the action; it'll be either # patterns, (dir and patterns), or (dir_pattern). (action, patterns, dir, dir_pattern) = self._parse_template_line(line) # OK, now we know that the action is valid and we have the # right number of words on the line for that action -- so we # can proceed with minimal error-checking. if action == 'include': self.debug_print("include " + ' '.join(patterns)) for pattern in patterns: if not self.include_pattern(pattern, anchor=1): log.warn("warning: no files found matching '%s'", pattern) elif action == 'exclude': self.debug_print("exclude " + ' '.join(patterns)) for pattern in patterns: if not self.exclude_pattern(pattern, anchor=1): log.warn(("warning: no previously-included files " "found matching '%s'"), pattern) elif action == 'global-include': self.debug_print("global-include " + ' '.join(patterns)) for pattern in patterns: if not self.include_pattern(pattern, anchor=0): log.warn(("warning: no files found matching '%s' " "anywhere in distribution"), pattern) elif action == 'global-exclude': self.debug_print("global-exclude " + ' '.join(patterns)) for pattern in patterns: if not self.exclude_pattern(pattern, anchor=0): log.warn(("warning: no previously-included files matching " "'%s' found anywhere in distribution"), pattern) elif action == 'recursive-include': self.debug_print("recursive-include %s %s" % (dir, ' '.join(patterns))) for pattern in patterns: if not self.include_pattern(pattern, prefix=dir): log.warn(("warning: no files found matching '%s' " "under directory '%s'"), pattern, dir) elif action == 'recursive-exclude': self.debug_print("recursive-exclude %s %s" % (dir, ' '.join(patterns))) for pattern in patterns: if not self.exclude_pattern(pattern, prefix=dir): log.warn(("warning: no previously-included files matching " "'%s' found under directory '%s'"), pattern, dir) elif action == 'graft': self.debug_print("graft " + dir_pattern) if not self.include_pattern(None, prefix=dir_pattern): log.warn("warning: no directories found matching '%s'", dir_pattern) elif action == 'prune': self.debug_print("prune " + dir_pattern) if not self.exclude_pattern(None, prefix=dir_pattern): log.warn(("no previously-included directories found " "matching '%s'"), dir_pattern) else: raise DistutilsInternalError( "this cannot happen: invalid action '%s'" % action) # -- Filtering/selection methods ----------------------------------- def include_pattern(self, pattern, anchor=1, prefix=None, is_regex=0): """Select strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform- dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return True if files are found, False otherwise. """ # XXX docstring lying about what the special chars are? files_found = False pattern_re = translate_pattern(pattern, anchor, prefix, is_regex) self.debug_print("include_pattern: applying regex r'%s'" % pattern_re.pattern) # delayed loading of allfiles list if self.allfiles is None: self.findall() for name in self.allfiles: if pattern_re.search(name): self.debug_print(" adding " + name) self.files.append(name) files_found = True return files_found def exclude_pattern (self, pattern, anchor=1, prefix=None, is_regex=0): """Remove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return True if files are found, False otherwise. """ files_found = False pattern_re = translate_pattern(pattern, anchor, prefix, is_regex) self.debug_print("exclude_pattern: applying regex r'%s'" % pattern_re.pattern) for i in range(len(self.files)-1, -1, -1): if pattern_re.search(self.files[i]): self.debug_print(" removing " + self.files[i]) del self.files[i] files_found = True return files_found # ---------------------------------------------------------------------- # Utility functions def _find_all_simple(path): """ Find all files under 'path' """ results = ( os.path.join(base, file) for base, dirs, files in os.walk(path, followlinks=True) for file in files ) return filter(os.path.isfile, results) def findall(dir=os.curdir): """ Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. """ files = _find_all_simple(dir) if dir == os.curdir: make_rel = functools.partial(os.path.relpath, start=dir) files = map(make_rel, files) return list(files) def glob_to_re(pattern): """Translate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). """ pattern_re = fnmatch.translate(pattern) # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, # and by extension they shouldn't match such "special characters" under # any OS. So change all non-escaped dots in the RE to match any # character except the special characters (currently: just os.sep). sep = os.sep if os.sep == '\\': # we're using a regex to manipulate a regex, so we need # to escape the backslash twice sep = r'\\\\' escaped = r'\1[^%s]' % sep pattern_re = re.sub(r'((?s   PKvr]R log.pycnu[ {fc@sdZdZdZdZdZdZddlZdd d YZeZej Z ej Z ej Z ej Z ej Z ejZd Zd ZdS( s,A simple log mechanism styled after PEP 282.iiiiiiNtLogcBsSeZedZdZdZdZdZdZdZ dZ RS(cCs ||_dS(N(t threshold(tselfR((s%/usr/lib64/python2.7/distutils/log.pyt__init__scCs|tttttfkr4tdt|n||jkr|rV||}n|tttfkrwtj }n tj }|j d||j ndS(Ns%s wrong log levels%s ( tDEBUGtINFOtWARNtERRORtFATALt ValueErrortstrRtsyststderrtstdouttwritetflush(Rtleveltmsgtargststream((s%/usr/lib64/python2.7/distutils/log.pyt_logs   cGs|j|||dS(N(R(RRRR((s%/usr/lib64/python2.7/distutils/log.pytlog!scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytdebug$scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytinfo'scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytwarn*scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pyterror-scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytfatal0s( t__name__t __module__RRRRRRRRR(((s%/usr/lib64/python2.7/distutils/log.pyRs       cCstj}|t_|S(N(t _global_logR(Rtold((s%/usr/lib64/python2.7/distutils/log.pyt set_threshold;s  cCsO|dkrttn2|dkr2ttn|dkrKttndS(Niii(RRRR(tv((s%/usr/lib64/python2.7/distutils/log.pyt set_verbosityAs      ((t__doc__RRRRRR RRRRRRRRRR!(((s%/usr/lib64/python2.7/distutils/log.pyts  %        PKvr]/..fancy_getopt.pycnu[ {fc@sdZdZddlZddlZddlZddlZddlmZmZdZ ej de Z ej de e fZ ej dd Zd fd YZd Zej ejd eejZdZdZdfdYZdS(s6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object s$Id$iN(tDistutilsGetoptErrortDistutilsArgErrors[a-zA-Z](?:[a-zA-Z0-9-]*)s^%s$s ^(%s)=!(%s)$t-t_t FancyGetoptcBseZdZddZdZdZdddZdZdZ dZ dZ d Z d Z ddd Zd Zdd ZdddZRS(sWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false cCst||_i|_|jr(|jni|_i|_g|_g|_i|_i|_i|_ g|_ dS(N( t option_tablet option_indext _build_indextaliastnegative_aliast short_optst long_optst short2longt attr_namet takes_argt option_order(tselfR((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt__init__-s           cCs6|jjx"|jD]}||j|d= 2is:invalid short option '%s': must a single character or Noneit=t:s>invalid negative alias '%s': aliased option '%s' takes a valuesginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tsinvalid long option name '%s' s'(must be letters, numbers, hyphens onlyN(R R R RtrepeatRtlent ValueErrorRtstrRtNoneRRR tgetRt longopt_retmatchRR (RRtlongtshortthelpR+talias_to((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt_grok_option_tablesd     "  !         c Cs|dkrtjd}n|dkr:t}d}nd}|jtj|j}y"tj|||j \}}Wntj k r}t |nXx\|D]T\}}t |dkr|ddkr|j |d}n2t |dkr |d dkst|d}|jj|} | r<| }n|j|s|dksatd|jj|} | r| }d}qd}n|j|} |r|jj| dk rt|| dd}nt|| ||jj||fqW|r||fS|SdS( sParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. iiiRs--tsboolean option can't have valueN(R/tsystargvt OptionDummyR7RtjoinR tgetoptR terrorRR,R R!RR0RR R R+tgetattrtsetattrRR( Rtargstobjecttcreated_objectR toptstmsgR%tvalRtattr((s./usr/lib64/python2.7/distutils/fancy_getopt.pyR=sF     " "(       cCs&|jdkrtdn|jSdS(sReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. s!'getopt()' hasn't been called yetN(RR/t RuntimeError(R((s./usr/lib64/python2.7/distutils/fancy_getopt.pytget_option_order*s cCsd}x||jD]q}|d}|d}t|}|ddkrS|d}n|dk rl|d}n||kr|}qqW|ddd}d}||} d|} |r|g} n d g} x|jD]}|d \}}} t| | } |ddkr|dd!}n|dkrk| rQ| jd ||| dfq| jd ||fnHd ||f}| r| jd ||| dfn| jd|x#| dD]}| j| |qWqW| S(sGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. iiiR)iiiNt sOption summary:is --%-*s %ss --%-*s s%s (-%s)s --%-*sN(RR,R/t wrap_textR(Rtheadertmax_optRR3R4tlt opt_widtht line_widtht text_widtht big_indenttlinesR5ttextt opt_names((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt generate_help5sF             ! cCsG|dkrtj}nx(|j|D]}|j|dq(WdS(Ns (R/R9tstdoutRVtwrite(RRLtfiletline((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt print_helps  N(t__name__t __module__t__doc__R/RRRRRRR&R'R(R7R=RIRVR[(((s./usr/lib64/python2.7/distutils/fancy_getopt.pyR!s  ,      X@ TcCs)t|}|j||j||S(N(RR(R=(toptionst negative_optRBRAtparser((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt fancy_getopts  RJcCs~|dkrgSt||kr)|gStj|}tj|t}tjd|}td|}g}x|ryg}d}xt|rt|d}|||kr|j |d|d=||}q|r|dddkr|d=nPqW|r]|dkr<|j |dd|!|d||d [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. s( +|-+)iiRJR8N( R/R,Rt expandtabsRtWS_TRANStretsplittfilterRR<(RTtwidthtchunksRStcur_linetcur_lenRN((s./usr/lib64/python2.7/distutils/fancy_getopt.pyRKs:       cCstj|tS(sXConvert a long option name to a valid Python identifier by changing "-" to "_". (RRR(R%((s./usr/lib64/python2.7/distutils/fancy_getopt.pyttranslate_longoptsR;cBseZdZgdZRS(s_Dummy class just used as a place to hold command-line option values as instance attributes.cCs%x|D]}t||dqWdS(skCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N(R@R/(RR_R%((s./usr/lib64/python2.7/distutils/fancy_getopt.pyRs (R\R]R^R(((s./usr/lib64/python2.7/distutils/fancy_getopt.pyR;s(R^t __revision__R9RReR=tdistutils.errorsRRt longopt_pattcompileR1t neg_alias_ret maketransRRRbt whitespaceR,RdRKRlR;(((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt s"    r " ; PKvr]zN֟ __init__.pycnu[ {fc@s/dZddlZejejjd ZdS(sdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) iNt (t__doc__tsystversiontindext __version__(((s*/usr/lib64/python2.7/distutils/__init__.pyt s PKvr]ml l dep_util.pycnu[ {fc@sZdZdZddlZddlmZddlmZdZdZdd Z dS( sdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.s$Id$iN(tST_MTIME(tDistutilsFileErrorcCsktjj|s1tdtjj|ntjj|sGtStj|ttj|tkS(sTells if the target is newer than the source. Return true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. Note that this test is not very accurate: files created in the same second will have the same "age". sfile '%s' does not exist(tostpathtexistsRtabspathtTruetstatR(tsourcettarget((s*/usr/lib64/python2.7/distutils/dep_util.pytnewer s cCst|t|kr$tdng}g}xIt||D]8\}}t||r@|j||j|q@q@W||fS(sWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. s+'sources' and 'targets' must be same length(tlent ValueErrortzipR tappend(tsourcesttargetst n_sourcest n_targetsRR ((s*/usr/lib64/python2.7/distutils/dep_util.pytnewer_pairwise!s  terrorcCstjj|stStj|t}xq|D]i}tjj|s||dkrWq||dkriq0q||dkr|tSntj|t|kr0tSq0WtS(sReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). RtignoreR (RRRRRRtFalse(RR tmissingt target_mtimeR((s*/usr/lib64/python2.7/distutils/dep_util.pyt newer_group4s    ( t__doc__t __revision__RRRtdistutils.errorsRR RR(((s*/usr/lib64/python2.7/distutils/dep_util.pyts   PKvr]%z+$+$ text_file.pyonu[ {fc@s/dZdZddlZdddYZdS(stext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.s$Id$iNtTextFilecBseZdZidd6dd6dd6dd6dd6dd6Zddd Zd Zd Zdd Zdd Z ddZ dZ dZ dZ RS(s Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using the 'open()' builtin. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.itstrip_commentst skip_blanksit lstrip_wst rstrip_wst join_linest collapse_joincKs|dkr$|dkr$tdnxQ|jjD]@}||kr]t||||q4t|||j|q4Wx3|jD]%}||jkrtd|qqW|dkr|j|n||_||_d|_ g|_ dS(sConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.s7you must supply either or both of 'filename' and 'file'sinvalid TextFile option '%s'iN( tNonet RuntimeErrortdefault_optionstkeystsetattrtKeyErrortopentfilenametfilet current_linetlinebuf(tselfRRtoptionstopt((s+/usr/lib64/python2.7/distutils/text_file.pyt__init__Ns       cCs+||_t|jd|_d|_dS(syOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.triN(RR RR(RR((s+/usr/lib64/python2.7/distutils/text_file.pyR ss cCs2|j}d|_d|_d|_|jdS(siClose the current file and forget everything we know about it (filename, current line number).N(RRRRtclose(RR((s+/usr/lib64/python2.7/distutils/text_file.pyR|s     cCsg}|dkr|j}n|j|jdt|ttfra|jdt|n|jd||jt|dj|S(Ns, s lines %d-%d: s line %d: t( RRtappendRt isinstancetlistttupletstrtjoin(Rtmsgtlinetoutmsg((s+/usr/lib64/python2.7/distutils/text_file.pyt gen_errors  cCstd|j||dS(Nserror: (t ValueErrorR"(RRR ((s+/usr/lib64/python2.7/distutils/text_file.pyterrorscCs(tjjd|j||ddS(sPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.s warning: s N(tsyststderrtwriteR"(RRR ((s+/usr/lib64/python2.7/distutils/text_file.pytwarnscCs|jr$|jd}|jd=|Sd}x~|jj}|dkrQd }n|jr|r|jd}|dkr~q|dks||ddkr|ddkrdpd}|d|!|}|jdkrq-qq|jdd}n|jr|r|d kr'|j d |S|j r?|j }n||}t |j trv|j dd|j ds PKvr]|dkrd}ng}x|D]}tjj|\}}tjj|d}|tjj|}||jkrtd|n|rtjj|}n||j kr|j tjj |||j q"||j kr|j tjj |||j q"|j tjj |||jq"W|S(NRwisDon't know how to compile %s(R RNR*tsplitextt splitdrivetisabstsrc_extensionsRtbasenamet_rc_extensionsR Rnt res_extensiont_mc_extensionst obj_extension(R%tsource_filenamest strip_dirt output_dirt obj_namestsrc_nameR text((s./usr/lib64/python2.7/distutils/msvccompiler.pytobject_filenames<s(  c Cs|js|jn|j||||||\}} }} } |pLg} | jd|ru| j|jn| j|jxM| D]E} y| | \}}Wntk rqnX|rtj j |}n||j krd|}n||j krd|}nk||j kr}|}d| }y)|j|jg| |g|gWqtk rv}t|qXqn||jkretj j|}tj j| }y|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd| g|gWqtk r^}t|qXqntd|| fd | }y-|j|jg| | ||g|Wqtk r}t|qXqW| S( Ns/cs/Tcs/Tps/fos-hs-rs.rcs"Don't know how to compile %s to %ss/Fo(R\Rvt_setup_compileR textendRqRpR3RNR*tabspatht _c_extensionst_cpp_extensionsR}tspawnRjRRRtdirnameRkRxR|RnRh(R%tsourcesRR#t include_dirstdebugt extra_preargstextra_postargstdependstobjectstpp_optstbuildt compile_optstobjtsrcRt input_optt output_opttmsgth_dirtrc_dirR t_trc_file((s./usr/lib64/python2.7/distutils/msvccompiler.pytcompile]sj        # $$#   c Cs|js|jn|j||\}}|j|d|}|j||r|d|g}|rony|j|jg|Wqtk r}t|qXnt j d|dS(NRs/OUT:sskipping %s (up-to-date)( R\Rvt_fix_object_argstlibrary_filenamet _need_linkRRbRRRR( R%Rtoutput_libnameRRt target_langtoutput_filenametlib_argsR((s./usr/lib64/python2.7/distutils/msvccompiler.pytcreate_static_libs cCsW|js|jn|j||\}}|j|||\}}}|rl|jdt|nt||||}|dk rtj j ||}n|j ||rC|t j kr| r|jd}q|jd}n| r|j}n |j}g}x%|pgD]}|jd|qW||||d|g}|dk rtj jtj j|\}}tj j tj j|d|j|}|jd|n| r| |d*n| r|j| n|jtj j|y|j|jg|WqStk r?}t|qSXntjd|dS(Ns5I don't know what to do with 'runtime_library_dirs': is/EXPORT:s/OUT:is/IMPLIB:sskipping %s (up-to-date)(R\RvRt _fix_lib_argstwarntstrRR RNR*RnRRt EXECUTABLERsRrR RxR|RRRtmkpathRRiRRRR(R%t target_descRRRt librariest library_dirstruntime_library_dirstexport_symbolsRRRt build_tempRtlib_optstldflagst export_optstsymtld_argstdll_nametdll_extt implib_fileR((s./usr/lib64/python2.7/distutils/msvccompiler.pytlinksR          cCsd|S(Ns /LIBPATH:((R%tdir((s./usr/lib64/python2.7/distutils/msvccompiler.pytlibrary_dir_option$scCs tddS(Ns<don't know how to set runtime library search path for MSVC++(R(R%R((s./usr/lib64/python2.7/distutils/msvccompiler.pytruntime_library_dir_option'scCs |j|S(N(R(R%Rb((s./usr/lib64/python2.7/distutils/msvccompiler.pytlibrary_option+scCs|r|d|g}n |g}xW|D]K}xB|D]:}tjj||j|}tjj|r6|Sq6Wq)WdSdS(Nt_d(RNR*RnRtexistsR (R%tdirsRbRt try_namesRRtlibfile((s./usr/lib64/python2.7/distutils/msvccompiler.pytfind_library_file/s    cCsxH|jD]=}tjjtjj||}tjj|r |Sq WxXtjtjddD]=}tjjtjj||}tjj|re|SqeW|S(sReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. tPathRd( ReRNR*RnRtisfileR9RCRf(R%texeR6tfn((s./usr/lib64/python2.7/distutils/msvccompiler.pyRgCs ! !tx86cCsts gS|d}|jdkr<d|j|jf}nd|j|f}xitD]a}t||}|rV|jdkrtj|jj||dStj||dSqVqVW|jdkr x>tD]3}t|d|jd k r|j dPqqWngS( sGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. s dirsis6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriess?%s\6.0\Build System\Components\Platforms\Win32 (%s)\DirectoriesRdis%s\6.0sIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.N( t _can_read_regRVRXR(RR9RCRYR<R R(R%R*tplatformRR R((s./usr/lib64/python2.7/distutils/msvccompiler.pyRlZs(      cCsS|dkr|jd}n|j|}|rOtj|dtj|t__doc__t compiler_typet executablesRRR}RR{R~Rtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR'RvRR RRRRRRRRgRlRm(((s./usr/lib64/python2.7/distutils/msvccompiler.pyRTsP     B  Z  G      %g @s3Importing new compiler from distutils.msvc9compiler(RT(R"(/Rt __revision__RARNR9tdistutils.errorsRRRRRtdistutils.ccompilerRRt distutilsRRt_winregthkey_modt OpenKeyExRtEnumKeyR t EnumValueRterrorR t ImportErrortwin32apitwin32continfot HKEY_USERStHKEY_CURRENT_USERtHKEY_LOCAL_MACHINEtHKEY_CLASSES_ROOTR(RRRR"RIRMRSRTRtOldMSVCCompilertdistutils.msvc9compiler(((s./usr/lib64/python2.7/distutils/msvccompiler.pyts`   (                 .   PKvr]\4\4 sysconfig.pyonu[ fc@sdZdZddlZddlZddlZddlZddlmZejj ej Z ejj ej Z ejrejjejjejZn ejZejdkrdedjkrejjejjeejjZnejdkrVded jkrVejjejjeejjejjZnejdkrd ed jkrejjejjeejjejjZnd ejkrejj ejd Znd ZeZdZdddZddddZdZdZdZ ddZ!ej"dZ#ej"dZ$ej"dZ%ddZ&dZ'da(dZ)dZ*dZ+dZ,dZ-dS( sProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: s$Id$iN(tDistutilsPlatformErrortnttpcbuildis\pc\vis\pcbuild\amd64it_PYTHON_PROJECT_BASEcCs=x6dD].}tjjtjjtd|rtSqWtS(Ns Setup.dists Setup.localtModules(s Setup.dists Setup.local(tostpathtisfiletjoint project_basetTruetFalse(tfn((s+/usr/lib64/python2.7/distutils/sysconfig.pyt _python_build7s $cCs tjd S(sReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. i(tsystversion(((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_python_version?sicCs=|d kr!|rtpt}ntjdkrtrtjrWtjj tj}n tj }|rr|}n<tjj tjj |t d}tjj |d}|Stjj |ddttjrdpdStjdkrtjj |dStjd kr&tjj |dStd tjd S( sReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. tposixtsrcdirtIncludetincludetpythons-debugtRtos2sFI don't know where Python installs its C header files on platform '%s'N(tNonet EXEC_PREFIXtPREFIXRtnamet python_buildRt executableRtdirnametgetcwdtabspathRtget_config_varRtpydebugR(t plat_specifictprefixtbuildirtinc_dirR((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_python_incGs,    !cCs6|d kr!|rtpt}ntjdkr|s<|rEd}nd}tjj||dt}|rt|Stjj|dSntjdkr|rtjj|dStdkr|Stjj|ddSnTtjd kr|rtjj|dStjj|ddSntd tjd S( sIReturn the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. Rtlib64tlibRs site-packagesRtLibs2.2Rs?I don't know where Python installs its library on platform '%s'N( RRRRRRRRR(R#t standard_libR$R)t libpython((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_python_libss0    cCs|jdkrtjdkrStdsSddl}|jtdtdRFtcctcxxtcflagstccsharedtldsharedtso_exttartar_flagstnewcctcppRCtcc_cmd((s+/usr/lib64/python2.7/distutils/sysconfig.pyRGs^     !    cCsvtr6tjdkr-tjjtd}qEt}ntdd}tdkr]d}nd}tjj||S(s2Return full pathname of installed pyconfig.h file.RtPCR#is2.2sconfig.hs pyconfig-64.h(RRRRRR R'R(R&tconfig_h((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_config_h_filenames  cCsWtrtjjtdStdddd}tjj|dtjrLdpOddS(sAReturn full pathname of installed Makefile from the Python build.tMakefileR#iR+tconfigs-debugR(RRRRR R-RR"(tlib_dir((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_makefile_filenamescCs|dkri}ntjd}tjd}x|j}|sLPn|j|}|r|jdd\}}yt|}Wntk rnX||| sR     $ %*%%   ,3 J    S    &PKvr]zN֟ __init__.pyonu[ {fc@s/dZddlZejejjd ZdS(sdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) iNt (t__doc__tsystversiontindext __version__(((s*/usr/lib64/python2.7/distutils/__init__.pyt s PKvr] `ppcore.pycnu[ {fc@sdZdZddlZddlZddlmZddlmZmZm Z m Z ddl m Z ddl mZddlmZdd lmZd Zd Zdadad2Zd3Zd/Zdd0d1ZdS(4s#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. s$Id$iN(tDEBUG(tDistutilsSetupErrortDistutilsArgErrortDistutilsErrortCCompilerError(t Distribution(tCommand(t PyPIRCCommand(t Extensionsusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCs!tjj|}ti|d6S(Ntscript(tostpathtbasenametUSAGE(t script_nameR ((s&/usr/lib64/python2.7/distutils/core.pyt gen_usage#st distclassRt script_argstoptionstnametversiontauthort author_emailt maintainertmaintainer_emailturltlicenset descriptiontlong_descriptiontkeywordst platformst classifierst download_urltrequirestprovidest obsoletestsourcest include_dirst define_macrost undef_macrost library_dirst librariestruntime_library_dirst extra_objectstextra_compile_argstextra_link_argst swig_optstexport_symbolstdependstlanguagecKs5|jd}|r|d=nt}d|krQtjjtjd|ds4  "   oPKvr]F5f#bcppcompiler.pycnu[ {fc@sdZdZddlZddlmZmZmZmZmZddl m Z m Z ddl m Z ddlmZddlmZd e fd YZdS( sdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. s$Id$iN(tDistutilsExecErrort CompileErrortLibErrort LinkErrortUnknownFileError(t CCompilertgen_preprocess_options(t write_file(tnewer(tlogt BCPPCompilerc BseZdZdZiZdgZdddgZeeZdZdZ dZ d Z Z d Z d d d d Zdddd dddd Zdd ddZdddddd ddddd Zd dZd ddZddddddZRS(sConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. tbcpps.cs.ccs.cpps.cxxs.objs.libs.dlls%s%ss.exeicCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_ d d dd g|_ g|_ d dd g|_ d dd d g|_ dS( Ns bcc32.exes ilink32.exestlib.exes/tWMs/O2s/qs/g0s/Ods/Tpds/Gns/xs/r(Rt__init__tcctlinkertlibtNonetpreprocess_optionstcompile_optionstcompile_options_debugtldflags_sharedtldflags_shared_debugtldflags_statict ldflags_exetldflags_exe_debug(tselftverbosetdry_runtforce((s./usr/lib64/python2.7/distutils/bcppcompiler.pyR 5s     c Cs|j||||||\}} }} } |p6g} | jd|r_| j|jn| j|jxi| D]a} y| | \}}Wntk rqvnXtjj|}tjj| } |j tjj | |dkrqvn|dkrDy|j dd| |gWqvt k r=}t |qvXqvn||jkr\d}n||jkrtd}nd}d| }y4|j |jg| | ||g||gWqvt k r}t |qvXqvW| S( Ns-cs.ress.rctbrcc32s-fots-Ps-o(t_setup_compiletappendtextendRRtKeyErrortostpathtnormpathtmkpathtdirnametspawnRRt _c_extensionst_cpp_extensionsR (Rtsourcest output_dirtmacrost include_dirstdebugt extra_preargstextra_postargstdependstobjectstpp_optstbuildt compile_optstobjtsrctexttmsgt input_optt output_opt((s./usr/lib64/python2.7/distutils/bcppcompiler.pytcompileQsF          .c Cs|j||\}}|j|d|}|j||r|dg|}|rXny|j|jg|Wqtk r}t|qXntjd|dS(NR,s/usskipping %s (up-to-date)( t_fix_object_argstlibrary_filenamet _need_linkR(RRRR R/( RR3toutput_libnameR,R/t target_langtoutput_filenametlib_argsR:((s./usr/lib64/python2.7/distutils/bcppcompiler.pytcreate_static_libsc Cs|j||\}}|j|||\}}}|rUtjdt|n|dk rytjj||}n|j ||r|t j krd}| r|j }q|j }n#d}| r|j}n |j}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x+|plgD]}|jd||fqmW|jt||fd |ttjj|}|g}g}x[|D]S}tjjtjj|\}}|d kr|j|q|j|qWx+|D]#}|jd tjj|q4W|jd |j||jd |g|jdxL|D]D}|j||| }|dkr|j|q|j|qW|jd|jd|jd |g|jd |j|| r>| |d*n| rT|j| n|jtjj|y|j|jg|Wqtk r}t|qXntj d|dS(Ns7I don't know what to do with 'runtime_library_dirs': %stc0w32tc0d32Ris%s.deftEXPORTSs %s=_%ss writing %ss.ress/L%ss/L.t,s,,timport32tcw32mtsskipping %s (up-to-date)(!R>t _fix_lib_argsR twarntstrRR#R$tjoinR@Rt EXECUTABLERRRRtsplittsplitextR'R texecuteRtmapR%tnormcaseR!tfind_library_fileR&R(RRRR/( Rt target_descR3RCR,t librariest library_dirstruntime_library_dirstexport_symbolsR/R0R1t build_tempRBt startup_objtld_argstdef_filetheadttailtmodnameR9ttemp_dirtcontentstsymtobjects2t resourcestfiletbasetlRtlibfileR:((s./usr/lib64/python2.7/distutils/bcppcompiler.pytlinks|            $  !          c Cs|r-|d}|d|d||f}n|d|f}xW|D]K}xB|D]:}tjj||j|}tjj|rQ|SqQWqDWdSdS(Nt_dt_bcpp(R#R$ROR?texistsR( RtdirsRR/tdlibt try_namestdirtnameRk((s./usr/lib64/python2.7/distutils/bcppcompiler.pyRV4s     RcCs|dkrd}ng}x|D]}tjjtjj|\}}||jddgkr{td||fn|rtjj|}n|dkr|jtjj |||q"|dkr|jtjj ||dq"|jtjj |||j q"W|S(NRs.rcs.ress"unknown file type '%s' (from '%s')( RR#R$RRRUtsrc_extensionsRtbasenameR ROt obj_extension(Rtsource_filenamest strip_dirR,t obj_namestsrc_nameRiR9((s./usr/lib64/python2.7/distutils/bcppcompiler.pytobject_filenamesNs$  $ # #c Cs|jd||\}}}t||}dg|} |dk rZ| jd|n|rm|| d*n|r| j|n| j||js|dkst||r|r|jtj j |ny|j | Wqt k r } | GHt | qXndS(Ns cpp32.exes-oi(t_fix_compile_argsRRR R!RRR&R#R$R'R(RR( Rtsourcet output_fileR-R.R0R1t_R4tpp_argsR:((s./usr/lib64/python2.7/distutils/bcppcompiler.pyt preprocessjs$     $N(t__name__t __module__t__doc__t compiler_typet executablesR)R*RuRwtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR RR=RERlRVR|R(((s./usr/lib64/python2.7/distutils/bcppcompiler.pyR sJ     B  |  (Rt __revision__R#tdistutils.errorsRRRRRtdistutils.ccompilerRRtdistutils.file_utilRtdistutils.dep_utilRt distutilsR R (((s./usr/lib64/python2.7/distutils/bcppcompiler.pyts  (PKvr]ho debug.pycnu[ {fc@s(ddlZdZejjdZdS(iNs$Id$tDISTUTILS_DEBUG(tost __revision__tenvirontgettDEBUG(((s'/usr/lib64/python2.7/distutils/debug.pyts PKvr]^ spawn.pyonu[ {fc@sdZdZddlZddlZddlmZmZddlmZddl m Z dddd Z d Z dddd Z dddd Zejd krddl mZdadanddddZddZdS(sdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. s$Id$iN(tDistutilsPlatformErrortDistutilsExecError(tDEBUG(tlogiicCst|}tjdkr1t||d|nZtjdkrVt||d|n5tjdkr{t||d|ntdtjdS(sRun another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. cmd[0] is the program to run and cmd[1:] are the rest of its arguments. There is no way to run a program with a name different from that of its executable. If 'search_path' is true (the default), the system's executable search path will be used to find the program; otherwise, cmd[0] must be the exact path to the executable. If 'dry_run' is true, the command will not actually be run. Raise DistutilsExecError if running the program fails in any way; just return on success. tposixtdry_runtnttos2s1don't know how to spawn programs on platform '%s'N(tlisttostnamet _spawn_posixt _spawn_ntt _spawn_os2R(tcmdt search_pathtverboseR((s'/usr/lib64/python2.7/distutils/spawn.pytspawns cCs>x7t|D])\}}d|kr d|||tj}qGntj} | dkry0|dkr~|||n||||WnLtk r} ts|}ntjjd|| jftjd nXts|}ntjjd |tjd nJxGytj| d\} } Wn]tk r} d dl}| j|jkrfqntsu|}ntd || d fnXtj | rts|}ntd |tj!| fqtj"| r tj#| }|dkrdSts |}ntd||fqtj$| r5qqtsD|}ntd|| fqWdS(NRiR"tMACOSX_DEPLOYMENT_TARGETtt.sF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configuresunable to execute %r: %s is(unable to execute %r for unknown reasonsiscommand %r failed: %ss"command %r terminated by signal %ds%command %r failed with exit status %ds1unknown error executing %r: termination status %d(%RRRR texecvptexecvtNonetsystplatformt _cfg_targetR#tget_config_vartsplittintt_cfg_target_splittenvirontgetRtdicttexecvpetexecvetforkRRtstderrtwritetstrerrort_exittwaitpidterrnotEINTRRt WIFSIGNALEDtWTERMSIGt WIFEXITEDt WEXITSTATUSt WIFSTOPPED(RRRRRtexec_fntenvtxt cur_targettmy_msgtpidtetstatusR R<t exit_status((s'/usr/lib64/python2.7/distutils/spawn.pyR ts  ..               cCs|dkr'tjjdtj}n|jtj}tjj|\}}t j dksotj dkr|dkr|d}ntjj |sx9|D]1}tjj ||}tjj |r|SqWdS|SdS(sTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. tPATHtwin32Rs.exeN(R)R R1R2tdefpathR.tpathseptpathtsplitextR*R+R tisfileR(RRPtpathstbasetexttptf((s'/usr/lib64/python2.7/distutils/spawn.pyRs *  (t__doc__t __revision__R*R tdistutils.errorsRRtdistutils.debugRt distutilsRRRR R R+R#R)R,R0R R(((s'/usr/lib64/python2.7/distutils/spawn.pyts     XPKvr]Y*(( version.pycnu[ {fc@sqdZddlZddlZddlmZdd dYZdefdYZdefd YZdS( sProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * __cmp__ compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) iN(t StringTypetVersioncBs#eZdZddZdZRS(sAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes. cCs|r|j|ndS(N(tparse(tselftvstring((s)/usr/lib64/python2.7/distutils/version.pyt__init__&scCsd|jjt|fS(Ns %s ('%s')(t __class__t__name__tstr(R((s)/usr/lib64/python2.7/distutils/version.pyt__repr__*sN(Rt __module__t__doc__tNoneRR (((s)/usr/lib64/python2.7/distutils/version.pyR s t StrictVersioncBs>eZdZejdejZdZdZdZ RS(s?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. s)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|s(td|n|jddddd\}}}}}|rtttj|||g|_n(tttj||gdg|_|r|dtj|f|_ n d|_ dS(Nsinvalid version number '%s'iiiiii( t version_retmatcht ValueErrortgroupttupletmaptstringtatoitversiont prereleaseR (RRRtmajortminortpatchRtprerelease_num((s)/usr/lib64/python2.7/distutils/version.pyRhs*'(cCs|jddkr;tjtt|jdd!d}ntjtt|jd}|jr||jdt|jd}n|S(Niit.i(RRtjoinRRR(RR((s)/usr/lib64/python2.7/distutils/version.pyt__str__{s ( %cCst|trt|}nt|j|j}|dkr|j rW|j rWdS|jrn|j rndS|j r|jrdS|jr|jrt|j|jSn|SdS(Niii(t isinstanceRR tcmpRR(Rtothertcompare((s)/usr/lib64/python2.7/distutils/version.pyt__cmp__s ( RR R tretcompiletVERBOSERRRR#(((s)/usr/lib64/python2.7/distutils/version.pyR ?s #    t LooseVersioncBsSeZdZejdejZddZdZ dZ dZ dZ RS(sVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). s(\d+ | [a-z]+ | \.)cCs|r|j|ndS(N(R(RR((s)/usr/lib64/python2.7/distutils/version.pyRscCs}||_td|jj|}xFtt|D]2}yt||||t( Rtfiltert component_retsplittrangetlentintRR(RRt componentsti((s)/usr/lib64/python2.7/distutils/version.pyR s   cCs|jS(N(R(R((s)/usr/lib64/python2.7/distutils/version.pyRscCsdt|S(NsLooseVersion ('%s')(R(R((s)/usr/lib64/python2.7/distutils/version.pyR scCs1t|trt|}nt|j|jS(N(RRR'R R(RR!((s)/usr/lib64/python2.7/distutils/version.pyR#$sN( RR R R$R%R&R,R RRRR R#(((s)/usr/lib64/python2.7/distutils/version.pyR's    ((R RR$ttypesRRR R'(((s)/usr/lib64/python2.7/distutils/version.pyts PKvr]b{++emxccompiler.pyonu[ {fc@sdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZd e fd YZd Zd Zd ZdZdZdS(sdistutils.emxccompiler Provides the EMXCCompiler class, a subclass of UnixCCompiler that handles the EMX port of the GNU C compiler to OS/2. s$Id$iN(tgen_preprocess_optionstgen_lib_options(t UnixCCompiler(t write_file(tDistutilsExecErrort CompileErrortUnknownFileError(tlogt EMXCCompilerc BseZdZdZdZdZdZdZdZdZ ddddZ d Z ddddddddddd Z dd d Zdd ZRS(temxs.objs.libs.dlls%s%ss.ress.exeic Cstj||||t\}}|jd||f|tk rd|jdd|dnt\|_|_|j|j d|j|jf|j ddddd d d d d g|_ dS(Ns%Python's GCC status: %s (details: %s)s<Python's pyconfig.h doesn't seem to support your compiler. s Reason: %s.s<Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s tcompilers5gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wallt compiler_sot linker_exesgcc -Zomf -Zmt -Zcrtdllt linker_sosgcc -Zomf -Zmt -Zcrtdll -Zdlltgcc( Rt__init__tcheck_config_ht debug_printt CONFIG_H_OKtwarnt get_versionst gcc_versiont ld_versiont compiler_typetset_executablest dll_libraries(tselftverbosetdry_runtforcetstatustdetails((s./usr/lib64/python2.7/distutils/emxccompiler.pyR*s"    cCs|dkrHy|jdd|gWqtk rD}t|qXnHy)|j|j||d|g|Wntk r}t|nXdS(Ns.rctrcs-rs-o(tspawnRRR (Rtobjtsrctexttcc_argstextra_postargstpp_optstmsg((s./usr/lib64/python2.7/distutils/emxccompiler.pyt_compileMs  cCstj| pg} tj|p$g}tj|p9g}|j|j|dk r;||jkr;tjj|d}tjjtjj |\}}tjj ||d}dtjjtjj |dddg}x|D]}|j d|qW|j t ||fd||j |n| sQ| j dntj||||||||d| | | | | dS( Nis.defs$LIBRARY %s INITINSTANCE TERMINSTANCEsDATA MULTIPLE NONSHAREDtEXPORTSs "%s"s writing %ss-s(tcopytextendRtNonet EXECUTABLEtostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(Rt target_desctobjectstoutput_filenamet output_dirt librariest library_dirstruntime_library_dirstexport_symbolstdebugt extra_preargsR&t build_tempt target_langttemp_dirtdll_namet dll_extensiontdef_filetcontentstsym((s./usr/lib64/python2.7/distutils/emxccompiler.pyR7[sF         tcCs|dkrd}ng}x|D]}tjjtjj|\}}||jdgkrxtd||fn|rtjj|}n|dkr|jtjj |||j q"|jtjj |||j q"W|S(NRJs.rcs"unknown file type '%s' (from '%s')( R-R/R0R2tnormcasetsrc_extensionsRR3R5R4t res_extensiont obj_extension(Rtsource_filenamest strip_dirR;t obj_namestsrc_nametbaseR$((s./usr/lib64/python2.7/distutils/emxccompiler.pytobject_filenamess"  $ c Csd|}d|}ytjdjd}Wntk rGg}nXxh||D]\}tjj||}tjj||} tjj|r|Stjj| rS| SqSWdS(Ns%s.libs lib%s.libt LIBRARY_PATHt;(R/tenvirontsplittKeyErrorR0R4texistsR-( RtdirstlibR@tshortlibtlonglibtemx_dirstdirt shortlibptlonglibp((s./usr/lib64/python2.7/distutils/emxccompiler.pytfind_library_files    N(t__name__t __module__RRNtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatRMt exe_extensionRR)R-R7RTRc(((s./usr/lib64/python2.7/distutils/emxccompiler.pyRs2  P toksnot okt uncertaincCsddlm}ddl}|jtjddkrAtdfS|j}y.t|}z|j }Wd|j XWn't k r}t d||j ffSX|j|ddkrtd |fStd |fSdS( sCheck if the current Python installation (specifically, pyconfig.h) appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: CONFIG_H_OK all is well, go ahead and compile CONFIG_H_NOTOK doesn't look good CONFIG_H_UNCERTAIN not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". i(t sysconfigNtGCCissys.version mentions 'GCC'scouldn't read '%s': %st__GNUC__s'%s' mentions '__GNUC__'s '%s' does not mention '__GNUC__'(t distutilsRmtstringtfindtsystversionRtget_config_h_filenametopentreadtclosetIOErrortCONFIG_H_UNCERTAINtstrerrortCONFIG_H_NOTOK(RmRqtfntftstexc((s./usr/lib64/python2.7/distutils/emxccompiler.pyRs     c Csddlm}ddlm}ddl}|d}|rtj|dd}z|j}Wd|jX|j d|}|r||j d }qd}nd}d}||fS( sa Try to find out the versions of gcc and ld. If not possible it returns None for it. i(t StrictVersion(tfind_executableNRs -dumpversiontrs(\d+\.\d+\.\d+)i( tdistutils.versionRtdistutils.spawnRtreR/tpopenRwRxtsearchtgroupR-( RRRtgcc_exetoutt out_stringtresultRR((s./usr/lib64/python2.7/distutils/emxccompiler.pyR&s     (t__doc__t __revision__R/RsR+tdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRRpRRRR|RzRR(((s./usr/lib64/python2.7/distutils/emxccompiler.pyts$ 4PKvr]}Jdist.pycnu[ {fc@s&dZdZddlZddlZddlZddlmZyddlZWnek rie ZnXddl m Z m Z m Z mZddlmZmZddlmZmZmZddlmZdd lmZd Zejd Zd fd YZdfdYZdZdS(s}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. s$Id$iN(tmessage_from_file(tDistutilsOptionErrortDistutilsArgErrortDistutilsModuleErrortDistutilsClassError(t FancyGetoptttranslate_longopt(t check_environt strtoboolt rfc822_escape(tlog(tDEBUGsutf-8s^[a-zA-Z]([a-zA-Z0-9_]*)$t DistributioncBseZdZd]d^d_d`dbgZdZdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwgZed<eZidd6Z dad=Z d>Z dadad?d@Z dAZ dadBZdCZdDZdEZdFZddgdGZdHZdIZdJZdKZdLZdMZddNZdadOZdPdQZejdRZdSZ dTZ!dUZ"dVZ#dWZ$dXZ%dYZ&dZZ'd[Z(d\Z)RS(xsThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. tverbosetvsrun verbosely (default)itquiettqs!run quietly (turns verbosity off)sdry-runtnsdon't actually do anythingthelpthsshow detailed help messages no-user-cfgs-ignore pydistutils.cfg in your home directorysCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package s help-commandsslist all available commandstnamesprint package nametversiontVsprint package versiontfullnamesprint -tauthorsprint the author's names author-emails print the author's email addresst maintainersprint the maintainer's namesmaintainer-emails$print the maintainer's email addresstcontacts7print the maintainer's name if known, else the author'ss contact-emails@print the maintainer's email address if known, else the author'sturlsprint the URL for this packagetlicenses print the license of the packagetlicencesalias for --licenset descriptionsprint the package descriptionslong-descriptions"print the long package descriptiont platformssprint the list of platformst classifierssprint the list of classifierstkeywordssprint the list of keywordstprovidess+print the list of packages/modules providedtrequiress+print the list of packages/modules requiredt obsoletess0print the list of packages/modules made obsoletecCst|dS(Ni(R(tx((s&/usr/lib64/python2.7/distutils/dist.pytwtcCsid|_d|_d|_x!|jD]}t||dq%Wt|_x:|jjD],}d|}t||t|j|qXWi|_ d|_ d|_ d|_ i|_g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|jd}|dk r|d=xY|j D]H\}}|j!|}x*|j D]\} } d| f|| Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. iNis(no description available)( RR]RR3RiRIR~RRR( RXRtRRRRtrvRR((s&/usr/lib64/python2.7/distutils/dist.pytget_command_lists(      cCs|j}t|ts|dkr-d}ng|jdD]}|dkr=|j^q=}d|kr|jddn||_n|S(s9Return a list of packages from which commands are loaded.R'Rsdistutils.commandiN(R5RRR4RlRtinsert(RXtpkgstpkg((s&/usr/lib64/python2.7/distutils/dist.pytget_command_packagess   4  cCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk rvq)nXyt||}Wn'tk rt d|||fnX||j|<|SWt d|dS(soReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. s%s.%ss3invalid command '%s' (no class '%s' in module '%s')sinvalid command '%s'N( R3RIRt __import__RNRzt ImportErrorR2RR(RXR]Rtpkgnamet module_namet klass_nametmodule((s&/usr/lib64/python2.7/distutils/dist.pyRs(     cCs|jj|}| r|rtr9|jd|n|j|}||}|j|R(RX((s&/usr/lib64/python2.7/distutils/dist.pythas_c_librariesscCs|jp|jS(N(RR(RX((s&/usr/lib64/python2.7/distutils/dist.pyt has_modulesscCs|jot|jdkS(Ni(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pyt has_headersscCs|jot|jdkS(Ni(RDR(RX((s&/usr/lib64/python2.7/distutils/dist.pyt has_scriptsscCs|jot|jdkS(Ni(RER(RX((s&/usr/lib64/python2.7/distutils/dist.pythas_data_filesscCs$|jo#|j o#|j S(N(RRR(RX((s&/usr/lib64/python2.7/distutils/dist.pytis_pures  (R Rsrun verbosely (default)i(RRs!run quietly (turns verbosity off)(sdry-runRsdon't actually do anything(RRsshow detailed help messageN(s no-user-cfgNs-ignore pydistutils.cfg in your home directory(s help-commandsNslist all available commands(RNsprint package name(RRsprint package version(RNsprint -(RNsprint the author's name(s author-emailNs print the author's email address(RNsprint the maintainer's name(smaintainer-emailNs$print the maintainer's email address(RNs7print the maintainer's name if known, else the author's(s contact-emailNs@print the maintainer's email address if known, else the author's(RNsprint the URL for this package(RNs print the license of the package(RNsalias for --license(RNsprint the package description(slong-descriptionNs"print the long package description(RNsprint the list of platforms(R Nsprint the list of classifiers(R!Nsprint the list of keywords(R"Ns+print the list of packages/modules provided(R#Ns+print the list of packages/modules required(R$Ns0print the list of packages/modules made obsolete(*Rt __module__t__doc__R4RRRRR-RReRKRsRRRRRRWRRRRRRRRRRR tINFORkRRRRRRRRRR(((s&/usr/lib64/python2.7/distutils/dist.pyR "s         0 . C ]  1 (  ! # '  + )        R/cBs+eZdZd3Zd4dZdZdZdZdZ dZ dZ dZ dZ dZdZd Zd!Zd"Zd#Zd$Zd%Zd&ZeZd'Zd(Zd)Zd*Zd+Zd,Zd-Zd.Zd/Z d0Z!d1Z"d2Z#RS(5s]Dummy class to hold the distribution meta-data: name, version, author, and so forth. RRRt author_emailRtmaintainer_emailRRRtlong_descriptionR!RRRt contact_emailR t download_urlR"R#R$cCs|dk r"|jt|nd|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_dS(N(R4t read_pkg_filetopenRRRR RR RRRR R!RR RR"R#R$(RXRx((s&/usr/lib64/python2.7/distutils/dist.pyRes&                 cst|fd}fd}d}|d|_|d|_|d|_|d|_d|_|d|_d|_|d |_ |d |_ d kr|d |_ n d|_ |d |_ |d|_d kr|d j d|_n|d|_|d|_|dkru|d|_|d|_|d|_nd|_d|_d|_dS(s-Reads the metadata values from a file object.cs|}|dkrdS|S(NtUNKNOWN(R4(RR(Rb(s&/usr/lib64/python2.7/distutils/dist.pyt _read_fields  cs&j|d}|gkr"dS|S(N(tget_allR4(Rtvalues(Rb(s&/usr/lib64/python2.7/distutils/dist.pyt _read_list#s smetadata-versionRRtsummaryRs author-emails home-pageRs download-urlRR!Rtplatformt classifiers1.1R#R"R$N(RRRRRR4RR R RRRR RlR!RR R#R"R$(RXtfileRRtmetadata_version((Rbs&/usr/lib64/python2.7/distutils/dist.pyRs:          cCsAttjj|dd}z|j|Wd|jXdS(s7Write the PKG-INFO file into the release tree. sPKG-INFOtwN(RRwRxR|twrite_pkg_filetclose(RXtbase_dirtpkg_info((s&/usr/lib64/python2.7/distutils/dist.pytwrite_pkg_infoMscCsd}|js3|js3|js3|js3|jr<d}n|j|d||j|d|j|j|d|j|j|d|j|j|d|j |j|d|j |j|d |j |j|d |j |jr |j|d |jnt |j}|j|d |d j|j}|rv|j|d|n|j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS(s9Write the PKG-INFO format data to a file object. s1.0s1.1sMetadata-VersiontNametVersiontSummarys Home-pagetAuthors Author-emailtLicenses Download-URLt DescriptionRtKeywordstPlatformt ClassifiertRequirestProvidest ObsoletesN(R"R#R$R Rt _write_fieldtget_namet get_versiontget_descriptiontget_urlt get_contacttget_contact_emailt get_licenseR tget_long_descriptionR|t get_keywordst _write_listt get_platformstget_classifierst get_requirest get_providest get_obsoletes(RXRRt long_descR!((s&/usr/lib64/python2.7/distutils/dist.pyRVs0  cCs$|jd||j|fdS(Ns%s: %s (RPt _encode_field(RXRRR((s&/usr/lib64/python2.7/distutils/dist.pyR.xscCs(x!|D]}|j|||qWdS(N(R.(RXRRRR((s&/usr/lib64/python2.7/distutils/dist.pyR8{s cCs6|dkrdSt|tr,|jtSt|S(N(R4RtunicodetencodetPKG_INFO_ENCODINGR(RXR((s&/usr/lib64/python2.7/distutils/dist.pyR?s   cCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR/scCs |jp dS(Ns0.0.0(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR0scCsd|j|jfS(Ns%s-%s(R/R0(RX((s&/usr/lib64/python2.7/distutils/dist.pyt get_fullnamescCs|j|jpdS(NR(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pyt get_authorscCs |jp dS(NR(R (RX((s&/usr/lib64/python2.7/distutils/dist.pytget_author_emailscCs|j|jpdS(NR(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pytget_maintainerscCs |jp dS(NR(R (RX((s&/usr/lib64/python2.7/distutils/dist.pytget_maintainer_emailscCs(|j|jp'|j|jp'dS(NR(R?RR(RX((s&/usr/lib64/python2.7/distutils/dist.pyR3scCs|jp|jpdS(NR(R R (RX((s&/usr/lib64/python2.7/distutils/dist.pyR4scCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR2scCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR5scCs|j|jpdS(NR(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR1scCs|j|jpdS(NR(R?R (RX((s&/usr/lib64/python2.7/distutils/dist.pyR6scCs |jp gS(N(R!(RX((s&/usr/lib64/python2.7/distutils/dist.pyR7scCs|jpdgS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR9scCs |jp gS(N(R (RX((s&/usr/lib64/python2.7/distutils/dist.pyR:scCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pytget_download_urlscCs |jp gS(N(R#(RX((s&/usr/lib64/python2.7/distutils/dist.pyR;scCs:ddl}x|D]}|jj|qW||_dS(Ni(tdistutils.versionpredicatetversionpredicatetVersionPredicateR#(RXRRtR((s&/usr/lib64/python2.7/distutils/dist.pyt set_requiress  cCs |jp gS(N(R"(RX((s&/usr/lib64/python2.7/distutils/dist.pyR<scCsYg|D]}|j^q}x*|D]"}ddl}|jj|q&W||_dS(Ni(RRIRJtsplit_provisionR"(RXRRRt((s&/usr/lib64/python2.7/distutils/dist.pyt set_providess   cCs |jp gS(N(R$(RX((s&/usr/lib64/python2.7/distutils/dist.pyR=scCs:ddl}x|D]}|jj|qW||_dS(Ni(RIRJRKR$(RXRRtR((s&/usr/lib64/python2.7/distutils/dist.pyt set_obsoletess  (RRRR RR RRRR R!RRRRRR RR"R#R$N($RRR R1R4ReRR!RR.R8R?R/R0RCRDRERFRGR3R4R2R5t get_licenceR1R6R7R9R:RHR;RLR<RNR=RO(((s&/usr/lib64/python2.7/distutils/dist.pyR/sN  4 "                        cCs/g}x"|D]}|j|dd!q W|S(sConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. ii(R~(R)t new_optionst help_tuple((s&/usr/lib64/python2.7/distutils/dist.pyRs ( R t __revision__RNRwtretemailRRLRR4tdistutils.errorsRRRRtdistutils.fancy_getoptRRtdistutils.utilRRR RtR tdistutils.debugR RBtcompileRR R/R(((s&/usr/lib64/python2.7/distutils/dist.pyts($  "PKvr]ho debug.pyonu[ {fc@s(ddlZdZejjdZdS(iNs$Id$tDISTUTILS_DEBUG(tost __revision__tenvirontgettDEBUG(((s'/usr/lib64/python2.7/distutils/debug.pyts PKvr]by extension.pycnu[ {fc@sdZdZddlZddlZddlZddlTyddlZWnek rcdZnXdddYZ dZ dS( smdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.s$Id$iN(t*t ExtensioncBs>eZdZdddddddddddddd ZRS(s4 Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. cKst|tkstdt|tkrRtt|tgt|ks^td||_||_|pyg|_|pg|_ |pg|_ |pg|_ |pg|_ |pg|_ | pg|_| pg|_| pg|_| pg|_| pg|_|pg|_||_t|r|j}|jtt|}dtj|d}tdk rtj|qtjj|dndS(Ns'name' must be a strings#'sources' must be a list of stringssUnknown Extension options: s, s ( ttypet StringTypetAssertionErrortListTypetmaptlentnametsourcest include_dirst define_macrost undef_macrost library_dirst librariestruntime_library_dirst extra_objectstextra_compile_argstextra_link_argstexport_symbolst swig_optstdependstlanguagetkeystsorttreprtstringtjointwarningstNonetwarntsyststderrtwrite(tselfRR R R R R RRRRRRRRRtkwtLtmsg((s+/usr/lib64/python2.7/distutils/extension.pyt__init__Zs6%       N(t__name__t __module__t__doc__RR&(((s+/usr/lib64/python2.7/distutils/extension.pyRs<c Csddlm}m}m}ddlm}ddlm}||}||ddddddd dd d}zag}xT|j} | dkrPn|j | rq~| d | dkod knr|j d | q~qn|| |} || } | d } t | g} d} x| dD]}| dk rZ| j |d} q/ntjj|d}|d d!}|d}|d(kr| jj |q/|dkr| jj |q/|dkr0tj|d}|dkr| jj |dfq| jj |d |!||dfq/|dkrO| jj |q/|dkrn| jj |q/|dkr| jj |q/|dkr| jj |q/|dkr| jj |q/|dkr| j} q/|dkr| j} q/|d kr| j} q/|d!krD| jj ||s| j} qq/|d kr\| j} q/|d!kr| jj ||s| j} qq/|d)kr| jj |q/|j d'|q/W|j | q~WWd|jX|S(*Ni(tparse_makefiletexpand_makefile_varst _variable_rx(tTextFile(t split_quotedtstrip_commentsit skip_blankst join_linest lstrip_wst rstrip_wsiRs'%s' lines not handled yetis.cs.ccs.cpps.cxxs.c++s.ms.mms-Is-Dt=s-Us-Cs-ls-Ls-Rs-rpaths-Xlinkers -Xcompilers-us.as.sos.sls.os.dylibsunrecognized argument '%s'(s.cs.ccs.cpps.cxxs.c++s.ms.mm(s.as.sos.sls.os.dylib(tdistutils.sysconfigR*R+R,tdistutils.text_fileR-tdistutils.utilR.treadlineRtmatchRRtappendtostpathtsplitextR R RtfindR R RRR RRRtclose(tfilenameR*R+R,R-R.tvarstfilet extensionstlinetwordstmoduletexttappend_next_wordtwordtsuffixtswitchtvaluetequals((s+/usr/lib64/python2.7/distutils/extension.pytread_setup_files    $                          (( R)t __revision__R;RRttypesRt ImportErrorRRRN(((s+/usr/lib64/python2.7/distutils/extension.pyts$   qPKvr]sL^^ file_util.pyonu[ {fc@sdZdZddlZddlmZddlmZidd6dd6d d 6Zdd Z dddddddZ dddZ dZ dS(sFdistutils.file_util Utility functions for operating on single files. s$Id$iN(tDistutilsFileError(tlogtcopyings hard linkingthardssymbolically linkingtsymiicCsd}d}zyt|d}Wn2tjk rV\}}td||fnXtjj|rytj|Wqtjk r\}}td||fqXnyt|d}Wn2tjk r\}}td||fnXxy|j|}Wn2tjk rD\}}td||fnX|sOPny|j |Wqtjk r\}}td||fqXqWWd|r|j n|r|j nXdS( s5Copy the file 'src' to 'dst'. Both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. trbscould not open '%s': %sscould not delete '%s': %stwbscould not create '%s': %sscould not read from '%s': %sscould not write to '%s': %sN( tNonetopentosterrorRtpathtexiststunlinktreadtwritetclose(tsrctdstt buffer_sizetfsrctfdstterrnoterrstrtbuf((s+/usr/lib64/python2.7/distutils/file_util.pyt_copy_file_contentssF  iicCsddlm}ddlm} m} m} m} tjj |sWt d|ntjj |r|} tjj |tjj |}ntjj|} |r||| r|dkrtjd|n|dfSyt|}Wn!tk rtd|nX|dkrxtjj |tjj |kr_tjd ||| qxtjd |||n|r|dfS|d krtjj|otjj||sCytj|||dfSWqtk rqXqCnP|d krCtjj|o#tjj||sCtj|||dfSnt|||s\|rtj|}|rtj||| || fn|rtj|| || qn|dfS( sCopy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is copied there with the same name; otherwise, it must be a filename. (If the file exists, it will be ruthlessly clobbered.) If 'preserve_mode' is true (the default), the file's mode (type and permission bits, or whatever is analogous on the current platform) is copied. If 'preserve_times' is true (the default), the last-modified and last-access times are copied as well. If 'update' is true, 'src' will only be copied if 'dst' does not exist, or if 'dst' does exist but is older than 'src'. 'link' allows you to make hard links (os.link) or symbolic links (os.symlink) instead of copying: set it to "hard" or "sym"; if it is None (the default), files are copied. Don't set 'link' on systems that don't support it: 'copy_file()' doesn't check if hard or symbolic linking is available. If hardlink fails, falls back to _copy_file_contents(). Under Mac OS, uses the native file copy function in macostools; on other systems, uses '_copy_file_contents()' to copy file contents. Return a tuple (dest_name, copied): 'dest_name' is the actual name of the output file, and 'copied' is true if the file was copied (or would have been copied, if 'dry_run' true). i(tnewer(tST_ATIMEtST_MTIMEtST_MODEtS_IMODEs4can't copy '%s': doesn't exist or not a regular fileis"not copying %s (output up-to-date)is&invalid value '%s' for 'link' arguments %s %s -> %sRR(tdistutils.dep_utilRtstatRRRRR R tisfileRtisdirtjointbasenametdirnameRtdebugt _copy_actiontKeyErrort ValueErrortinfoR tsamefiletlinktOSErrortsymlinkRtutimetchmod(RRt preserve_modetpreserve_timestupdateR,tverbosetdry_runRRRRRtdirtactiontst((s+/usr/lib64/python2.7/distutils/file_util.pyt copy_fileGsT""$    $  '   '   ! c Csddlm}m}m}m}m}ddl} |dkrVtjd||n|r`|S||st d|n||rt j j |||}n%||rt d||fn|||st d||fnd } yt j ||WnMt jk rb\} } | | jkrFd} qct d ||| fnX| rt||d |yt j|Wqt jk r\} } yt j|Wnt jk rnXt d d |||| fqXn|S(s)Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? i(R R!R"R$R%Nismoving %s -> %ss#can't move '%s': not a regular files0can't move '%s': destination '%s' already existss2can't move '%s': destination '%s' not a valid pathiscouldn't move '%s' to '%s': %sR4s+couldn't move '%s' to '%s' by copy/delete: sdelete '%s' failed: %s(tos.pathR R!R"R$R%RRR*RR R R#trenameR tEXDEVR9R ( RRR4R5R R!R"R$R%Rtcopy_ittnumtmsg((s+/usr/lib64/python2.7/distutils/file_util.pyt move_filesP (      cCsGt|d}z&x|D]}|j|dqWWd|jXdS(s{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. tws N(RRR(tfilenametcontentstftline((s+/usr/lib64/python2.7/distutils/file_util.pyt write_files  i@( t__doc__t __revision__R tdistutils.errorsRt distutilsRRR'RR9R@RF(((s+/usr/lib64/python2.7/distutils/file_util.pyts    5 bs  PKvr]Arcommand/upload.pyonu[ {fc@sdZddlZddlZddlZddlmZmZmZddlm Z ddl Z ddl Z ddl mZddlmZmZddlmZddlmZdd lmZd efd YZdS( s`distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to PyPI).iN(turlopentRequestt HTTPError(tstandard_b64encode(tmd5(tDistutilsErrortDistutilsOptionError(t PyPIRCCommand(tspawn(tlogtuploadcBsUeZdZejd d gZejdgZdZdZd Zd Z RS( supload binary package to PyPItsigntsssign files to upload using gpgs identity=tisGPG identity used to sign filescCs>tj|d|_d|_d|_t|_d|_dS(Nti( Rtinitialize_optionstusernametpasswordt show_responsetFalseR tNonetidentity(tself((s0/usr/lib64/python2.7/distutils/command/upload.pyRs      cCstj||jr/|j r/tdn|j}|ikr~|d|_|d|_|d|_|d|_ n|j r|j jr|j j|_ndS(Ns.Must use --sign for --identity to have meaningRRt repositorytrealm( Rtfinalize_optionsRR Rt _read_pypircRRRRt distribution(Rtconfig((s0/usr/lib64/python2.7/distutils/command/upload.pyR&s       cCsX|jjs!d}t|nx0|jjD]"\}}}|j|||q.WdS(NsHMust create and upload files in one command (e.g. setup.py sdist upload)(Rt dist_filesRt upload_file(Rtmsgtcommandt pyversiontfilename((s0/usr/lib64/python2.7/distutils/command/upload.pytrun8s  c"Cs`tj|j\}}}}}} |s6|s6| rLtd|jn|dEkrktd|n|jrddd|g} |jrd|jg| d d +nt| d |jnt|d } z| j} Wd| j X|j j } id d 6dd6| j d6| j d6tjj|| fd6|d6|d6t| jd6dd6| jd6| jd6| jd6| jd6| jd6| jd6| jd6| jd6| jd 6| jd!6| jd"6| jd#6| jd$6}d%}|d&krRt j!\}}}|rwd'||f}qwn%|d(krwd)t j d*d+}n||d,<|jrtjj|d-t|d-jf|d.|}yjt2|}|j3}|j4}|j5rd?j6d@dA|jd@dAf} |j,| t-j.nWnVt7j8k r}!|j,t/|!t-j9n%t:k r}!|!j;}|!j4}nX|dBkr-|j,dC||ft-j.n/dD||f} |j,| t-j9t<| dS(FNsIncompatible url %sthttpthttpssunsupported schema tgpgs --detach-signs-as --local-useritdry_runtrbt file_uploads:actiont1tprotcol_versiontnametversiontcontenttfiletypeR!t md5_digests1.0tmetadata_versiontsummaryt home_pagetauthort author_emailtlicenset descriptiontkeywordstplatformt classifierst download_urltprovidestrequirest obsoletesRt bdist_rpmsbuilt for %s %st bdist_dumbs built for %stterseitcomments.asct gpg_signaturesBasic t:s3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- s;filename="%s"is+ Content-Disposition: form-data; name="%s"s sSubmitting %s to %ss multipart/form-data; boundary=%ss Content-typesContent-lengtht Authorizationtdatatheaderss t-iKisServer response (%s): %ssUpload failed (%s): %s(R$R%(=turlparseRtAssertionErrorR RRR'topentreadtcloseRtmetadatatget_namet get_versiontostpathtbasenameRt hexdigesttget_descriptiontget_urlt get_contacttget_contact_emailt get_licencetget_long_descriptiont get_keywordst get_platformstget_classifierstget_download_urlt get_providest get_requirest get_obsoletesR9tdistRRRtStringIOtitemst isinstancetlistttupletwritetgetvaluetannounceR tINFOtstrtlenRRtgetcodeRRtjointsocketterrortERRORRtcodeR("RR R!R"tschematnetlocturltparamstqueryt fragmentstgpg_argstfR.tmetaRFRBRbR-tidtauthtboundaryt sep_boundaryt end_boundarytbodytkeytvaluetfnRGtrequesttresulttstatustreasonRte((s0/usr/lib64/python2.7/distutils/command/upload.pyR@s$                                             &    (R R ssign files to upload using gpg(s identity=R sGPG identity used to sign files( t__name__t __module__R7Rt user_optionstboolean_optionsRRR#R(((s0/usr/lib64/python2.7/distutils/command/upload.pyR s    (t__doc__RQRpR9turllib2RRRtbase64RRIt cStringIORcthashlibRtdistutils.errorsRRtdistutils.coreRtdistutils.spawnRt distutilsR R (((s0/usr/lib64/python2.7/distutils/command/upload.pyts     PKvr])U] command/__init__.pycnu[ {fc@sOdZdZdddddddd d d d d dddddddgZdS(s\distutils.command Package containing implementation of all the standard Distutils commands.s$Id$tbuildtbuild_pyt build_extt build_clibt build_scriptstcleantinstallt install_libtinstall_headerstinstall_scriptst install_datatsdisttregistertbdistt bdist_dumbt bdist_rpmt bdist_wininsttuploadtcheckN(t__doc__t __revision__t__all__(((s2/usr/lib64/python2.7/distutils/command/__init__.pyts(PKvr]command/build_clib.pyonu[ {fc@s{dZdZddlZddlmZddlmZddlmZddl m Z dZ d efd YZ dS( sdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.s$Id$iN(tCommand(tDistutilsSetupError(tcustomize_compiler(tlogcCsddlm}|dS(Ni(tshow_compilers(tdistutils.ccompilerR(R((s4/usr/lib64/python2.7/distutils/command/build_clib.pyRst build_clibcBseZdZdddddgZdd gZdddefgZdZdZ dZ dZ dZ dZ dZRS(s/build C/C++ libraries used by Python extensionss build-clib=tbs%directory to build C/C++ libraries tos build-temp=tts,directory to put temporary build by-productstdebugtgs"compile with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s compiler=tcsspecify the compiler types help-compilerslist available compilerscCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_ dS(Ni( tNoneRt build_tempt librariest include_dirstdefinetundefR R tcompiler(tself((s4/usr/lib64/python2.7/distutils/command/build_clib.pytinitialize_options6s        cCs|jdddd d d |jj|_|jrG|j|jn|jdkrn|jjpeg|_nt|jtr|jjt j |_ndS( NtbuildRRRR R (RR(RR(RR(R R (R R ( tset_undefined_optionst distributionRtcheck_library_listRRt isinstancetstrtsplittostpathsep(R((s4/usr/lib64/python2.7/distutils/command/build_clib.pytfinalize_optionsFs  cCs|js dSddlm}|d|jd|jd|j|_t|j|jdk rv|jj |jn|j dk rx-|j D]\}}|jj ||qWn|j dk rx$|j D]}|jj |qWn|j|jdS(Ni(t new_compilerRtdry_runR (RRR!RR"R RRRtset_include_dirsRt define_macroRtundefine_macrotbuild_libraries(RR!tnametvaluetmacro((s4/usr/lib64/python2.7/distutils/command/build_clib.pytrun_s    cCst|tstdnx|D]}t|t rVt|dkrVtdn|\}}t|tstddnd|kstjdkrtj|krtdd|d nt|ts"td d q"q"Wd S( s`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. s+'libraries' option must be a list of tuplesis*each element of 'libraries' must a 2-tuples+first element of each tuple in 'libraries' s#must be a string (the library name)t/sbad library name '%s': s$may not contain directory separatorsis,second element of each tuple in 'libraries' s!must be a dictionary (build info)N( RtlistRttupletlenRRtseptdict(RRtlibR't build_info((s4/usr/lib64/python2.7/distutils/command/build_clib.pyRws*   "   *cCs>|js dSg}x$|jD]\}}|j|qW|S(N(RRtappend(Rt lib_namestlib_nameR2((s4/usr/lib64/python2.7/distutils/command/build_clib.pytget_library_namess  cCs|j|jg}xe|jD]Z\}}|jd}|dks]t|ttf rmtd|n|j|q W|S(Ntsourcessfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames( RRtgetRRR,R-Rtextend(Rt filenamesR5R2R7((s4/usr/lib64/python2.7/distutils/command/build_clib.pytget_source_filess" c Csx|D]\}}|jd}|dksDt|ttf r\tddd|nt|}tjd||jd}|jd}|jj |d|j d|d|d |j }|jj ||d|j d |j qWdS( NR7s&in 'libraries' option (library '%s'), s&'sources' must be present and must be sa list of source filenamessbuilding '%s' librarytmacrosRt output_dirR (R8RRR,R-RRtinfoRtcompileRR tcreate_static_libR(RRR5R2R7R<Rtobjects((s4/usr/lib64/python2.7/distutils/command/build_clib.pyR&s$"    (s build-clib=Rs%directory to build C/C++ libraries to(s build-temp=Rs,directory to put temporary build by-products(R R s"compile with debugging information(R R s2forcibly build everything (ignore file timestamps)(s compiler=R sspecify the compiler typeN(t__name__t __module__t descriptiont user_optionstboolean_optionsRRt help_optionsRR R*RR6R;R&(((s4/usr/lib64/python2.7/distutils/command/build_clib.pyRs*      $ ( t__doc__t __revision__Rtdistutils.coreRtdistutils.errorsRtdistutils.sysconfigRt distutilsRRR(((s4/usr/lib64/python2.7/distutils/command/build_clib.pyts  PKvr]q+gcommand/install_headers.pyonu[ {fc@s6dZdZddlmZdefdYZdS(sdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.s$Id$i(tCommandtinstall_headerscBsPeZdZd d gZdgZdZdZd Zd Zd Z RS(sinstall C/C++ header filess install-dir=tds$directory to install header files totforcetfs-force installation (overwrite existing files)cCsd|_d|_g|_dS(Ni(tNonet install_dirRtoutfiles(tself((s9/usr/lib64/python2.7/distutils/command/install_headers.pytinitialize_optionss  cCs|jddddS(NtinstallRRR(RR(RR(tset_undefined_options(R((s9/usr/lib64/python2.7/distutils/command/install_headers.pytfinalize_optionss cCsf|jj}|sdS|j|jx9|D]1}|j||j\}}|jj|q-WdS(N(t distributiontheaderstmkpathRt copy_fileRtappend(RRtheadertoutt_((s9/usr/lib64/python2.7/distutils/command/install_headers.pytrun#s  cCs|jjpgS(N(R R(R((s9/usr/lib64/python2.7/distutils/command/install_headers.pyt get_inputs-scCs|jS(N(R(R((s9/usr/lib64/python2.7/distutils/command/install_headers.pyt get_outputs0s(s install-dir=Rs$directory to install header files to(RRs-force installation (overwrite existing files)( t__name__t __module__t descriptiont user_optionstboolean_optionsR R RRR(((s9/usr/lib64/python2.7/distutils/command/install_headers.pyR s     N(t__doc__t __revision__tdistutils.coreRR(((s9/usr/lib64/python2.7/distutils/command/install_headers.pytsPKvr]?^]]command/bdist_msi.pycnu[ {fc@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZd efd YZdefdYZdS(s# Implements the bdist_msi command. iN(tget_python_version(tCommand(t remove_tree(t StrictVersion(tDistutilsOptionError(tlog(t get_platform(tschematsequencettext(t DirectorytFeaturetDialogtadd_datatPyDialogcBsVeZdZdZdZdddZdddZddd Zd ZRS( sDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs=tj|||jd}|jdd||jddS(sbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)i$t BottomLineiN(R t__init__thtlinetw(tselftargstkwtruler((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs c Cs'|jddddddd|dS( s,Set the title text of the dialog at the top.tTitleii i@i<is{\VerdanaBold10}%sN(R (Rttitle((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyR$stBackic Cs>|rd}nd}|j|d|jddd|||S(sAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatediiiii8i(t pushbuttonR(RRtnexttnametactivetflags((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytback+s tCancelc Cs>|rd}nd}|j|d|jddd|||S(sAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatediii0ii8i(RR(RRRRRR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytcancel6s tNextc Cs>|rd}nd}|j|d|jddd|||S(sAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatediiiii8i(RR(RRRRRR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRAs c Cs:|j|t|j|d|jdddd||S(sAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatediii8ii(RtintRR(RRRRtxpos((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytxbuttonLs( t__name__t __module__t__doc__RRR R"RR&(((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs    t bdist_msicBs=eZdZdedfdddefdddd fd ed d fd ddfdddfdddfdedfdedfdedfg Zdd ddgZddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/gZd0Zd1Z d2Z d3Z d4Z d5Z d6Zd7Zd8ZRS(9s7create a Microsoft Installer (.msi) binary distributions bdist-dir=s1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archivestarget-version=s!require a specific python versions on the target systemsno-target-compiletcs/do not compile .py to .pyc on the target systemsno-target-optimizetos;do not compile .py to .pyo (optimized) on the target systems dist-dir=tds-directory to put final built distributions ins skip-builds2skip rebuilding everything (for testing/debugging)sinstall-script=sUbasename of installation script to be run after installation or before deinstallationspre-install-script=s{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributions2.0s2.1s2.2s2.3s2.4s2.5s2.6s2.7s2.8s2.9s3.0s3.1s3.2s3.3s3.4s3.5s3.6s3.7s3.8s3.9tXcCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS(Ni( tNonet bdist_dirt plat_namet keep_temptno_target_compiletno_target_optimizettarget_versiontdist_dirt skip_buildtinstall_scripttpre_install_scripttversions(R((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytinitialize_options~s          cCsi|jdd |jdkrL|jdj}tjj|d|_nt}|j rz|j j rz||_ n|j r|j g|_ |j r|j j r|j |krtd|fqnt|j|_ |jdd d |jr tdn|jr\xF|j jD]%}|jtjj|kr Pq q Wtd|jnd|_dS( NtbdistR9tmsisMtarget version can only be %s, or the '--skip-build' option must be specifiedR8R3s5the pre-install-script feature is not yet implementeds(install_script '%s' not found in scripts(R9R9(R8R8(R3R3(tset_undefined_optionsR2R1tget_finalized_commandt bdist_basetostpathtjoinRR7t distributionthas_ext_modulesR<R9Rtlistt all_versionsR;R:tscriptstbasenametinstall_script_key(RRBt short_versiontscript((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytfinalize_optionss8        cCs|js|jdn|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|s|jst dt j dd!}nd |j|f}|jd}tjj|jd ||_ntjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|rtj |n|jj!}|j"} | s|j#} n| sd } n|j$} dt%| j } |jj}|j r5d|j |f} n d|} t&j'|t(| t&j)| | |_*t&j+|j*t,d| fg} |j-p|j.}|r| j/d|fn|j0r| j/d|j0fn| rt1|j*d| n|j2|j3|j4|j5|j*j6t7|jdrid|j pJd|f}|jj8j/|n|j9st:|jd|j;ndS(Ntbuildtinstalltreinit_subcommandsiit install_libs Should have already checked thisis.%s-%stlibsinstalling to %stPURELIBtUNKNOWNs%d.%d.%ds Python %s %ss Python %st DistVersiont ARPCONTACTtARPURLINFOABOUTtPropertyt dist_filesR*tanytdry_run(<R9t run_commandtreinitialize_commandR2tprefixtwarn_dirtcompiletoptimizeRFRGR7tAssertionErrortsystversionR3RARCRDREt build_baset build_libRtinfotensure_finalizedtinserttruntmkpathR8t get_fullnametget_installer_filenametabspathtexiststunlinktmetadatatauthort maintainert get_versionRtmsilibt init_databaseRtgen_uuidtdbt add_tablesRt author_emailtmaintainer_emailtappendturlR tadd_find_pythont add_filest add_scriptstadd_uitCommitthasattrR[R4RR](RRQRSR7tplat_specifierRPtfullnametinstaller_nameRsRtRftsversiont product_nametpropstemailttup((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRls~        %                  c Cs|j}tjd}tjj|j}t||d|dd}t |ddddddd}||d fg}x|j |j gD]}d|}d|} } d} ||j krd } d } nd |} d} t || | | d| d|}t|||||| }|j |||fqW|j i}x|D]\}}}|g}xg|r|j}xNtj|jD]:}tjj|j|}tjj|r d |j||f}||} t||||| |}|j |q|js.|j|j|dn||kr|j|}||<||jkr|jr|td|nd||_qq||}t|jd|||j|d|jfgqWqiW|j qNW|j|dS(Nt distfilest TARGETDIRt SourceDirtPythont Everythingiit directorytsPython from another locationisPython %s from registrys%s|%ssMultiple files with name %ss[#%s]t DuplicateFile(RzRwtCABRCRDRpR2R R1R R<t other_versionR~RtpoptlistdirtabsoluteREtisdirt make_shortt componenttstart_componenttlogicaltadd_fileR:RLRR tcommit(RRztcabtrootdirtroottftitemsRfttargetRtdefaulttdescRtleveltdirtseentfeaturettodotfiletafiletshorttnewdirtkey((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs\    !          +c Csd}x|jD]}d|}d|}d|}d|}d|}d|}d|} d |} d |} d |} tjrd } nd } t|jd|d |d| f|d|d| fgt|jd||f||fgt|jd|d!| d|df| d"| d|df| d#| d| dfgt|jd|||f| ||df| d|d fgt|jd|||f| ||df| d|d fgt|jdd|dd|fg|d7}|dkstqWdS($ssAdds code to the installer to compute the location of Python. Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the registry for each version of Python. Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined, else from PYTHON.MACHINE.X.Y. Properties PYTHONX.Y will be set to TARGETDIRX.Y\python.exeis)SOFTWARE\Python\PythonCore\%s\InstallPathspython.machine.s python.user.sPYTHON.MACHINE.s PYTHON.USER.tPythonFromMachinetPythonFromUsert PythonExeRtPYTHONiit RegLocatorit AppSearcht CustomActioni3it[t]s ]\python.exetInstallExecuteSequencetInstallUISequencet ConditionRis NOT TARGETDIRiiNii3i3i3(R<RwtWin64R RzR1Rd(Rtstarttvert install_patht machine_regtuser_regt machine_propt user_proptmachine_actiont user_actiont exe_actionttarget_dir_proptexe_proptType((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyREsJ                       cCsQ|jrd}x|j|jgD]l}d|}d|}t|jd|d||jfgt|jd|d||fg|d7}q#Wn|jrMtjj |j d }t |d }|j d |j t |jj |jt|jd d tj|fgt|jddgt|jddgndS(Nisinstall_script.RRi2Rs &Python%s=3ispreinstall.batRsrem =""" %1 %0 exit """ tBinaryt PreInstallis NOT Installedi(RiRN(Rs NOT Installedi(R:R<RR RzRLR;RCRDRER2topentwritetreadtcloseRwRR1(RRRtinstall_actionRtscriptfnR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyR{s,            cCsA|j}d}}d}d}d}d}d}t|dddddddgt|dddddgt|ddddddgt|d.tjt|d/tjt|d0||||||d1d1d1 } | jd2| jd3d1d4d| j d5d6d4d| jd7d8d9d:d;d<d=| jd>d8d?d:d@d<dA| j d1d5dBd1} | j dCdDt|dE||||||d1d1d1 } | jdF| jd3d1d4d| j d5d6d4d| jd7d8d9d:d;d<dG| jd>d8d?d:d@d<dA| j d1d5dBd1} | j dCdDt|dH||||||d1d1d1 } | jdI| jd3d1d4d| j d5d6d4d| jdJd8dKd:d@d<dA| j d1d5dBd1} | j dCdLt|dM||||dN|dOdOdOdPt } | jdQd8dRdSd8d<dT| jdJd@dUdVd@d<dW| jdXd@dYdZddd[| j d\d]d@d^dZd_d`daddd | jdDdbdBdD} | j dCdD| j dbdOdBdb} | j dCdb| j dOdDdBdO} | j dCdOt|d dddZdcdd|dedd }|jdedddVdfddg|jdhdidjdkdlddmdj dCdn|jdodpdjdkdlddqdj dCdr|jdsddjdkdlddtdj dCdu|jdvdwdjdkdldd5dj dCdx|jdydkdjdkdlddbdj dCdz|jd{d|djdkdldd}dj dCd~|jdddjdkdlddOdj dCdt|dddddd|dmdmdm }|jdXdfd8dddd|jdqdjdddddqdm} | j dCdD|jdmddddddmdq} | j dCdLt|ddddd||dLdLdL }|jdXdfd8dddd|jdLddddddLd} | j dCdDt|d ||||||d5d5d5 }|jdJd8d9d:dd<d|jd|jd.d8dd:d@d<d} | jd.dX|jdd8dd:dd<d} | jddX|jd6dd4d|j ddd4d|j d5d} | j ddt|d&||||||ddd5 }|jd|jdd8ddd@dd|jj|jd3dd4d|j dd5} d}| j ddd|xF|j|jgD]1}|d7}| j dd|d|d|qW| j ddd|d| j dCdLd|d|j d5d} | j dd|j ddd8dddiddddd } | j dd|j}d|}d|}|jdd8dSdd8dd} | jd|| jd|| jd|| jd||j ddd8ddddd|ddd } | jd|| jd|| jd|| jd|t|d||||||ddddPt }|jdQd8dRdSd8d<d|jdJd@d@dVd@d<d|jdXd@ddZddd|j ddd@ddZdddddd |jdd}ddj dCdLt|d#||||||ddd5 }|jd|jdd8ddddddgd }|jddddd@d|jddddd@d|jd6dd4d|j dd5} | j dddd| j dCdLdd|j d5d} | j ddt|d,||||||d5d5d5dPt }|jdQd@d8dSd8d<d|jdXdddddd|jddddd@dd|jd.d9d|d9d@dd} | jd.dX|j ddddiddddddd } | jdd|jd3dd4t |j dd5d4t |j d5d6j ddt|d)||||||ddd5 }|jd|jdd8ddZdwdd|jdd8ddZddddgd }|jddddSdd|jddddSdd|jd3dd4t |j d1d5} | j dddd| j ddddR| j dddd`| j dddd| j dddd| j dddd| j dddd| j dddd| j dCdLdd@|j d5dj dddS(Ni2iri,s[ProductName] SetupiiRZt DefaultUIFonttDlgFont8t ErrorDialogtErrorDlgt Progress1tInstallt Progress2tinstallstMaintenanceForm_ActiontRepairt WhichUserstALLt TextStyletTahomai it DlgFontBold8it VerdanaBold10tVerdanai t VerdanaRed9iRt PrepareDlgs(Not Privileged or Windows9x or Installedit WhichUsersDlgs.Privileged and not Windows9x and not InstalleditSelectFeaturesDlgs Not InstalleditMaintenanceTypeDlgs,Installed AND NOT RESUME AND NOT Preselectedit ProgressDlgit ActionTexttUITextt FatalErrortFinishs)[ProductName] Installer ended prematurelys< BackRR!Rt Description1iiFi@iPis[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.t Description2iis.Click the Finish button to exit the Installer.Rt EndDialogtExittUserExits'[ProductName] Installer was interrupteds[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.t ExitDialogs&Completing the [ProductName] Installert DescriptionitReturnt FilesInUseitRetrytbitmapRiis{\DlgFontBold8}Files in Useiis8Some files that need to be updated are currently in use.tTexti7iJsThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.tListtListBoxikiitFileInUseProcesstIgnoreieit ErrorTexti0RtNixiHiQitNotErrorNotYitYestErrorYestAtAbortt ErrorAborttCi*t ErrorCanceltIt ErrorIgnoretOitOktErrorOktRit ErrorRetryt CancelDlgiiUiis;Are you sure you want to cancel [ProductName] installation?i9i8iitWaitForCostingDlgsRPlease wait while the installer finishes determining your disk space requirements.ifi(sOPlease wait while the Installer prepares to guide you through the installation.s&Welcome to the [ProductName] Installerins Pondering...t ActionDataiR#t SpawnDialogsSelect Python InstallationstHints9Select the Python locations where %s should be installed.sNext >s [TARGETDIR]s [SourceDir]torderings [TARGETDIR%s]s FEATURE_SELECTED AND &Python%s=3tSpawnWaitDialogitFeaturest SelectionTreei<tFEATUREtPathEdits[FEATURE_SELECTED]t1s!FEATURE_SELECTED AND &Python%s<>3tOthers$Provide an alternate Python locationtEnabletShowtDisabletHideiiRt DiskCostDlgtOKs&{\DlgFontBold8}Disk Space RequirementssFThe disk space required for the installation of the selected features.i5sThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).t VolumeListtVolumeCostListidiis{120}{70}{70}{70}{70}g?t AdminInstallsGSelect whether to install [ProductName] for all users of this computer.isInstall for all userstJUSTMEisInstall just for mes [ALLUSERS]sWhichUsers="ALL"s({\DlgFontBold8}[Progress1] [ProductName]i#iAsYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.t StatusLabelsStatus:t ProgressBaris Progress donet SetProgresstProgresss)Welcome to the [ProductName] Setup WizardtBodyTexti?s:Select whether you want to repair or remove [ProductName].tRepairRadioGroupilis&Repair [ProductName]tRemovei$sRe&move [ProductName]s [REINSTALL]sMaintenanceForm_Action="Repair"s [Progress1]t Repairings [Progress2]trepairst Reinstalls[REMOVE]sMaintenanceForm_Action="Remove"i tRemovingi tremovesi is MaintenanceForm_Action<>"Change"(RR(RR(RR(RR(RR(RR(RRi Ni(RRiNi(RRi Ni(RRi ii(Rs(Not Privileged or Windows9x or Installedi(Rs.Privileged and not Windows9x and not Installedi(Rs Not Installedi(Rs,Installed AND NOT RESUME AND NOT Preselectedi(RNi(RzR R1R RRRRR R"RteventtFalsetcontrolR RtmappingRFRnR<Rt conditionR&t radiogrouptadd(RRztxtyRRRtmodaltmodelesstfatalR-t user_exitt exit_dialogtinuseterrorR"tcostingtpreptseldlgtorderRfRtinstall_other_condtdont_install_other_condtcostt whichuserstgtprogresstmaint((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs                .......$$$ !!        "  % cCsT|jr%d||j|jf}nd||jf}tjj|j|}|S(Ns%s.%s-py%s.msis %s.%s.msi(R7R3RCRDRER8(RRt base_nameR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRos   (R'R(t descriptionR1Rt user_optionstboolean_optionsRIRR=RORlRRRRRo(((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyR*TsP     ) [ 6 6 & >(R)ReRCt sysconfigRtdistutils.coreRtdistutils.dir_utilRtdistutils.versionRtdistutils.errorsRt distutilsRtdistutils.utilRRwRRR R R R R RR*(((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyts "=PKvr]V0e~~ command/build_ext.py.debug-buildnu["""distutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).""" # This module should be kept compatible with Python 2.1. __revision__ = "$Id$" import sys, os, string, re from types import * from site import USER_BASE, USER_SITE from distutils.core import Command from distutils.errors import * from distutils.sysconfig import customize_compiler, get_python_version from distutils.dep_util import newer_group from distutils.extension import Extension from distutils.util import get_platform from distutils import log if os.name == 'nt': from distutils.msvccompiler import get_build_version MSVC_VERSION = int(get_build_version()) # An extension name is just a dot-separated list of Python NAMEs (ie. # the same as a fully-qualified module name). extension_name_re = re.compile \ (r'^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$') def show_compilers (): from distutils.ccompiler import show_compilers show_compilers() class build_ext (Command): description = "build C/C++ extensions (compile/link to build directory)" # XXX thoughts on how to deal with complex command-line options like # these, i.e. how to make it so fancy_getopt can suck them off the # command line and make it look like setup.py defined the appropriate # lists of tuples of what-have-you. # - each command needs a callback to process its command-line options # - Command.__init__() needs access to its share of the whole # command line (must ultimately come from # Distribution.parse_command_line()) # - it then calls the current command class' option-parsing # callback to deal with weird options like -D, which have to # parse the option text and churn out some custom data # structure # - that data structure (in this case, a list of 2-tuples) # will then be present in the command object by the time # we get to finalize_options() (i.e. the constructor # takes care of both command-line and client options # in between initialize_options() and finalize_options()) sep_by = " (separated by '%s')" % os.pathsep user_options = [ ('build-lib=', 'b', "directory for compiled extension modules"), ('build-temp=', 't', "directory for temporary files (build by-products)"), ('plat-name=', 'p', "platform name to cross-compile for, if supported " "(default: %s)" % get_platform()), ('inplace', 'i', "ignore build-lib and put compiled extensions into the source " + "directory alongside your pure Python modules"), ('include-dirs=', 'I', "list of directories to search for header files" + sep_by), ('define=', 'D', "C preprocessor macros to define"), ('undef=', 'U', "C preprocessor macros to undefine"), ('libraries=', 'l', "external C libraries to link with"), ('library-dirs=', 'L', "directories to search for external C libraries" + sep_by), ('rpath=', 'R', "directories to search for shared C libraries at runtime"), ('link-objects=', 'O', "extra explicit link objects to include in the link"), ('debug', 'g', "compile/link with debugging information"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), ('compiler=', 'c', "specify the compiler type"), ('swig-cpp', None, "make SWIG create C++ files (default is C)"), ('swig-opts=', None, "list of SWIG command line options"), ('swig=', None, "path to the SWIG executable"), ('user', None, "add user include, library and rpath"), ] boolean_options = ['inplace', 'debug', 'force', 'swig-cpp', 'user'] help_options = [ ('help-compiler', None, "list available compilers", show_compilers), ] def initialize_options (self): self.extensions = None self.build_lib = None self.plat_name = None self.build_temp = None self.inplace = 0 self.package = None self.include_dirs = None self.define = None self.undef = None self.libraries = None self.library_dirs = None self.rpath = None self.link_objects = None self.debug = None self.force = None self.compiler = None self.swig = None self.swig_cpp = None self.swig_opts = None self.user = None def finalize_options(self): from distutils import sysconfig self.set_undefined_options('build', ('build_lib', 'build_lib'), ('build_temp', 'build_temp'), ('compiler', 'compiler'), ('debug', 'debug'), ('force', 'force'), ('plat_name', 'plat_name'), ) if self.package is None: self.package = self.distribution.ext_package self.extensions = self.distribution.ext_modules # Make sure Python's include directories (for Python.h, pyconfig.h, # etc.) are in the include search path. py_include = sysconfig.get_python_inc() plat_py_include = sysconfig.get_python_inc(plat_specific=1) if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] if isinstance(self.include_dirs, str): self.include_dirs = self.include_dirs.split(os.pathsep) # Put the Python "system" include dir at the end, so that # any local include dirs take precedence. self.include_dirs.append(py_include) if plat_py_include != py_include: self.include_dirs.append(plat_py_include) self.ensure_string_list('libraries') self.ensure_string_list('link_objects') # Life is easier if we're not forever checking for None, so # simplify these options to empty lists if unset if self.libraries is None: self.libraries = [] if self.library_dirs is None: self.library_dirs = [] elif type(self.library_dirs) is StringType: self.library_dirs = string.split(self.library_dirs, os.pathsep) if self.rpath is None: self.rpath = [] elif type(self.rpath) is StringType: self.rpath = string.split(self.rpath, os.pathsep) # for extensions under windows use different directories # for Release and Debug builds. # also Python's library directory must be appended to library_dirs if os.name == 'nt': # the 'libs' directory is for binary installs - we assume that # must be the *native* platform. But we don't really support # cross-compiling via a binary install anyway, so we let it go. self.library_dirs.append(os.path.join(sys.exec_prefix, 'libs')) if self.debug: self.build_temp = os.path.join(self.build_temp, "Debug") else: self.build_temp = os.path.join(self.build_temp, "Release") # Append the source distribution include and library directories, # this allows distutils on windows to work in the source tree self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC')) if MSVC_VERSION == 9: # Use the .lib files for the correct architecture if self.plat_name == 'win32': suffix = '' else: # win-amd64 or win-ia64 suffix = self.plat_name[4:] # We could have been built in one of two places; add both for d in ('PCbuild',), ('PC', 'VS9.0'): new_lib = os.path.join(sys.exec_prefix, *d) if suffix: new_lib = os.path.join(new_lib, suffix) self.library_dirs.append(new_lib) elif MSVC_VERSION == 8: self.library_dirs.append(os.path.join(sys.exec_prefix, 'PC', 'VS8.0')) elif MSVC_VERSION == 7: self.library_dirs.append(os.path.join(sys.exec_prefix, 'PC', 'VS7.1')) else: self.library_dirs.append(os.path.join(sys.exec_prefix, 'PC', 'VC6')) # OS/2 (EMX) doesn't support Debug vs Release builds, but has the # import libraries in its "Config" subdirectory if os.name == 'os2': self.library_dirs.append(os.path.join(sys.exec_prefix, 'Config')) # for extensions under Cygwin and AtheOS Python's library directory must be # appended to library_dirs if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos': if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions self.library_dirs.append(os.path.join(sys.prefix, "lib", "python" + get_python_version(), "config")) else: # building python standard extensions self.library_dirs.append('.') # For building extensions with a shared Python library, # Python's library directory must be appended to library_dirs # See Issues: #1600860, #4366 if (sysconfig.get_config_var('Py_ENABLE_SHARED')): if not sysconfig.python_build: # building third party extensions self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) else: # building python standard extensions self.library_dirs.append('.') # The argument parsing will result in self.define being a string, but # it has to be a list of 2-tuples. All the preprocessor symbols # specified by the 'define' option will be set to '1'. Multiple # symbols can be separated with commas. if self.define: defines = self.define.split(',') self.define = map(lambda symbol: (symbol, '1'), defines) # The option for macros to undefine is also a string from the # option parsing, but has to be a list. Multiple symbols can also # be separated with commas here. if self.undef: self.undef = self.undef.split(',') if self.swig_opts is None: self.swig_opts = [] else: self.swig_opts = self.swig_opts.split(' ') # Finally add the user include and library directories if requested if self.user: user_include = os.path.join(USER_BASE, "include") user_lib = os.path.join(USER_BASE, "lib") if os.path.isdir(user_include): self.include_dirs.append(user_include) if os.path.isdir(user_lib): self.library_dirs.append(user_lib) self.rpath.append(user_lib) def run(self): from distutils.ccompiler import new_compiler # 'self.extensions', as supplied by setup.py, is a list of # Extension instances. See the documentation for Extension (in # distutils.extension) for details. # # For backwards compatibility with Distutils 0.8.2 and earlier, we # also allow the 'extensions' list to be a list of tuples: # (ext_name, build_info) # where build_info is a dictionary containing everything that # Extension instances do except the name, with a few things being # differently named. We convert these 2-tuples to Extension # instances as needed. if not self.extensions: return # If we were asked to build any C/C++ libraries, make sure that the # directory where we put them is in the library search path for # linking extensions. if self.distribution.has_c_libraries(): build_clib = self.get_finalized_command('build_clib') self.libraries.extend(build_clib.get_library_names() or []) self.library_dirs.append(build_clib.build_clib) # Setup the CCompiler object that we'll use to do all the # compiling and linking self.compiler = new_compiler(compiler=self.compiler, verbose=self.verbose, dry_run=self.dry_run, force=self.force) customize_compiler(self.compiler) # If we are cross-compiling, init the compiler now (if we are not # cross-compiling, init would not hurt, but people may rely on # late initialization of compiler even if they shouldn't...) if os.name == 'nt' and self.plat_name != get_platform(): self.compiler.initialize(self.plat_name) # And make sure that any compile/link-related options (which might # come from the command-line or from the setup script) are set in # that CCompiler object -- that way, they automatically apply to # all compiling and linking done here. if self.include_dirs is not None: self.compiler.set_include_dirs(self.include_dirs) if self.define is not None: # 'define' option is a list of (name,value) tuples for (name, value) in self.define: self.compiler.define_macro(name, value) if self.undef is not None: for macro in self.undef: self.compiler.undefine_macro(macro) if self.libraries is not None: self.compiler.set_libraries(self.libraries) if self.library_dirs is not None: self.compiler.set_library_dirs(self.library_dirs) if self.rpath is not None: self.compiler.set_runtime_library_dirs(self.rpath) if self.link_objects is not None: self.compiler.set_link_objects(self.link_objects) # Now actually compile and link everything. self.build_extensions() def check_extensions_list(self, extensions): """Ensure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. """ if not isinstance(extensions, list): raise DistutilsSetupError, \ "'ext_modules' option must be a list of Extension instances" for i, ext in enumerate(extensions): if isinstance(ext, Extension): continue # OK! (assume type-checking done # by Extension constructor) if not isinstance(ext, tuple) or len(ext) != 2: raise DistutilsSetupError, \ ("each element of 'ext_modules' option must be an " "Extension instance or 2-tuple") ext_name, build_info = ext log.warn(("old-style (ext_name, build_info) tuple found in " "ext_modules for extension '%s' " "-- please convert to Extension instance" % ext_name)) if not (isinstance(ext_name, str) and extension_name_re.match(ext_name)): raise DistutilsSetupError, \ ("first element of each tuple in 'ext_modules' " "must be the extension name (a string)") if not isinstance(build_info, dict): raise DistutilsSetupError, \ ("second element of each tuple in 'ext_modules' " "must be a dictionary (build info)") # OK, the (ext_name, build_info) dict is type-safe: convert it # to an Extension instance. ext = Extension(ext_name, build_info['sources']) # Easy stuff: one-to-one mapping from dict elements to # instance attributes. for key in ('include_dirs', 'library_dirs', 'libraries', 'extra_objects', 'extra_compile_args', 'extra_link_args'): val = build_info.get(key) if val is not None: setattr(ext, key, val) # Medium-easy stuff: same syntax/semantics, different names. ext.runtime_library_dirs = build_info.get('rpath') if 'def_file' in build_info: log.warn("'def_file' element of build info dict " "no longer supported") # Non-trivial stuff: 'macros' split into 'define_macros' # and 'undef_macros'. macros = build_info.get('macros') if macros: ext.define_macros = [] ext.undef_macros = [] for macro in macros: if not (isinstance(macro, tuple) and len(macro) in (1, 2)): raise DistutilsSetupError, \ ("'macros' element of build info dict " "must be 1- or 2-tuple") if len(macro) == 1: ext.undef_macros.append(macro[0]) elif len(macro) == 2: ext.define_macros.append(macro) extensions[i] = ext def get_source_files(self): self.check_extensions_list(self.extensions) filenames = [] # Wouldn't it be neat if we knew the names of header files too... for ext in self.extensions: filenames.extend(ext.sources) return filenames def get_outputs(self): # Sanity check the 'extensions' list -- can't assume this is being # done in the same run as a 'build_extensions()' call (in fact, we # can probably assume that it *isn't*!). self.check_extensions_list(self.extensions) # And build the list of output (built) filenames. Note that this # ignores the 'inplace' flag, and assumes everything goes in the # "build" tree. outputs = [] for ext in self.extensions: outputs.append(self.get_ext_fullpath(ext.name)) return outputs def build_extensions(self): # First, sanity-check the 'extensions' list self.check_extensions_list(self.extensions) for ext in self.extensions: self.build_extension(ext) def build_extension(self, ext): sources = ext.sources if sources is None or type(sources) not in (ListType, TupleType): raise DistutilsSetupError, \ ("in 'ext_modules' option (extension '%s'), " + "'sources' must be present and must be " + "a list of source filenames") % ext.name sources = list(sources) ext_path = self.get_ext_fullpath(ext.name) depends = sources + ext.depends if not (self.force or newer_group(depends, ext_path, 'newer')): log.debug("skipping '%s' extension (up-to-date)", ext.name) return else: log.info("building '%s' extension", ext.name) # First, scan the sources for SWIG definition files (.i), run # SWIG on 'em to create .c files, and modify the sources list # accordingly. sources = self.swig_sources(sources, ext) # Next, compile the source code to object files. # XXX not honouring 'define_macros' or 'undef_macros' -- the # CCompiler API needs to change to accommodate this, and I # want to do one thing at a time! # Two possible sources for extra compiler arguments: # - 'extra_compile_args' in Extension object # - CFLAGS environment variable (not particularly # elegant, but people seem to expect it and I # guess it's useful) # The environment variable should take precedence, and # any sensible compiler will give precedence to later # command line args. Hence we combine them in order: extra_args = ext.extra_compile_args or [] macros = ext.define_macros[:] for undef in ext.undef_macros: macros.append((undef,)) objects = self.compiler.compile(sources, output_dir=self.build_temp, macros=macros, include_dirs=ext.include_dirs, debug=self.debug, extra_postargs=extra_args, depends=ext.depends) # XXX -- this is a Vile HACK! # # The setup.py script for Python on Unix needs to be able to # get this list so it can perform all the clean up needed to # avoid keeping object files around when cleaning out a failed # build of an extension module. Since Distutils does not # track dependencies, we have to get rid of intermediates to # ensure all the intermediates will be properly re-built. # self._built_objects = objects[:] # Now link the object files together into a "shared object" -- # of course, first we have to figure out all the other things # that go into the mix. if ext.extra_objects: objects.extend(ext.extra_objects) extra_args = ext.extra_link_args or [] # Detect target language, if not provided language = ext.language or self.compiler.detect_language(sources) self.compiler.link_shared_object( objects, ext_path, libraries=self.get_libraries(ext), library_dirs=ext.library_dirs, runtime_library_dirs=ext.runtime_library_dirs, extra_postargs=extra_args, export_symbols=self.get_export_symbols(ext), debug=self.debug, build_temp=self.build_temp, target_lang=language) def swig_sources (self, sources, extension): """Walk the list of source files in 'sources', looking for SWIG interface (.i) files. Run SWIG on all that are found, and return a modified 'sources' list with SWIG source files replaced by the generated C (or C++) files. """ new_sources = [] swig_sources = [] swig_targets = {} # XXX this drops generated C/C++ files into the source tree, which # is fine for developers who want to distribute the generated # source -- but there should be an option to put SWIG output in # the temp dir. if self.swig_cpp: log.warn("--swig-cpp is deprecated - use --swig-opts=-c++") if self.swig_cpp or ('-c++' in self.swig_opts) or \ ('-c++' in extension.swig_opts): target_ext = '.cpp' else: target_ext = '.c' for source in sources: (base, ext) = os.path.splitext(source) if ext == ".i": # SWIG interface file new_sources.append(base + '_wrap' + target_ext) swig_sources.append(source) swig_targets[source] = new_sources[-1] else: new_sources.append(source) if not swig_sources: return new_sources swig = self.swig or self.find_swig() swig_cmd = [swig, "-python"] swig_cmd.extend(self.swig_opts) if self.swig_cpp: swig_cmd.append("-c++") # Do not override commandline arguments if not self.swig_opts: for o in extension.swig_opts: swig_cmd.append(o) for source in swig_sources: target = swig_targets[source] log.info("swigging %s to %s", source, target) self.spawn(swig_cmd + ["-o", target, source]) return new_sources # swig_sources () def find_swig (self): """Return the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. """ if os.name == "posix": return "swig" elif os.name == "nt": # Look for SWIG in its standard installation directory on # Windows (or so I presume!). If we find it there, great; # if not, act like Unix and assume it's in the PATH. for vers in ("1.3", "1.2", "1.1"): fn = os.path.join("c:\\swig%s" % vers, "swig.exe") if os.path.isfile(fn): return fn else: return "swig.exe" elif os.name == "os2": # assume swig available in the PATH. return "swig.exe" else: raise DistutilsPlatformError, \ ("I don't know how to find (much less run) SWIG " "on platform '%s'") % os.name # find_swig () # -- Name generators ----------------------------------------------- # (extension names, filenames, whatever) def get_ext_fullpath(self, ext_name): """Returns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). """ # makes sure the extension name is only using dots all_dots = string.maketrans('/'+os.sep, '..') ext_name = ext_name.translate(all_dots) fullname = self.get_ext_fullname(ext_name) modpath = fullname.split('.') filename = self.get_ext_filename(ext_name) filename = os.path.split(filename)[-1] if not self.inplace: # no further work needed # returning : # build_dir/package/path/filename filename = os.path.join(*modpath[:-1]+[filename]) return os.path.join(self.build_lib, filename) # the inplace option requires to find the package directory # using the build_py command for that package = '.'.join(modpath[0:-1]) build_py = self.get_finalized_command('build_py') package_dir = os.path.abspath(build_py.get_package_dir(package)) # returning # package_dir/filename return os.path.join(package_dir, filename) def get_ext_fullname(self, ext_name): """Returns the fullname of a given extension name. Adds the `package.` prefix""" if self.package is None: return ext_name else: return self.package + '.' + ext_name def get_ext_filename(self, ext_name): r"""Convert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). """ from distutils.sysconfig import get_config_var ext_path = string.split(ext_name, '.') # OS/2 has an 8 character module (extension) limit :-( if os.name == "os2": ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] # extensions in debug_mode are named 'module_d.pyd' under windows so_ext = get_config_var('SO') if os.name == 'nt' and self.debug: return os.path.join(*ext_path) + '_d' + so_ext return os.path.join(*ext_path) + so_ext def get_export_symbols (self, ext): """Return the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "init" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "init" function. """ initfunc_name = "init" + ext.name.split('.')[-1] if initfunc_name not in ext.export_symbols: ext.export_symbols.append(initfunc_name) return ext.export_symbols def get_libraries (self, ext): """Return the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows and OS/2, we add the Python library (eg. python20.dll). """ # The python library is always needed on Windows. For MSVC, this # is redundant, since the library is mentioned in a pragma in # pyconfig.h that MSVC groks. The other Windows compilers all seem # to need it mentioned explicitly, though, so that's what we do. # Append '_d' to the python import library on debug builds. if sys.platform == "win32": from distutils.msvccompiler import MSVCCompiler if not isinstance(self.compiler, MSVCCompiler): template = "python%d%d" if self.debug: template = template + '_d' pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) # don't extend ext.libraries, it may be shared with other # extensions, it is a reference to the original list return ext.libraries + [pythonlib] else: return ext.libraries elif sys.platform == "os2emx": # EMX/GCC requires the python library explicitly, and I # believe VACPP does as well (though not confirmed) - AIM Apr01 template = "python%d%d" # debug versions of the main DLL aren't supported, at least # not at this time - AIM Apr01 #if self.debug: # template = template + '_d' pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) # don't extend ext.libraries, it may be shared with other # extensions, it is a reference to the original list return ext.libraries + [pythonlib] elif sys.platform[:6] == "cygwin": template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) # don't extend ext.libraries, it may be shared with other # extensions, it is a reference to the original list return ext.libraries + [pythonlib] elif sys.platform[:6] == "atheos": from distutils import sysconfig template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) # Get SHLIBS from Makefile extra = [] for lib in sysconfig.get_config_var('SHLIBS').split(): if lib.startswith('-l'): extra.append(lib[2:]) else: extra.append(lib) # don't extend ext.libraries, it may be shared with other # extensions, it is a reference to the original list return ext.libraries + [pythonlib, "m"] + extra elif sys.platform == 'darwin': # Don't use the default code below return ext.libraries elif sys.platform[:3] == 'aix': # Don't use the default code below return ext.libraries else: from distutils import sysconfig if sysconfig.get_config_var('Py_ENABLE_SHARED'): template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) return ext.libraries + [pythonlib] else: return ext.libraries # class build_ext PKvr])U] command/__init__.pyonu[ {fc@sOdZdZdddddddd d d d d dddddddgZdS(s\distutils.command Package containing implementation of all the standard Distutils commands.s$Id$tbuildtbuild_pyt build_extt build_clibt build_scriptstcleantinstallt install_libtinstall_headerstinstall_scriptst install_datatsdisttregistertbdistt bdist_dumbt bdist_rpmt bdist_wininsttuploadtcheckN(t__doc__t __revision__t__all__(((s2/usr/lib64/python2.7/distutils/command/__init__.pyts(PKvr]t. . command/install_data.pyonu[ {fc@sXdZdZddlZddlmZddlmZmZdefdYZdS(sdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.s$Id$iN(tCommand(t change_roott convert_patht install_datacBsSeZdZdddgZdgZd Zd Zd Zd Z d Z RS(sinstall data filess install-dir=tdsIbase directory for installing data files (default: installation base dir)sroot=s<install everything relative to this alternate root directorytforcetfs-force installation (overwrite existing files)cCs@d|_g|_d|_d|_|jj|_d|_dS(Nii(tNonet install_dirtoutfilestrootRt distributiont data_filestwarn_dir(tself((s6/usr/lib64/python2.7/distutils/command/install_data.pytinitialize_optionss     cCs|jdddddS( NtinstallRRR R(RR(R R (RR(tset_undefined_options(R((s6/usr/lib64/python2.7/distutils/command/install_data.pytfinalize_options%s cCsk|j|jxT|jD]I}t|trt|}|jra|jd||jfn|j||j\}}|j j |qt|d}t j j |st j j|j|}n|jrt|j|}n|j||dgkr|j j |qxF|dD]:}t|}|j||\}}|j j |q%WqWdS(NsMsetup script did not provide a directory for '%s' -- installing right in '%s'ii(tmkpathRR t isinstancetstrRR twarnt copy_fileR tappendtostpathtisabstjoinR R(RRtoutt_tdirtdata((s6/usr/lib64/python2.7/distutils/command/install_data.pytrun,s*      cCs |jp gS(N(R (R((s6/usr/lib64/python2.7/distutils/command/install_data.pyt get_inputsMscCs|jS(N(R (R((s6/usr/lib64/python2.7/distutils/command/install_data.pyt get_outputsPs(s install-dir=RsIbase directory for installing data files (default: installation base dir)N(sroot=Ns<install everything relative to this alternate root directory(RRs-force installation (overwrite existing files)( t__name__t __module__t descriptionRt user_optionstboolean_optionsRRR!R"R#(((s6/usr/lib64/python2.7/distutils/command/install_data.pyRs     ! ( t__doc__t __revision__Rtdistutils.coreRtdistutils.utilRRR(((s6/usr/lib64/python2.7/distutils/command/install_data.pyts  PKvr]Arcommand/upload.pycnu[ {fc@sdZddlZddlZddlZddlmZmZmZddlm Z ddl Z ddl Z ddl mZddlmZmZddlmZddlmZdd lmZd efd YZdS( s`distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to PyPI).iN(turlopentRequestt HTTPError(tstandard_b64encode(tmd5(tDistutilsErrortDistutilsOptionError(t PyPIRCCommand(tspawn(tlogtuploadcBsUeZdZejd d gZejdgZdZdZd Zd Z RS( supload binary package to PyPItsigntsssign files to upload using gpgs identity=tisGPG identity used to sign filescCs>tj|d|_d|_d|_t|_d|_dS(Nti( Rtinitialize_optionstusernametpasswordt show_responsetFalseR tNonetidentity(tself((s0/usr/lib64/python2.7/distutils/command/upload.pyRs      cCstj||jr/|j r/tdn|j}|ikr~|d|_|d|_|d|_|d|_ n|j r|j jr|j j|_ndS(Ns.Must use --sign for --identity to have meaningRRt repositorytrealm( Rtfinalize_optionsRR Rt _read_pypircRRRRt distribution(Rtconfig((s0/usr/lib64/python2.7/distutils/command/upload.pyR&s       cCsX|jjs!d}t|nx0|jjD]"\}}}|j|||q.WdS(NsHMust create and upload files in one command (e.g. setup.py sdist upload)(Rt dist_filesRt upload_file(Rtmsgtcommandt pyversiontfilename((s0/usr/lib64/python2.7/distutils/command/upload.pytrun8s  c"Cs`tj|j\}}}}}} |s6|s6| rLtd|jn|dEkrktd|n|jrddd|g} |jrd|jg| d d +nt| d |jnt|d } z| j} Wd| j X|j j } id d 6dd6| j d6| j d6tjj|| fd6|d6|d6t| jd6dd6| jd6| jd6| jd6| jd6| jd6| jd6| jd6| jd6| jd 6| jd!6| jd"6| jd#6| jd$6}d%}|d&krRt j!\}}}|rwd'||f}qwn%|d(krwd)t j d*d+}n||d,<|jrtjj|d-t|d-jf|d.|}yjt2|}|j3}|j4}|j5rd?j6d@dA|jd@dAf} |j,| t-j.nWnVt7j8k r}!|j,t/|!t-j9n%t:k r}!|!j;}|!j4}nX|dBkr-|j,dC||ft-j.n/dD||f} |j,| t-j9t<| dS(FNsIncompatible url %sthttpthttpssunsupported schema tgpgs --detach-signs-as --local-useritdry_runtrbt file_uploads:actiont1tprotcol_versiontnametversiontcontenttfiletypeR!t md5_digests1.0tmetadata_versiontsummaryt home_pagetauthort author_emailtlicenset descriptiontkeywordstplatformt classifierst download_urltprovidestrequirest obsoletesRt bdist_rpmsbuilt for %s %st bdist_dumbs built for %stterseitcomments.asct gpg_signaturesBasic t:s3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- s;filename="%s"is+ Content-Disposition: form-data; name="%s"s sSubmitting %s to %ss multipart/form-data; boundary=%ss Content-typesContent-lengtht Authorizationtdatatheaderss t-iKisServer response (%s): %ssUpload failed (%s): %s(R$R%(=turlparseRtAssertionErrorR RRR'topentreadtcloseRtmetadatatget_namet get_versiontostpathtbasenameRt hexdigesttget_descriptiontget_urlt get_contacttget_contact_emailt get_licencetget_long_descriptiont get_keywordst get_platformstget_classifierstget_download_urlt get_providest get_requirest get_obsoletesR9tdistRRRtStringIOtitemst isinstancetlistttupletwritetgetvaluetannounceR tINFOtstrtlenRRtgetcodeRRtjointsocketterrortERRORRtcodeR("RR R!R"tschematnetlocturltparamstqueryt fragmentstgpg_argstfR.tmetaRFRBRbR-tidtauthtboundaryt sep_boundaryt end_boundarytbodytkeytvaluetfnRGtrequesttresulttstatustreasonRte((s0/usr/lib64/python2.7/distutils/command/upload.pyR@s$                                             &    (R R ssign files to upload using gpg(s identity=R sGPG identity used to sign files( t__name__t __module__R7Rt user_optionstboolean_optionsRRR#R(((s0/usr/lib64/python2.7/distutils/command/upload.pyR s    (t__doc__RQRpR9turllib2RRRtbase64RRIt cStringIORcthashlibRtdistutils.errorsRRtdistutils.coreRtdistutils.spawnRt distutilsR R (((s0/usr/lib64/python2.7/distutils/command/upload.pyts     PKvr]:Oķcommand/build.pycnu[ {fc@swdZdZddlZddlZddlmZddlmZddlm Z dZ defd YZ dS( sBdistutils.command.build Implements the Distutils 'build' command.s$Id$iN(t get_platform(tCommand(tDistutilsOptionErrorcCsddlm}|dS(Ni(tshow_compilers(tdistutils.ccompilerR(R((s//usr/lib64/python2.7/distutils/command/build.pyR stbuildc BseZdZd,d.d/dd-d d fd0d1dddefd2d3d4d5g ZddgZdd-d efgZd!Z d"Z d#Z d$Z d%Z d&Zd'Zd(e fd)e fd*efd+efgZRS(6s"build everything needed to installs build-base=tbs base directory for build librarysbuild-purelib=s2build directory for platform-neutral distributionssbuild-platlib=s3build directory for platform-specific distributionss build-lib=s9build directory for all distribution (defaults to either sbuild-purelib or build-platlibsbuild-scripts=sbuild directory for scriptss build-temp=ttstemporary build directorys plat-name=tps6platform name to build for, if supported (default: %s)s compiler=tcsspecify the compiler typetdebugtgs;compile extensions and libraries with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s executable=tes5specify final destination interpreter path (build.py)s help-compilerslist available compilerscCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS(NRi( t build_basetNonet build_purelibt build_platlibt build_libt build_tempt build_scriptstcompilert plat_nameR R t executable(tself((s//usr/lib64/python2.7/distutils/command/build.pytinitialize_options7s          cCs|jdkrt|_ntjdkr<tdnd|jtjdd!f}ttdru|d7}n|j dkrtj j |j d|_ n|j dkrtj j |j d||_ n|jdkr |jjr|j |_q |j |_n|jdkr=tj j |j d ||_n|jdkrxtj j |j d tjdd!|_n|jdkrtjrtj jtj|_ndS( NtntsW--plat-name only supported on Windows (try using './configure --help' on your platform)s.%s-%siitgettotalrefcounts-pydebugtlibttempsscripts-(RRRtostnameRtsystversionthasattrRtpathtjoinRRRt distributiont ext_modulesRRRtnormpath(Rtplat_specifier((s//usr/lib64/python2.7/distutils/command/build.pytfinalize_optionsFs2   cCs(x!|jD]}|j|q WdS(N(tget_sub_commandst run_command(Rtcmd_name((s//usr/lib64/python2.7/distutils/command/build.pytrunxscCs |jjS(N(R&thas_pure_modules(R((s//usr/lib64/python2.7/distutils/command/build.pyR/scCs |jjS(N(R&thas_c_libraries(R((s//usr/lib64/python2.7/distutils/command/build.pyR0scCs |jjS(N(R&thas_ext_modules(R((s//usr/lib64/python2.7/distutils/command/build.pyR1scCs |jjS(N(R&t has_scripts(R((s//usr/lib64/python2.7/distutils/command/build.pyR2stbuild_pyt build_clibt build_extR(s build-base=Rs base directory for build libraryN(sbuild-purelib=Ns2build directory for platform-neutral distributions(sbuild-platlib=Ns3build directory for platform-specific distributions(sbuild-scripts=Nsbuild directory for scripts(s build-temp=Rstemporary build directory(s compiler=R sspecify the compiler type(R R s;compile extensions and libraries with debugging information(R R s2forcibly build everything (ignore file timestamps)(s executable=Rs5specify final destination interpreter path (build.py)(t__name__t __module__t descriptionRRt user_optionstboolean_optionsRt help_optionsRR*R.R/R0R1R2t sub_commands(((s//usr/lib64/python2.7/distutils/command/build.pyRsN     2       ( t__doc__t __revision__R!Rtdistutils.utilRtdistutils.coreRtdistutils.errorsRRR(((s//usr/lib64/python2.7/distutils/command/build.pyts PKvr]`=))command/bdist_wininst.pycnu[ {fc@sdZdZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z ddlmZdd lmZd efd YZdS( szdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.s$Id$iN(tget_python_version(tCommand(t remove_tree(tDistutilsOptionErrortDistutilsPlatformError(tlog(t get_platformt bdist_wininstcBseZdZd,dddefdddd fd d+d d fd-d.d/d0d1d2d3d4d5g Zdd ddgZd$Zd%Zd&Z d'Z d+d(Z d)Z d*Z RS(6s-create an executable installer for MS Windowss bdist-dir=s1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archivestarget-version=s!require a specific python versions on the target systemsno-target-compiletcs/do not compile .py to .pyc on the target systemsno-target-optimizetos;do not compile .py to .pyo (optimized) on the target systems dist-dir=tds-directory to put final built distributions insbitmap=tbs>bitmap to use for the installer instead of python-powered logostitle=tts?title to display on the installer background instead of defaults skip-builds2skip rebuilding everything (for testing/debugging)sinstall-script=sUbasename of installation script to be run after installation or before deinstallationspre-install-script=s{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionsuser-access-control=sspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS(Ni(tNonet bdist_dirt plat_namet keep_temptno_target_compiletno_target_optimizettarget_versiontdist_dirtbitmapttitlet skip_buildtinstall_scripttpre_install_scripttuser_access_control(tself((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytinitialize_options@s            cCsV|jdd |jdkr|jrR|jrR|jjd}|j|_n|jdj}t j j |d|_n|j sd|_ n|j r|jj rt}|j r|j |krtd|fn||_ n|jdd d |jrRxF|jjD]%}|jt j j|krPqqWtd|jndS( NtbdistRtwininsttsMtarget version can only be %s, or the '--skip-build' option must be specifiedRRs(install_script '%s' not found in scripts(RR(RR(RR(tset_undefined_optionsRRRRt distributiontget_command_objtget_finalized_commandt bdist_basetostpathtjoinRthas_ext_modulesRRRtscriptstbasename(RRR&t short_versiontscript((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytfinalize_optionsRs4       c Cstjdkr<|jjs-|jjr<tdn|jsU|jdn|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjrB|j}|s|jstd tjdd !}nd |j |f}|jd}tjj|jd ||_nxJdD]B}tj|}|dkrw|d}nt|d||qIWtjd|j |jtjjdtjj|j d|jtjd=ddl m!}|} |jj"} |j#| dd|j } |j$| | |j%|jjrYt&} nd} |jj'j(d| |j)| ftj*d| tj+| |j,st-|j d|j.ndS(Ntwin32s^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformtbuildtinstalltreinit_subcommandsiit install_libs Should have already checked thisis.%s-%stlibtpurelibtplatlibtheadersR+tdatas/Include/$dist_nametinstall_sinstalling to %stPURELIBi(tmktemptziptroot_dirtanyRsremoving temporary file '%s'tdry_run(R6R7R8R+R9(/tsystplatformR#R*thas_c_librariesRRt run_commandtreinitialize_commandRtroottwarn_dirRtcompiletoptimizeRtAssertionErrortversionR%R'R(R)t build_baset build_libtstringtuppertsetattrRtinfotensure_finalizedtinserttrunttempfileR<t get_fullnamet make_archivet create_exeRRt dist_filestappendtget_installer_filenametdebugtremoveRRR@( RR2R4Rtplat_specifierR1tkeytvalueR<tarchive_basenametfullnametarcnamet pyversion((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRTzsf              %       c Csg}|jj}|jd|jp+dd}d}xddddd d d d gD]a}t||d}|rZ|d tj|||f}|jd|||fqZqZW|jd|jr|jd|jn|jd|||jd|j |jd|j |j rM|jd|j n|j rm|jd|j n|j p|jj }|jd||ddl}ddl} d|j|j| jf} |jd| tj|dS(Ns [metadata]R!s cSstj|ddS(Ns s\n(RNtreplace(ts((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytescapestauthort author_emailt descriptiont maintainertmaintainer_emailtnameturlRKs %s: %ss%s=%ss [Setup]sinstall_script=%ssinfo=%sstarget_compile=%dstarget_optimize=%dstarget_version=%ssuser_access_control=%sstitle=%sisBuilt %s with distutils-%ss build_info=%s(R#tmetadataRZtlong_descriptiontgetattrRNt capitalizeRRRRRRRVttimet distutilstctimet __version__R)( RtlinesRoRQRgRmR9RRsRtt build_info((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyt get_inidatas<   $      c Csddl}|j|j|j}|j|}|jd||rrt|dj}t|}nd}t|d} | j |j |r| j |nyt Wnt k rn"Xt |t r|jd}n|d}|jr)t|jdj} || d }n |d}| j ||jd d t||} | j | | j t|djdS( Nis creating %strbitwbtmbcsstrs s           cCs`|jr7tjj|jd||j|jf}n%tjj|jd||jf}|S(Ns%s.%s-py%s.exes %s.%s.exe(RR'R(R)RR(RRbR((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyR[5s cCsddlm}t}|jrm|j|krm|j|krL|}qv|jdkrdd}qvd}n |}tjjt}|jdkr|jd dkr|jd}nd }tjj |d ||f}t |d }z|j SWd|j XdS( Ni(tget_build_versions2.4g@gffffff@R0itwinR!swininst-%.1f%s.exeRz( tdistutils.msvccompilerRRRR'R(tdirnamet__file__RR)RRtclose(RRt cur_versiontbvt directorytsfixtfilenametf((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRCs$     "N(s bdist-dir=Ns1temporary directory for creating the distribution(sno-target-compileR s/do not compile .py to .pyc on the target system(sno-target-optimizeR s;do not compile .py to .pyo (optimized) on the target system(s dist-dir=R s-directory to put final built distributions in(sbitmap=R s>bitmap to use for the installer instead of python-powered logo(stitle=Rs?title to display on the installer background instead of default(s skip-buildNs2skip rebuilding everything (for testing/debugging)(sinstall-script=NsUbasename of installation script to be run after installation or before deinstallation(spre-install-script=Ns{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution(suser-access-control=Nsspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UAC(t__name__t __module__RjRRt user_optionstboolean_optionsRR/RTRyRXR[R(((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRsN      ( S 1 7 (t__doc__t __revision__RAR'RNt sysconfigRtdistutils.coreRtdistutils.dir_utilRtdistutils.errorsRRRtRtdistutils.utilRR(((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyts   PKvr]vjvvcommand/check.pyonu[ {fc@sdZdZddlmZddlmZddlmZypddlm Z ddl m Z ddl m Z dd l mZdd lmZd e fd YZeZWnek reZnXd efdYZdS(sCdistutils.command.check Implements the Distutils 'check' command. s$Id$i(tCommand(tPKG_INFO_ENCODING(tDistutilsSetupError(tReporter(tParser(tfrontend(tnodes(tStringIOtSilentReportercBs&eZdddddZdZRS(itasciitreplacec Cs/g|_tj||||||||dS(N(tmessagesRt__init__(tselftsourcet report_levelt halt_leveltstreamtdebugtencodingt error_handler((s//usr/lib64/python2.7/distutils/command/check.pyR s cOsB|jj||||ftj|d|d|j|||S(Ntlevelttype(R tappendRtsystem_messagetlevels(R Rtmessagetchildrentkwargs((s//usr/lib64/python2.7/distutils/command/check.pyRs N(t__name__t __module__tNoneR R(((s//usr/lib64/python2.7/distutils/command/check.pyRstcheckcBsqeZdZdZdddgZdddgZd Zd Zd ZdZ dZ dZ dZ RS(s6This command checks the meta-data of the package. s"perform some checks on the packagetmetadatatmsVerify meta-datatrestructuredtexttrsEChecks if long string meta-data syntax are reStructuredText-complianttstricttss(Will exit with an error if a check failscCs(d|_d|_d|_d|_dS(s Sets default values for options.iiN(R#R!R%t _warnings(R ((s//usr/lib64/python2.7/distutils/command/check.pytinitialize_options3s   cCsdS(N((R ((s//usr/lib64/python2.7/distutils/command/check.pytfinalize_options:scCs|jd7_tj||S(s*Counts the number of warnings that occurs.i(R'Rtwarn(R tmsg((s//usr/lib64/python2.7/distutils/command/check.pyR*=scCsx|jr|jn|jrMtr2|jqM|jrMtdqMn|jrt|jdkrttdndS(sRuns the command.sThe docutils package is needed.isPlease correct your package.N(R!tcheck_metadataR#t HAS_DOCUTILStcheck_restructuredtextR%RR'(R ((s//usr/lib64/python2.7/distutils/command/check.pytrunBs     cCs|jj}g}x<dD]4}t||o:t||s|j|qqW|rt|jddj|n|jr|js|jddqn>|j r|j s|jdd qn|jd d d d S(sEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. tnametversionturlsmissing required meta-data: %ss, s)missing meta-data: if 'author' supplied, s#'author_email' must be supplied toos-missing meta-data: if 'maintainer' supplied, s''maintainer_email' must be supplied toos4missing meta-data: either (author and author_email) s%or (maintainer and maintainer_email) smust be suppliedN(R0R1R2( t distributionR!thasattrtgetattrRR*tjointauthort author_emailt maintainertmaintainer_email(R R!tmissingtattr((s//usr/lib64/python2.7/distutils/command/check.pyR,Rs$        cCs|jj}t|ts0|jt}nxd|j|D]S}|djd}|dkrr|d}nd|d|f}|j |q@WdS(s4Checks if the long string fields are reST-compliant.itlineis %s (line %s)N( R3tget_long_descriptiont isinstancetunicodetdecodeRt_check_rst_datatgetRR*(R tdatatwarningR=((s//usr/lib64/python2.7/distutils/command/check.pyR.ps  c Cs|jjpd}t}tjdtfj}d|_d |_d |_ t ||j |j d|j d|jd|jd|j}tj||d|}|j|d y|j||Wn3tk r}|jjd d |d ifnX|jS( s8Returns warnings when the provided data doesn't compile.ssetup.pyt componentsiRRRRRis!Could not finish the parsing: %s.tN(R3t script_nameRRt OptionParsertget_default_valuest tab_widthRtpep_referencestrfc_referencesRRRtwarning_streamRterror_encodingterror_encoding_error_handlerRtdocumentt note_sourcetparsetAttributeErrorR R(R RDt source_pathtparsertsettingstreporterRQte((s//usr/lib64/python2.7/distutils/command/check.pyRB}s*          (R!R"sVerify meta-data(R#R$sEChecks if long string meta-data syntax are reStructuredText-compliant(R%R&s(Will exit with an error if a check fails( RRt__doc__t descriptiont user_optionstboolean_optionsR(R)R*R/R,R.RB(((s//usr/lib64/python2.7/distutils/command/check.pyR &s       N(RZt __revision__tdistutils.coreRtdistutils.distRtdistutils.errorsRtdocutils.utilsRtdocutils.parsers.rstRtdocutilsRRRRtTrueR-t ImportErrortFalseR (((s//usr/lib64/python2.7/distutils/command/check.pyts   PKvr]vjvvcommand/check.pycnu[ {fc@sdZdZddlmZddlmZddlmZypddlm Z ddl m Z ddl m Z dd l mZdd lmZd e fd YZeZWnek reZnXd efdYZdS(sCdistutils.command.check Implements the Distutils 'check' command. s$Id$i(tCommand(tPKG_INFO_ENCODING(tDistutilsSetupError(tReporter(tParser(tfrontend(tnodes(tStringIOtSilentReportercBs&eZdddddZdZRS(itasciitreplacec Cs/g|_tj||||||||dS(N(tmessagesRt__init__(tselftsourcet report_levelt halt_leveltstreamtdebugtencodingt error_handler((s//usr/lib64/python2.7/distutils/command/check.pyR s cOsB|jj||||ftj|d|d|j|||S(Ntlevelttype(R tappendRtsystem_messagetlevels(R Rtmessagetchildrentkwargs((s//usr/lib64/python2.7/distutils/command/check.pyRs N(t__name__t __module__tNoneR R(((s//usr/lib64/python2.7/distutils/command/check.pyRstcheckcBsqeZdZdZdddgZdddgZd Zd Zd ZdZ dZ dZ dZ RS(s6This command checks the meta-data of the package. s"perform some checks on the packagetmetadatatmsVerify meta-datatrestructuredtexttrsEChecks if long string meta-data syntax are reStructuredText-complianttstricttss(Will exit with an error if a check failscCs(d|_d|_d|_d|_dS(s Sets default values for options.iiN(R#R!R%t _warnings(R ((s//usr/lib64/python2.7/distutils/command/check.pytinitialize_options3s   cCsdS(N((R ((s//usr/lib64/python2.7/distutils/command/check.pytfinalize_options:scCs|jd7_tj||S(s*Counts the number of warnings that occurs.i(R'Rtwarn(R tmsg((s//usr/lib64/python2.7/distutils/command/check.pyR*=scCsx|jr|jn|jrMtr2|jqM|jrMtdqMn|jrt|jdkrttdndS(sRuns the command.sThe docutils package is needed.isPlease correct your package.N(R!tcheck_metadataR#t HAS_DOCUTILStcheck_restructuredtextR%RR'(R ((s//usr/lib64/python2.7/distutils/command/check.pytrunBs     cCs|jj}g}x<dD]4}t||o:t||s|j|qqW|rt|jddj|n|jr|js|jddqn>|j r|j s|jdd qn|jd d d d S(sEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. tnametversionturlsmissing required meta-data: %ss, s)missing meta-data: if 'author' supplied, s#'author_email' must be supplied toos-missing meta-data: if 'maintainer' supplied, s''maintainer_email' must be supplied toos4missing meta-data: either (author and author_email) s%or (maintainer and maintainer_email) smust be suppliedN(R0R1R2( t distributionR!thasattrtgetattrRR*tjointauthort author_emailt maintainertmaintainer_email(R R!tmissingtattr((s//usr/lib64/python2.7/distutils/command/check.pyR,Rs$        cCs|jj}t|ts0|jt}nxd|j|D]S}|djd}|dkrr|d}nd|d|f}|j |q@WdS(s4Checks if the long string fields are reST-compliant.itlineis %s (line %s)N( R3tget_long_descriptiont isinstancetunicodetdecodeRt_check_rst_datatgetRR*(R tdatatwarningR=((s//usr/lib64/python2.7/distutils/command/check.pyR.ps  c Cs|jjpd}t}tjdtfj}d|_d |_d |_ t ||j |j d|j d|jd|jd|j}tj||d|}|j|d y|j||Wn3tk r}|jjd d |d ifnX|jS( s8Returns warnings when the provided data doesn't compile.ssetup.pyt componentsiRRRRRis!Could not finish the parsing: %s.tN(R3t script_nameRRt OptionParsertget_default_valuest tab_widthRtpep_referencestrfc_referencesRRRtwarning_streamRterror_encodingterror_encoding_error_handlerRtdocumentt note_sourcetparsetAttributeErrorR R(R RDt source_pathtparsertsettingstreporterRQte((s//usr/lib64/python2.7/distutils/command/check.pyRB}s*          (R!R"sVerify meta-data(R#R$sEChecks if long string meta-data syntax are reStructuredText-compliant(R%R&s(Will exit with an error if a check fails( RRt__doc__t descriptiont user_optionstboolean_optionsR(R)R*R/R,R.RB(((s//usr/lib64/python2.7/distutils/command/check.pyR &s       N(RZt __revision__tdistutils.coreRtdistutils.distRtdistutils.errorsRtdocutils.utilsRtdocutils.parsers.rstRtdocutilsRRRRtTrueR-t ImportErrortFalseR (((s//usr/lib64/python2.7/distutils/command/check.pyts   PKvr]Z}}command/build_scripts.pycnu[ {fc@sdZdZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ejd Zd efd YZdS( sRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.s$Id$iN(tST_MODE(tCommand(tnewer(t convert_path(tlogs^#!.*python[0-9.]*([ ].*)?$t build_scriptscBsSeZdZdddgZdgZd Zd Zd Zd ZdZ RS(s("build" scripts (copy and fixup #! line)s build-dir=tdsdirectory to "build" (copy) totforcetfs1forcibly build everything (ignore file timestampss executable=tes*specify final destination interpreter pathcCs1d|_d|_d|_d|_d|_dS(N(tNonet build_dirtscriptsRt executabletoutfiles(tself((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytinitialize_optionss     cCs)|jdddd|jj|_dS( NtbuildRR RR (RR (RR(R R (tset_undefined_optionst distributionR (R((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytfinalize_options%s  cCs|jS(N(R (R((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytget_source_files,scCs|js dS|jdS(N(R t copy_scripts(R((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytrun/s c Cstd}|j|jg}x|jD]}d}t|}tjj|jtjj|}|j ||j rt || rt j d|q,nyt|d}Wn&tk r|jsnd}n]X|j}|s |jd|q,ntj|}|r=d}|jdp7d} n|rt jd||j|jst|d } |js| jd |j| fnK| jd tjj|jd d |jd |jdf| f| j|j| jn|r>|jq>q,|r.|jn|j||q,Wtj dkrx|D]|} |jrzt jd| qXtj!| t"d@} | dBd@} | | krXt jd| | | tj#| | qXqXWndS(s"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. t sysconfigisnot copying %s (up-to-date)trs%s is an empty file (skipping)itscopying and adjusting %s -> %stws#!%s%s tBINDIRs python%s%stVERSIONtEXEtposixschanging mode of %siims!changing mode of %s from %o to %oN($t __import__tmkpathR R RtostpathtjointbasenametappendRRRtdebugtopentIOErrortdry_runR treadlinetwarnt first_line_retmatchtgrouptinfotis_python_buildtwriteR tget_config_vart writelinest readlinestcloset copy_filetnametstatRtchmod(Rt _sysconfigRtscripttadjusttoutfileRt first_lineR.t post_interptoutftfiletoldmodetnewmode((s7/usr/lib64/python2.7/distutils/command/build_scripts.pyR5sr  $                     (s build-dir=Rsdirectory to "build" (copy) to(RRs1forcibly build everything (ignore file timestamps(s executable=R s*specify final destination interpreter path( t__name__t __module__t descriptiont user_optionstboolean_optionsRRRRR(((s7/usr/lib64/python2.7/distutils/command/build_scripts.pyRs      (t__doc__t __revision__R"treR9Rtdistutils.coreRtdistutils.dep_utilRtdistutils.utilRt distutilsRtcompileR-R(((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytsPKvr](^,,command/build_py.pycnu[ {fc@sdZdZddlZddlZddlmZddlmZddlmZm Z ddl m Z ddl m Z d efd YZdS( sHdistutils.command.build_py Implements the Distutils 'build_py' command.s$Id$iN(tglob(tCommand(tDistutilsOptionErrortDistutilsFileError(t convert_path(tlogtbuild_pycBseZdZd#d$d&d'd(gZdd gZidd6ZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZddZdZd Zd!Zd"ZRS()s5"build" pure Python modules (copy to build directory)s build-lib=tdsdirectory to "build" (copy) totcompiletcscompile .py to .pycs no-compiles!don't compile .py files [default]s optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS(Ni( tNonet build_libt py_modulestpackaget package_datat package_dirRtoptimizeR (tself((s2/usr/lib64/python2.7/distutils/command/build_py.pytinitialize_options!s       cCs|jddd|jj|_|jj|_|jj|_i|_|jjrx6|jjjD]\}}t||j|X|jd|tjj|Sq>W|jjd}|dk r|jd|n|rtjj|SdSdS(sReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).R+R9iiN( R/RR-R"R.tKeyErrortinsertR:R (RRR"ttailtpdir((s2/usr/lib64/python2.7/distutils/command/build_py.pyR,s(      cCs|dkrYtjj|s1td|ntjj|sYtd|qYn|rtjj|d}tjj|r|Stjdd|ndS(NR9s%package directory '%s' does not exists>supposed package directory '%s' exists, but is not a directorys __init__.pys!package init file '%s' not found s(or not a regular file)( R-R"texistsRtisdirR.R<RtwarnR (RRRtinit_py((s2/usr/lib64/python2.7/distutils/command/build_py.pyt check_packages  cCs1tjj|s)tjd||tStSdS(Ns!file %s (for module %s) not found(R-R"R<RRORFtTrue(Rtmodulet module_file((s2/usr/lib64/python2.7/distutils/command/build_py.pyt check_modulesc Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S(Ns*.pyis excluding %s( RQRR-R"R.tabspathRt script_nametsplitexttbasenameR2t debug_print( RRRt module_filestmodulest setup_scriptR tabs_fRS((s2/usr/lib64/python2.7/distutils/command/build_py.pytfind_package_moduless  "c Cs!i}g}x|jD]}|jd}dj|dd!}|d}y||\}}Wn&tk r|j|}d}nX|s|j||} |df||<| r|j|d| fqntjj||d} |j || sqn|j||| fqW|S(sFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. R+iiit__init__s.py( RR/R.RIR,RQR2R-R"RU( RRR\RSR"Rt module_baseRtcheckedRPRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyt find_moduless*   cCswg}|jr%|j|jn|jrsxB|jD]4}|j|}|j||}|j|q8Wn|S(s4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.(RR;RcRR,R_(RR\RRtm((s2/usr/lib64/python2.7/distutils/command/build_py.pytfind_all_moduless  cCs!g|jD]}|d^q S(Ni(Re(RRS((s2/usr/lib64/python2.7/distutils/command/build_py.pytget_source_files-scCs.|gt||dg}tjj|S(Ns.py(tlistR-R"R.(RR5RRSt outfile_path((s2/usr/lib64/python2.7/distutils/command/build_py.pytget_module_outfile0sic Cs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|j|dn|jdkr|j|dqqqW|g|jD]4\}}} } | D]}tj j | |^qq7}|S(NR+R ito( ReR/RiRR2RRRR-R"R.( RR$R\toutputsRRSRTRGR4R5R8((s2/usr/lib64/python2.7/distutils/command/build_py.pyR)4s    )cCst|tr!|jd}n$t|ttfsEtdn|j|j||}tj j |}|j ||j ||ddS(NR+s:'package' must be a string (dot-separated), list, or tupleRBi( RtstrR/Rgttuplet TypeErrorRiRR-R"RDRCRE(RRSRTRtoutfiletdir((s2/usr/lib64/python2.7/distutils/command/build_py.pyt build_moduleIs  cCs=|j}x*|D]"\}}}|j|||qWdS(N(RcRq(RR\RRSRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyR%Xs cCsxxq|jD]f}|j|}|j||}x<|D]4\}}}||ksYt|j|||q8Wq WdS(N(RR,R_RRq(RRRR\tpackage_RSRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyR&bs  c Cstjr|jddSddlm}|j}|dtjkrV|tj}n|jr||ddd|j d|d|j n|j dkr||d|j d|j d|d|j ndS( Ns%byte-compiling is disabled, skipping.i(R(RiR tprefixtdry_run( tsystdont_write_bytecodeROtdistutils.utilR(RR-tsepRR RtR(RR>R(Rs((s2/usr/lib64/python2.7/distutils/command/build_py.pyR(ws    (s build-lib=Rsdirectory to "build" (copy) to(RR scompile .py to .pycN(s no-compileNs!don't compile .py files [default](s optimize=R slalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](R R s2forcibly build everything (ignore file timestamps)(t__name__t __module__t descriptionR t user_optionstboolean_optionst negative_optRR#R*RR1R'R,RQRUR_RcReRfRiR)RqR%R&R((((s2/usr/lib64/python2.7/distutils/command/build_py.pyRs8       (    4      (t__doc__t __revision__R-RuRtdistutils.coreRtdistutils.errorsRRRwRt distutilsRR(((s2/usr/lib64/python2.7/distutils/command/build_py.pyts  PKvr]V11command/bdist.pycnu[ {fc@sqdZdZddlZddlmZddlmZddlmZm Z dZ defd YZ dS( sidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).s$Id$iN(t get_platform(tCommand(tDistutilsPlatformErrortDistutilsOptionErrorcCslddlm}g}x6tjD]+}|jd|dtj|dfq W||}|jddS(sFPrint list of available formats (arguments to "--format" option). i(t FancyGetoptsformats=is'List of available distribution formats:N(tdistutils.fancy_getoptRtbdisttformat_commandstappendtNonetformat_commandt print_help(Rtformatstformattpretty_printer((s//usr/lib64/python2.7/distutils/command/bdist.pyt show_formatss Rc BseZdZd0dddefd2d3d4d5d6gZd gZdd1defgZd7Z idd6dd6dd6Z dddddd dd!gZ id8d6d9d6d:d6d;d6d<d6d=d 6d>d6d?d!6Z d-Z d.Zd/ZRS(@s$create a built (binary) distributions bdist-base=tbs4temporary directory for creating built distributionss plat-name=tps;platform name to embed in generated filenames (default: %s)sformats=s/formats for distribution (comma-separated list)s dist-dir=tds=directory to put final built distributions in [default: dist]s skip-builds2skip rebuilding everything (for testing/debugging)sowner=tus@Owner name used when creating a tar file [default: current user]sgroup=tgsAGroup name used when creating a tar file [default: current group]s help-formatss$lists available distribution formatst bdist_rpmtgztartposixtziptnttos2trpmtbztartztarttartwininsttmsisRPM distributiont bdist_dumbsgzip'ed tar filesbzip2'ed tar filescompressed tar filestar filet bdist_wininstsWindows executable installersZIP filet bdist_msisMicrosoft InstallercCsCd|_d|_d|_d|_d|_d|_d|_dS(Ni(R t bdist_baset plat_nameR tdist_dirt skip_buildtgrouptowner(tself((s//usr/lib64/python2.7/distutils/command/bdist.pytinitialize_optionsTs      cCs|jdkr?|jr't|_q?|jdj|_n|jdkr|jdj}tjj |d|j|_n|j d|j dkry|j tj g|_ Wqtk rtddtj qXn|jdkrd|_ndS(Ntbuildsbdist.R s-don't know how to create built distributions son platform %stdist(R%R R'Rtget_finalized_commandR$t build_basetostpathtjointensure_string_listR tdefault_formattnametKeyErrorRR&(R*R/((s//usr/lib64/python2.7/distutils/command/bdist.pytfinalize_options]s$    cCs g}xN|jD]C}y|j|j|dWqtk rRtd|qXqWxtt|jD]}||}|j|}||jkr|j||_ n|dkr|j |_ |j |_ n|||dkrd|_ n|j |qmWdS(Nisinvalid format '%s'R!i(R RR R6Rtrangetlentreinitialize_commandtno_format_optionR R)R(t keep_tempt run_command(R*tcommandsR titcmd_nametsub_cmd((s//usr/lib64/python2.7/distutils/command/bdist.pytrunys"     (s bdist-base=Rs4temporary directory for creating built distributionsN(sformats=Ns/formats for distribution (comma-separated list)(s dist-dir=Rs=directory to put final built distributions in [default: dist](s skip-buildNs2skip rebuilding everything (for testing/debugging)(sowner=Rs@Owner name used when creating a tar file [default: current user](sgroup=RsAGroup name used when creating a tar file [default: current group](R(RsRPM distribution(R!sgzip'ed tar file(R!sbzip2'ed tar file(R!scompressed tar file(R!star file(R"sWindows executable installer(R!sZIP file(R#sMicrosoft Installer(t__name__t __module__t descriptionRR t user_optionstboolean_optionsRt help_optionsR;R4RR R+R7RB(((s//usr/lib64/python2.7/distutils/command/bdist.pyRsJ        ( t__doc__t __revision__R0tdistutils.utilRtdistutils.coreRtdistutils.errorsRRRR(((s//usr/lib64/python2.7/distutils/command/bdist.pyts  PKvr]command/install_lib.pycnu[ {fc@sdZdZddlZddlZddlmZddlmZeedrcej dZ ndZ d efd YZ dS( skdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).s$Id$iN(tCommand(tDistutilsOptionErrortextseptpys.pyt install_libc BseZdZddd d!d#d$d%gZdd dgZid d 6ZdZdZdZ dZ dZ dZ dZ dZdZdZRS(&s7install all Python modules (extensions and pure Python)s install-dir=tdsdirectory to install tos build-dir=tbs'build directory (where to install from)tforcetfs-force installation (overwrite existing files)tcompiletcscompile .py to .pyc [default]s no-compilesdon't compile .py filess optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]s skip-buildsskip the build stepscCs:d|_d|_d|_d|_d|_d|_dS(Ni(tNonet install_dirt build_dirRR toptimizet skip_build(tself((s5/usr/lib64/python2.7/distutils/command/install_lib.pytinitialize_options7s      c Cs|jddddddd|jdkr:d |_n|jdkrUd |_nt|jtsy.t|j|_|jdkrtnWqttfk rtd qXndS(Ntinstallt build_libRRR RR RRiiisoptimize must be 0, 1, or 2(RR(RR (RR(R R (RR(RR(iii( tset_undefined_optionsR R Rt isinstancetinttAssertionErrort ValueErrorR(R((s5/usr/lib64/python2.7/distutils/command/install_lib.pytfinalize_options@s$    cCsE|j|j}|dk rA|jjrA|j|ndS(N(tbuildRR t distributionthas_pure_modulest byte_compile(Rtoutfiles((s5/usr/lib64/python2.7/distutils/command/install_lib.pytrunZs  cCsN|jsJ|jjr(|jdn|jjrJ|jdqJndS(Ntbuild_pyt build_ext(RRRt run_commandthas_ext_modules(R((s5/usr/lib64/python2.7/distutils/command/install_lib.pyRjs  cCsLtjj|jr0|j|j|j}n|jd|jdS|S(Ns3'%s' does not exist -- no Python modules to install(tostpathtisdirRt copy_treeR twarn(RR((s5/usr/lib64/python2.7/distutils/command/install_lib.pyRqs   c Cstjr|jddSddlm}|jdj}|jrp||ddd|jd|d |j n|j dkr||d|j d|jd|d |j d |j ndS( Ns%byte-compiling is disabled, skipping.i(RRRiRtprefixtdry_runtverbose( tsystdont_write_bytecodeR)tdistutils.utilRtget_finalized_commandtrootR RR+RR,(RtfilesRt install_root((s5/usr/lib64/python2.7/distutils/command/install_lib.pyRzs    c Cs|s gS|j|}|j}t||}t|ttj}g}x.|D]&} |jtjj|| |qZW|S(N( R0t get_outputstgetattrtlenR%tseptappendR&tjoin( Rthas_anyt build_cmdt cmd_optiont output_dirt build_filesRt prefix_lentoutputstfile((s5/usr/lib64/python2.7/distutils/command/install_lib.pyt_mutate_outputss  $cCsg}x|D]z}tjjtjj|d}|tkrGq n|jrd|j|dn|jdkr |j|dq q W|S(NiR ito(R%R&tsplitexttnormcasetPYTHON_SOURCE_EXTENSIONR R8R(Rt py_filenamestbytecode_filestpy_filetext((s5/usr/lib64/python2.7/distutils/command/install_lib.pyt_bytecode_filenamess "  cCsu|j|jjdd|j}|jr?|j|}ng}|j|jjdd|j}|||S(sReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. R!RR"(RBRRR R RKR$(Rt pure_outputstbytecode_outputst ext_outputs((s5/usr/lib64/python2.7/distutils/command/install_lib.pyR4s   cCsrg}|jjr:|jd}|j|jn|jjrn|jd}|j|jn|S(sGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. R!R"(RRR0textendR4R$(RtinputsR!R"((s5/usr/lib64/python2.7/distutils/command/install_lib.pyt get_inputss(s install-dir=Rsdirectory to install to(s build-dir=Rs'build directory (where to install from)(RRs-force installation (overwrite existing files)(R R scompile .py to .pyc [default]N(s no-compileNsdon't compile .py files(s optimize=R slalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](s skip-buildNsskip the build steps(t__name__t __module__t descriptionR t user_optionstboolean_optionst negative_optRRR RRRRBRKR4RQ(((s5/usr/lib64/python2.7/distutils/command/install_lib.pyRs*         ( t__doc__t __revision__R%R-tdistutils.coreRtdistutils.errorsRthasattrRRFR(((s5/usr/lib64/python2.7/distutils/command/install_lib.pyts  PKvr]$2 command/install_egg_info.pycnu[ {fc@sdZddlmZddlmZmZddlZddlZddlZdefdYZ dZ dZ d Z dS( sdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.i(tCommand(tlogtdir_utilNtinstall_egg_infocBsAeZdZdZd gZdZdZdZdZRS( s)Install an .egg-info file for the packages8Install package's PKG-INFO metadata as an .egg-info files install-dir=tdsdirectory to install tocCs d|_dS(N(tNonet install_dir(tself((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pytinitialize_optionsscCs|jdddtt|jjtt|jjtjd f}t j j |j ||_ |j g|_dS(Nt install_libRs%s-%s-py%s.egg-infoi(RR(tset_undefined_optionst to_filenamet safe_namet distributiontget_namet safe_versiont get_versiontsystversiontostpathtjoinRttargettoutputs(Rtbasename((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pytfinalize_optionsscCs|j}tjj|rGtjj| rGtj|d|jnptjj|r||j tj |jfd|n;tjj|j s|j tj |j fd|j nt jd||jst|d}|jjj||jndS(Ntdry_runs Removing s Creating s Writing %stw(RRRtisdirtislinkRt remove_treeRtexiststexecutetunlinkRtmakedirsRtinfotopenR tmetadatatwrite_pkg_filetclose(RRtf((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pytrun s %# cCs|jS(N(R(R((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyt get_outputs/s(s install-dir=Rsdirectory to install to( t__name__t __module__t__doc__t descriptiont user_optionsRRR)R*(((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR s   cCstjdd|S(sConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. s[^A-Za-z0-9.]+t-(tretsub(tname((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR 7scCs%|jdd}tjdd|S(sConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash. t t.s[^A-Za-z0-9.]+R0(treplaceR1R2(R((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR?scCs|jddS(s|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. R0t_(R6(R3((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR Is( R-t distutils.cmdRt distutilsRRRRR1RR RR (((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyts$,  PKvr]d7''command/register.pyonu[ {fc@szdZdZddlZddlZddlZddlmZddlmZddl m Z defdYZ dS( shdistutils.command.register Implements the Distutils 'register' command (register with the repository). s$Id$iN(twarn(t PyPIRCCommand(tlogtregistercBseZdZejddgZejdddgZddfgZdZd Z d Z d Z d Z d Z dZdZdZddZRS(s7register the distribution with the Python package indexslist-classifierss list the valid Trove classifierststrictsBWill stop the registering if the meta-data are not fully complianttverifytcheckcCstS(N(tTrue(tself((s2/usr/lib64/python2.7/distutils/command/register.pyttcCs#tj|d|_d|_dS(Ni(Rtinitialize_optionstlist_classifiersR(R((s2/usr/lib64/python2.7/distutils/command/register.pyR s  cCs>tj|id|jfd6dd6}||jjds   PKvr]=ib8A8Acommand/sdist.pyonu[ {fc@sdZdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZddlmZdd lmZmZmZdd lmZdd l mZdd lmZd Zde fdYZdS(sadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).s$Id$iN(tglob(twarn(tCommand(tdir_utiltdep_utilt file_utilt archive_util(tTextFile(tDistutilsPlatformErrortDistutilsOptionErrortDistutilsTemplateError(tFileList(tlog(t convert_pathcCsddlm}ddlm}g}x6|jD](}|jd|d||dfq3W|j||jddS(soPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). i(t FancyGetopt(tARCHIVE_FORMATSsformats=is.List of available source distribution formats:N( tdistutils.fancy_getoptRtdistutils.archive_utilRtkeystappendtNonetsortt print_help(RRtformatstformat((s//usr/lib64/python2.7/distutils/command/sdist.pyt show_formatss  tsdistcBs6eZdZdZd<d=d?d@dAdBdCdDdEddddfdFdGdHdIgZdd ddddgZd'd>d(efgZidd 6d d6Z id)d*6d+d,6Z d-efgZ d.Z d/Z d0Zd1Zd2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;ZRS(Js6create a source distribution (tarball, zip file, etc.)cCs|jS(sYCallable used for the check sub-command. Placed here so user_options can view it(tmetadata_check(tself((s//usr/lib64/python2.7/distutils/command/sdist.pytchecking_metadata(ss template=tts5name of manifest template file [default: MANIFEST.in]s manifest=tms)name of manifest file [default: MANIFEST]s use-defaultssRinclude the default file set in the manifest [default; disable with --no-defaults]s no-defaultss"don't include the default file settprunesspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]sno-prunes$don't automatically exclude anythings manifest-onlytosEjust regenerate the manifest and then stop (implies --force-manifest)sforce-manifesttfskforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.sformats=s6formats for source distribution (comma-separated list)s keep-temptks1keep the distribution tree around after creating sarchive file(s)s dist-dir=tdsFdirectory to put the source distribution archive(s) in [default: dist]smetadata-checks[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]sowner=tus@Owner name used when creating a tar file [default: current user]sgroup=tgsAGroup name used when creating a tar file [default: current group]s help-formatss#list available distribution formatstgztartposixtziptnttcheckcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS(Nii(Rttemplatetmanifestt use_defaultsR t manifest_onlytforce_manifestRt keep_temptdist_dirt archive_filesRtownertgroup(R((s//usr/lib64/python2.7/distutils/command/sdist.pytinitialize_optionsfs            cCs|jdkrd|_n|jdkr6d|_n|jd|jdkry|jtjg|_Wqtk rt ddtjqXnt j |j}|rt d|n|j dkrd|_ ndS(NtMANIFESTs MANIFEST.inRs.don't know how to create source distributions son platform %ssunknown archive format '%s'tdist(R-RR,tensure_string_listRtdefault_formattostnametKeyErrorRRtcheck_archive_formatsR R2(Rt bad_format((s//usr/lib64/python2.7/distutils/command/sdist.pytfinalize_options}s$     cCsUt|_x!|jD]}|j|qW|j|jrGdS|jdS(N(R tfilelisttget_sub_commandst run_commandt get_file_listR/tmake_distribution(Rtcmd_name((s//usr/lib64/python2.7/distutils/command/sdist.pytruns   cCs7tdt|jjd}|j|jdS(sDeprecated API.sadistutils.command.sdist.check_metadata is deprecated, use the check command insteadR+N(RtPendingDeprecationWarningt distributiontget_command_objtensure_finalizedRG(RR+((s//usr/lib64/python2.7/distutils/command/sdist.pytcheck_metadatas   cCstjj|j}| rP|jrP|j|jj|jjdS|sq|j dd|jn|jj |j r|j n|r|j n|jr|jn|jj|jj|jdS(sCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Ns&manifest template '%s' does not exist s(using default file list)(R;tpathtisfileR,t_manifest_is_not_generatedt read_manifestRARtremove_duplicatesRtfindallR.t add_defaultst read_templateR tprune_file_listtwrite_manifest(Rttemplate_exists((s//usr/lib64/python2.7/distutils/command/sdist.pyRDs(            cCsd|jjg}x|D]}t|tr|}d}x:|D]2}tjj|rAd}|jj|PqAqAW|s|j dt j |dqqtjj|r|jj|q|j d|qWdd g}xB|D]:}t tjj t|}|r|jj|qqW|jd }|jjrb|jj|jnxM|jD]B\} } } } x-| D]%} |jjtjj | | qWqlW|jjrlx|jjD]}t|trt|}tjj |re|jj|qeq|\}} x?| D]7}t|}tjj |r*|jj|q*q*WqWn|jjr|jd }|jj|jn|jjr|jd }|jj|jn|jjr|jd }|jj|jndS(s9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. tREADMEs README.txtiis,standard file not found: should have one of s, sstandard file '%s' not founds test/test*.pys setup.cfgtbuild_pyt build_extt build_clibt build_scriptsN(RXs README.txt(RIt script_namet isinstancettupleR;RMtexistsRARRtstringtjointfilterRNRtextendtget_finalized_commandthas_pure_modulestget_source_filest data_filesthas_data_fileststrR thas_ext_modulesthas_c_librariest has_scripts(Rt standardstfntaltstgot_ittoptionaltpatterntfilesRYtpkgtsrc_dirt build_dirt filenamestfilenametitemtdirnameR"RZR[R\((s//usr/lib64/python2.7/distutils/command/sdist.pyRSs^      '    cCstjd|jt|jdddddddddddd}zwxp|j}|d krhPny|jj|WqLtt fk r}|j d |j |j |fqLXqLWWd |j Xd S( sRead and parse manifest template file named by self.template. (usually "MANIFEST.in") The parsing and processing is done by 'self.filelist', which updates itself accordingly. sreading manifest template '%s'tstrip_commentsit skip_blankst join_linest lstrip_wst rstrip_wst collapse_joins%s, line %d: %sN(R tinfoR,RtreadlineRRAtprocess_template_lineR t ValueErrorRRyt current_linetclose(RR,tlinetmsg((s//usr/lib64/python2.7/distutils/command/sdist.pyRT,s(    cCs|jd}|jj}|jjdd|j|jjdd|tjdkred}nd}dddd d d d g}d |dj ||f}|jj|dddS(svPrune off branches that might slip into the file list as created by 'read_template()', but really don't belong there: * the build tree (typically "build") * the release tree itself (only an issue if we ran "sdist" previously with --keep-temp, or it aborted) * any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories tbuildtprefixtwin32s/|\\t/tRCStCVSs\.svns\.hgs\.gits\.bzrt_darcss(^|%s)(%s)(%s).*t|tis_regexiN( ReRIt get_fullnameRAtexclude_patternRt build_basetsystplatformRb(RRtbase_dirtsepstvcs_dirstvcs_ptrn((s//usr/lib64/python2.7/distutils/command/sdist.pyRUMs  cCsk|jr$tjd|jdS|jj}|jdd|jtj |j|fd|jdS(sWrite the file list in 'self.filelist' (presumably as filled in by 'add_defaults()' and 'read_template()') to the manifest file named by 'self.manifest'. s5not writing to manually maintained manifest file '%s'Nis*# file GENERATED by distutils, do NOT editswriting manifest file '%s'( ROR RR-RARttinserttexecuteRt write_file(Rtcontent((s//usr/lib64/python2.7/distutils/command/sdist.pyRVgs    cCsStjj|jstSt|jd}z|j}Wd|jX|dkS(NtrUs+# file GENERATED by distutils, do NOT edit (R;RMRNR-tFalsetopenRR(Rtfpt first_line((s//usr/lib64/python2.7/distutils/command/sdist.pyROvs cCsytjd|jt|j}xF|D]>}|j}|jds)| rWq)n|jj|q)W|jdS(sRead the manifest file (named by 'self.manifest') and use it to fill in 'self.filelist', the list of files to include in the source distribution. sreading manifest file '%s't#N( R RR-Rtstript startswithRARR(RR-R((s//usr/lib64/python2.7/distutils/command/sdist.pyRPs  cCs|j|tj||d|jttdrHd}d|}nd}d|}|sntjdn tj |x_|D]W}tj j |stjd|qtj j ||}|j ||d|qW|jjj|dS( sCreate the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. tdry_runtlinkthardsmaking hard links in %s...scopying files to %s...s)no files to distribute -- empty manifest?s#'%s' not a regular file -- skippingN(tmkpathRt create_treeRthasattrR;RR RRRMRNRbt copy_fileRItmetadatatwrite_pkg_info(RRRtRRtfiletdest((s//usr/lib64/python2.7/distutils/command/sdist.pytmake_release_trees      c Cs|jj}tjj|j|}|j||jjg}d|j kr}|j j |j j |j j dnxd|j D]Y}|j ||d|d|jd|j}|j ||jjj dd|fqW||_|jstj|d|jndS( sCreate the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. ttarRR4R5RtRN(RIRR;RMRbR2RRARtRRtpoptindext make_archiveR4R5t dist_filesR3R1Rt remove_treeR(RRt base_nameR3tfmtR((s//usr/lib64/python2.7/distutils/command/sdist.pyREs +    cCs|jS(szReturn the list of archive files created when the command was run, or None if the command hasn't run yet. (R3(R((s//usr/lib64/python2.7/distutils/command/sdist.pytget_archive_filess(s template=Rs5name of manifest template file [default: MANIFEST.in](s manifest=Rs)name of manifest file [default: MANIFEST]N(s use-defaultsNsRinclude the default file set in the manifest [default; disable with --no-defaults](s no-defaultsNs"don't include the default file set(R Nsspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune](sno-pruneNs$don't automatically exclude anything(s manifest-onlyR!sEjust regenerate the manifest and then stop (implies --force-manifest)(sforce-manifestR"skforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.(sformats=Ns6formats for source distribution (comma-separated list)(s dist-dir=R$sFdirectory to put the source distribution archive(s) in [default: dist](smetadata-checkNs[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default](sowner=R%s@Owner name used when creating a tar file [default: current user](sgroup=R&sAGroup name used when creating a tar file [default: current group](t__name__t __module__t descriptionRRt user_optionstboolean_optionsRt help_optionst negative_optR:t sub_commandsR6R@RGRLRDRSRTRURVRORPRRER(((s//usr/lib64/python2.7/distutils/command/sdist.pyR$sn            ( R !    * (t__doc__t __revision__R;RaRRtwarningsRtdistutils.coreRt distutilsRRRRtdistutils.text_fileRtdistutils.errorsRR R tdistutils.filelistR R tdistutils.utilR RR(((s//usr/lib64/python2.7/distutils/command/sdist.pyts   " PKvr]D9%DDcommand/bdist_rpm.pycnu[ {fc@sdZdZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZmZmZmZdd lmZd efd YZdS( swdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).s$Id$iN(tCommand(tDEBUG(t write_file(tget_python_version(tDistutilsOptionErrortDistutilsPlatformErrortDistutilsFileErrortDistutilsExecError(tlogt bdist_rpmc+BseZdZd^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddg)Zd2d7d;d0dSgZid2d56d7d96d;d=6ZdVZdWZdXZ dYZ dZZ d[Z d\Z RS(screate an RPM distributions bdist-base=s/base directory for creating built distributionss rpm-base=sdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)s dist-dir=tdsDdirectory to put final RPM files in (and .spec files if --spec-only)spython=sMpath to Python interpreter to hard-code in the .spec file (default: "python")s fix-pythonsLhard-code the exact path to the current Python interpreter in the .spec files spec-onlysonly regenerate spec files source-onlysonly generate source RPMs binary-onlysonly generate binary RPMs use-bzip2s7use bzip2 instead of gzip to create source distributionsdistribution-name=sgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)sgroup=s9package classification [default: "Development/Libraries"]srelease=sRPM release numbersserial=sRPM serial numbersvendor=saRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script]s packager=sBRPM packager (eg. "Jane Doe ") [default: vendor]s doc-files=s6list of documentation files (space or comma-separated)s changelog=s RPM changelogsicon=sname of icon files provides=s%capabilities provided by this packages requires=s%capabilities required by this packages conflicts=s-capabilities which conflict with this packagesbuild-requires=s+capabilities required to build this packages obsoletes=s*capabilities made obsolete by this packages no-autoreqs+do not automatically calculate dependenciess keep-temptks"don't clean up RPM build directorys no-keep-temps&clean up RPM build directory [default]suse-rpm-opt-flagss8compile with RPM_OPT_FLAGS when building from source RPMsno-rpm-opt-flagss&do not pass any RPM CFLAGS to compilers rpm3-modes"RPM 3 compatibility mode (default)s rpm2-modesRPM 2 compatibility modes prep-script=s3Specify a script for the PREP phase of RPM buildings build-script=s4Specify a script for the BUILD phase of RPM buildings pre-install=s:Specify a script for the pre-INSTALL phase of RPM buildingsinstall-script=s6Specify a script for the INSTALL phase of RPM buildings post-install=s;Specify a script for the post-INSTALL phase of RPM buildingspre-uninstall=s<Specify a script for the pre-UNINSTALL phase of RPM buildingspost-uninstall=s=Specify a script for the post-UNINSTALL phase of RPM buildings clean-script=s4Specify a script for the CLEAN phase of RPM buildingsverify-script=s6Specify a script for the VERIFY phase of the RPM builds force-arch=s0Force an architecture onto the RPM build processtquiettqs3Run the INSTALL phase of RPM building in quiet modecCscd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%d|_&d|_'dS(Nii((tNonet bdist_basetrpm_basetdist_dirtpythont fix_pythont spec_onlyt binary_onlyt source_onlyt use_bzip2tdistribution_nametgrouptreleasetserialtvendortpackagert doc_filest changelogticont prep_scriptt build_scripttinstall_scriptt clean_scriptt verify_scriptt pre_installt post_installt pre_uninstalltpost_uninstalltpreptprovidestrequirest conflictstbuild_requirest obsoletest keep_temptuse_rpm_opt_flagst rpm3_modet no_autoreqt force_archR (tself((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pytinitialize_optionssN                                      cCs|jdd |jdkrR|js4tdntjj|jd|_n|j dkr|j ryt j |_ qd|_ n|j rtdntj dkrtdtj n|jr|jrtd n|jjsd |_n|jdd |jdS(NtbdistRs)you must specify --rpm-base in RPM 2 modetrpmRs8--python and --fix-python are mutually exclusive optionstposixs9don't know how to create RPM distributions on platform %ss6cannot supply both '--source-only' and '--binary-only'iR(RR(RR(tset_undefined_optionsRRR2RtostpathtjoinRRRtsyst executabletnameRRRt distributionthas_ext_modulesR1tfinalize_package_data(R5((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pytfinalize_optionss0         cCs|jdd|jdd|jj|jjf|jd|jdt|jtrxEdD]:}tj j |ro||jkro|jj |qoqoWn|jd d |jd |jd |jd |j |j |_ |jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jddS(NRsDevelopment/LibrariesRs%s <%s>RRtREADMEs README.txtRt1RRRR R!R"R#R$R%R&R'R(R)R+R,R-R.R/R4(REs README.txt(t ensure_stringRAt get_contacttget_contact_emailtensure_string_listt isinstanceRtlistR;R<texiststappendt_format_changelogRtensure_filename(R5treadme((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyRCs>    !                  cCs tr>dGHdG|jGHdG|jGHdG|jGHdG|jGHn|jr`|j}|j|nNi}x;d(D]3}tj j |j |||<|j||qmW|d}tj j |d |j j }|jt||jfd ||jrdS|j j}|jd }|jr4dg|_n dg|_|jd ||j _|jd}|d}|j|||jrtj j|jr|j|j|qtd|jntjddg} tj jdstj jdrdg} n|jr)| jdn&|jrB| jdn | jd|j r| j!ddtj j"|j gn|j#s| jdn|j$r| jdn| j|d} | d} d | d!} d"| | |f} tj%| }zg}d}xt|j'}|s(Pnt(j)t(j*|}t+|d#ksXt,|j|d$|dkr|d}qqW|j-}|rt.d%t/| nWd|j-X|j0| |j1s|j j2rt3}nd&}|js{tj j |d |}tj j|s1t,|j4||jtj j |j|}|j jjd'||fn|jsx|D]}tj j |d |}tj j|r|j4||jtj j |jtj j5|}|j jjd'||fqqWqndS()Nsbefore _get_package_data():svendor =s packager =s doc_files =s changelog =tSOURCEStSPECStBUILDtRPMStSRPMSs%s.specs writing '%s'tsdisttbztartgztarisicon file '%s' does not exists building RPMsR8s/usr/bin/rpmbuilds /bin/rpmbuildtrpmbuilds-bss-bbs-bas--defines _topdir %ss--cleans--quiets%{name}-%{version}-%{release}s.src.rpms%{arch}/s .%{arch}.rpms%rpm -q --qf '%s %s\n' --specfile '%s'iisFailed to execute: %stanyR (RRRSRTRURV(6RRRRRRRtmkpathR;R<R=RRAtget_nametexecuteRt_make_spec_filet dist_filestreinitialize_commandRtformatst run_commandtget_archive_filest copy_fileR RMRRtinfoRRNRR2textendtabspathR0R tpopenRtreadlinetstringtsplittstriptlentAssertionErrortcloseRtreprtspawntdry_runRBRt move_filetbasename(R5tspec_dirtrpm_dirR t spec_pathtsaved_dist_filesRWtsourcet source_dirtrpm_cmdt nvr_stringtsrc_rpmt non_src_rpmtq_cmdtoutt binary_rpmst source_rpmtlinetltstatust pyversiontsrpmtfilenameR8((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pytruns                                            cCs"tjj|jtjj|S(N(R;R<R=RRu(R5R<((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyt _dist_pathsc Csd|jjd|jjjddd|jjd|jjdddd|jjg}|jd d d g|jr|jd n |jd |jd|jj d|j ddg|j s|jj s|jdqn|jd|j x~dBD]v}t |tj|}t|trj|jd|tj|fq|dCk r|jd||fqqW|jjdkr|jd|jjn|jr|jd|jn|jr|jdtj|jn|jr;|jdtjj|jn|jrT|jd n|jdd!|jjgd"|jtjjtjd#f}d$|}|j rd%|}nd&|}dDd*d+|fd,d-|fdEdFdGdHdIdJg }x|D]\}} } t || }|s'| r|jdd;|g|ro|jtj!t"|d<j#d=q|j| qqW|jdd>d?g|j$r|jd@tj|j$n|j%r|jddAg|j|j%n|S(KsiGenerate the text of an RPM spec file and return it as a list of strings (one per line). s %define name s%define version t-t_s%define unmangled_version s%define release ts Summary: s Name: %{name}sVersion: %{version}sRelease: %{release}s-Source0: %{name}-%{unmangled_version}.tar.bz2s,Source0: %{name}-%{unmangled_version}.tar.gzs License: sGroup: s>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootsPrefix: %{_prefix}sBuildArch: noarchs BuildArch: %stVendortPackagertProvidestRequirest Conflictst Obsoletess%s: %stUNKNOWNsUrl: sDistribution: sBuildRequires: sIcon: s AutoReq: 0s %descriptions%s %sis%s buildsenv CFLAGS="$RPM_OPT_FLAGS" s>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESR*R!s&%setup -n %{name}-%{unmangled_version}tbuildR"tinstallR#tcleanR$srm -rf $RPM_BUILD_ROOTt verifyscriptR%tpreR&tpostR'tpreunR(tpostunR)t%trs s%files -f INSTALLED_FILESs%defattr(-,root,root)s%doc s %changelog(RRRRRRN(R*R!s&%setup -n %{name}-%{unmangled_version}(RR$srm -rf $RPM_BUILD_ROOT(RR%N(RR&N(RR'N(RR(N(RR)N(&RAR]t get_versiontreplaceRtget_descriptionRgRRNt get_licenseRR4RBtgetattrRktlowerRKRLR=Rtget_urlRR.R R;R<RuR3tget_long_descriptionRR>targvR1RltopentreadRR( R5t spec_filetfieldtvaltdef_setup_callt def_buildt install_cmdtscript_optionstrpm_opttattrtdefault((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyR_s        #     # &       +     cCs|s |Sg}xtjtj|dD]l}tj|}|ddkrg|jd|gq,|ddkr|j|q,|jd|q,W|ds|d=n|S(sKFormat the changelog correctly and convert it to a list of strings s it*RRs (RkRlRmRgRN(R5Rt new_changelogR((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyRO5s"  N(s bdist-base=Ns/base directory for creating built distributions(s rpm-base=Nsdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)(s dist-dir=R sDdirectory to put final RPM files in (and .spec files if --spec-only)(spython=NsMpath to Python interpreter to hard-code in the .spec file (default: "python")(s fix-pythonNsLhard-code the exact path to the current Python interpreter in the .spec file(s spec-onlyNsonly regenerate spec file(s source-onlyNsonly generate source RPM(s binary-onlyNsonly generate binary RPM(s use-bzip2Ns7use bzip2 instead of gzip to create source distribution(sdistribution-name=Nsgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)(sgroup=Ns9package classification [default: "Development/Libraries"](srelease=NsRPM release number(sserial=NsRPM serial number(svendor=NsaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script](s packager=NsBRPM packager (eg. "Jane Doe ") [default: vendor](s doc-files=Ns6list of documentation files (space or comma-separated)(s changelog=Ns RPM changelog(sicon=Nsname of icon file(s provides=Ns%capabilities provided by this package(s requires=Ns%capabilities required by this package(s conflicts=Ns-capabilities which conflict with this package(sbuild-requires=Ns+capabilities required to build this package(s obsoletes=Ns*capabilities made obsolete by this package(s no-autoreqNs+do not automatically calculate dependencies(s keep-tempR s"don't clean up RPM build directory(s no-keep-tempNs&clean up RPM build directory [default](suse-rpm-opt-flagsNs8compile with RPM_OPT_FLAGS when building from source RPM(sno-rpm-opt-flagsNs&do not pass any RPM CFLAGS to compiler(s rpm3-modeNs"RPM 3 compatibility mode (default)(s rpm2-modeNsRPM 2 compatibility mode(s prep-script=Ns3Specify a script for the PREP phase of RPM building(s build-script=Ns4Specify a script for the BUILD phase of RPM building(s pre-install=Ns:Specify a script for the pre-INSTALL phase of RPM building(sinstall-script=Ns6Specify a script for the INSTALL phase of RPM building(s post-install=Ns;Specify a script for the post-INSTALL phase of RPM building(spre-uninstall=Ns<Specify a script for the pre-UNINSTALL phase of RPM building(spost-uninstall=Ns=Specify a script for the post-UNINSTALL phase of RPM building(s clean-script=Ns4Specify a script for the CLEAN phase of RPM building(sverify-script=Ns6Specify a script for the VERIFY phase of the RPM build(s force-arch=Ns0Force an architecture onto the RPM build process(R R s3Run the INSTALL phase of RPM building in quiet mode(t__name__t __module__t descriptionRt user_optionstboolean_optionst negative_optR6RDRCRRR_RO(((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyR s      0 " /  (t__doc__t __revision__R>R;Rktdistutils.coreRtdistutils.debugRtdistutils.file_utilRtdistutils.sysconfigRtdistutils.errorsRRRRt distutilsRR (((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyts   "PKvr]$2 command/install_egg_info.pyonu[ {fc@sdZddlmZddlmZmZddlZddlZddlZdefdYZ dZ dZ d Z dS( sdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.i(tCommand(tlogtdir_utilNtinstall_egg_infocBsAeZdZdZd gZdZdZdZdZRS( s)Install an .egg-info file for the packages8Install package's PKG-INFO metadata as an .egg-info files install-dir=tdsdirectory to install tocCs d|_dS(N(tNonet install_dir(tself((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pytinitialize_optionsscCs|jdddtt|jjtt|jjtjd f}t j j |j ||_ |j g|_dS(Nt install_libRs%s-%s-py%s.egg-infoi(RR(tset_undefined_optionst to_filenamet safe_namet distributiontget_namet safe_versiont get_versiontsystversiontostpathtjoinRttargettoutputs(Rtbasename((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pytfinalize_optionsscCs|j}tjj|rGtjj| rGtj|d|jnptjj|r||j tj |jfd|n;tjj|j s|j tj |j fd|j nt jd||jst|d}|jjj||jndS(Ntdry_runs Removing s Creating s Writing %stw(RRRtisdirtislinkRt remove_treeRtexiststexecutetunlinkRtmakedirsRtinfotopenR tmetadatatwrite_pkg_filetclose(RRtf((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pytrun s %# cCs|jS(N(R(R((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyt get_outputs/s(s install-dir=Rsdirectory to install to( t__name__t __module__t__doc__t descriptiont user_optionsRRR)R*(((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR s   cCstjdd|S(sConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. s[^A-Za-z0-9.]+t-(tretsub(tname((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR 7scCs%|jdd}tjdd|S(sConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash. t t.s[^A-Za-z0-9.]+R0(treplaceR1R2(R((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR?scCs|jddS(s|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. R0t_(R6(R3((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyR Is( R-t distutils.cmdRt distutilsRRRRR1RR RR (((s:/usr/lib64/python2.7/distutils/command/install_egg_info.pyts$,  PKvr]q+gcommand/install_headers.pycnu[ {fc@s6dZdZddlmZdefdYZdS(sdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.s$Id$i(tCommandtinstall_headerscBsPeZdZd d gZdgZdZdZd Zd Zd Z RS(sinstall C/C++ header filess install-dir=tds$directory to install header files totforcetfs-force installation (overwrite existing files)cCsd|_d|_g|_dS(Ni(tNonet install_dirRtoutfiles(tself((s9/usr/lib64/python2.7/distutils/command/install_headers.pytinitialize_optionss  cCs|jddddS(NtinstallRRR(RR(RR(tset_undefined_options(R((s9/usr/lib64/python2.7/distutils/command/install_headers.pytfinalize_optionss cCsf|jj}|sdS|j|jx9|D]1}|j||j\}}|jj|q-WdS(N(t distributiontheaderstmkpathRt copy_fileRtappend(RRtheadertoutt_((s9/usr/lib64/python2.7/distutils/command/install_headers.pytrun#s  cCs|jjpgS(N(R R(R((s9/usr/lib64/python2.7/distutils/command/install_headers.pyt get_inputs-scCs|jS(N(R(R((s9/usr/lib64/python2.7/distutils/command/install_headers.pyt get_outputs0s(s install-dir=Rs$directory to install header files to(RRs-force installation (overwrite existing files)( t__name__t __module__t descriptiont user_optionstboolean_optionsR R RRR(((s9/usr/lib64/python2.7/distutils/command/install_headers.pyR s     N(t__doc__t __revision__tdistutils.coreRR(((s9/usr/lib64/python2.7/distutils/command/install_headers.pytsPKvr]d7''command/register.pycnu[ {fc@szdZdZddlZddlZddlZddlmZddlmZddl m Z defdYZ dS( shdistutils.command.register Implements the Distutils 'register' command (register with the repository). s$Id$iN(twarn(t PyPIRCCommand(tlogtregistercBseZdZejddgZejdddgZddfgZdZd Z d Z d Z d Z d Z dZdZdZddZRS(s7register the distribution with the Python package indexslist-classifierss list the valid Trove classifierststrictsBWill stop the registering if the meta-data are not fully complianttverifytcheckcCstS(N(tTrue(tself((s2/usr/lib64/python2.7/distutils/command/register.pyttcCs#tj|d|_d|_dS(Ni(Rtinitialize_optionstlist_classifiersR(R((s2/usr/lib64/python2.7/distutils/command/register.pyR s  cCs>tj|id|jfd6dd6}||jjds   PKvr]% p p command/install_scripts.pyonu[ {fc@sbdZdZddlZddlmZddlmZddlmZdefdYZ dS( sudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.s$Id$iN(tCommand(tlog(tST_MODEtinstall_scriptscBsYeZdZddddgZdd gZd Zd ZdZdZ dZ RS(s%install scripts (Python or otherwise)s install-dir=tdsdirectory to install scripts tos build-dir=tbs'build directory (where to install from)tforcetfs-force installation (overwrite existing files)s skip-buildsskip the build stepscCs(d|_d|_d|_d|_dS(Ni(tNonet install_dirRt build_dirt skip_build(tself((s9/usr/lib64/python2.7/distutils/command/install_scripts.pytinitialize_optionss   cCs*|jdd |jdd d d dS( Ntbuildt build_scriptsR tinstallRR RR (RR (RR (RR(R R (tset_undefined_options(R ((s9/usr/lib64/python2.7/distutils/command/install_scripts.pytfinalize_options#s  cCs|js|jdn|j|j|j|_tjdkrxq|jD]`}|j rrt j d|qPtj |t dBd@}t j d||tj||qPWndS(NRtposixschanging mode of %simischanging mode of %s to %o(R t run_commandt copy_treeR R toutfilestostnamet get_outputstdry_runRtinfotstatRtchmod(R tfiletmode((s9/usr/lib64/python2.7/distutils/command/install_scripts.pytrun+s  cCs|jjpgS(N(t distributiontscripts(R ((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyt get_inputs:scCs |jp gS(N(R(R ((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyR=s(s install-dir=Rsdirectory to install scripts to(s build-dir=Rs'build directory (where to install from)(RRs-force installation (overwrite existing files)N(s skip-buildNsskip the build steps( t__name__t __module__t descriptionRt user_optionstboolean_optionsR RR R#R(((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyRs      ( t__doc__t __revision__Rtdistutils.coreRt distutilsRRRR(((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyts  PKvr]"11command/config.pyonu[ {fc@sdZdZddlZddlZddlmZddlmZddlm Z ddl m Z idd 6d d 6Z d efd YZ edZdS(sdistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". s$Id$iN(tCommand(tDistutilsExecError(tcustomize_compiler(tlogs.ctcs.cxxsc++tconfigc Bs.eZdZd,d-d.d/d0d1d2d3d4g ZdZdZdZdZdZ dZ dZ dZ d Z d+d+d+d!d"Zd+d+d+d!d#Zd+d+d!d$Zd+d+d+d+d!d%Zd+d+d+d+d!d&Zd+d+d+d+d'd'd(Zd+d+d+gd)Zd+d+d!d*ZRS(5sprepare to builds compiler=sspecify the compiler typescc=sspecify the compiler executables include-dirs=tIs.list of directories to search for header filessdefine=tDsC preprocessor macros to definesundef=tUs!C preprocessor macros to undefines libraries=tls!external C libraries to link withs library-dirs=tLs.directories to search for external C librariestnoisys1show every action (compile, link, run, ...) takens dump-sources=dump generated source files before attempting to compile themcCsLd|_d|_d|_d|_d|_d|_d|_g|_dS(Ni( tNonetcompilertcct include_dirst librariest library_dirsR t dump_sourcet temp_files(tself((s0/usr/lib64/python2.7/distutils/command/config.pytinitialize_options6s       cCs|jdkr'|jjpg|_n-t|jtrT|jjtj|_n|jdkrog|_n$t|jtr|jg|_n|j dkrg|_ n-t|j tr|j jtj|_ ndS(N( RR t distributiont isinstancetstrtsplittostpathsepRR(R((s0/usr/lib64/python2.7/distutils/command/config.pytfinalize_optionsEs  cCsdS(N((R((s0/usr/lib64/python2.7/distutils/command/config.pytrunUscCsddlm}m}t|j|s|d|jd|jdd|_t|j|jrx|jj|jn|j r|jj |j n|j r|jj |j qndS(s^Check that 'self.compiler' really is a CCompiler object; if not, make it one. i(t CCompilert new_compilerR tdry_runtforceiN( tdistutils.ccompilerRRRR R RRtset_include_dirsRt set_librariesRtset_library_dirs(RRR((s0/usr/lib64/python2.7/distutils/command/config.pyt_check_compiler]s    cCsdt|}t|d}|rUx|D]}|jd|q*W|jdn|j||ddkr|jdn|j|S(Nt _configtesttws#include <%s> s i(tLANG_EXTtopentwritetclose(Rtbodytheaderstlangtfilenametfiletheader((s0/usr/lib64/python2.7/distutils/command/config.pyt_gen_temp_sourcefileps   cCsT|j|||}d}|jj||g|jj||d|||fS(Ns _configtest.iR(R3RtextendR t preprocess(RR-R.RR/tsrctout((s0/usr/lib64/python2.7/distutils/command/config.pyt _preprocess}s cCs|j|||}|jr2t|d|n|jj|g\}|jj||g|jj|gd|||fS(Nscompiling '%s':R(R3Rt dump_fileR tobject_filenamesRR4tcompile(RR-R.RR/R6tobj((s0/usr/lib64/python2.7/distutils/command/config.pyt_compiles c Cs|j||||\}}tjjtjj|d} |jj|g| d|d|d||jjdk r| |jj} n|j j | ||| fS(NiRRt target_lang( R=RtpathtsplitexttbasenameR tlink_executablet exe_extensionR Rtappend( RR-R.RRRR/R6R<tprog((s0/usr/lib64/python2.7/distutils/command/config.pyt_links"cGsn|s|j}g|_ntjddj|x3|D]+}ytj|Wq;tk req;Xq;WdS(Ns removing: %st (RRtinfotjoinRtremovetOSError(Rt filenamesR0((s0/usr/lib64/python2.7/distutils/command/config.pyt_cleans    RcCsbddlm}|jd}y|j||||Wn|k rSd}nX|j|S(sQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) i(t CompileErrorii(R"RNR&R8RM(RR-R.RR/RNtok((s0/usr/lib64/python2.7/distutils/command/config.pyttry_cpps    c Cs|j|j||||\}}t|trItj|}nt|}d} x9|j} | dkrzPn|j| r^d} Pq^q^W|j |j | S(sConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. iti( R&R8RRtreR;R*treadlinetsearchR,RM( RtpatternR-R.RR/R6R7R1tmatchtline((s0/usr/lib64/python2.7/distutils/command/config.pyt search_cpps      cCs{ddlm}|jy |j||||d}Wn|k rSd}nXtj|rfdpid|j|S(swTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. i(RNiissuccess!sfailure.(R"RNR&R=RRHRM(RR-R.RR/RNRO((s0/usr/lib64/python2.7/distutils/command/config.pyt try_compiles     c Csddlm}m}|jy&|j||||||d} Wn||fk red} nXtj| rxdp{d|j| S(sTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. i(RNt LinkErroriissuccess!sfailure.(R"RNRZR&RFRRHRM( RR-R.RRRR/RNRZRO((s0/usr/lib64/python2.7/distutils/command/config.pyttry_links     c Csddlm}m}|jyA|j||||||\} } } |j| gd} Wn ||tfk rd} nXtj| rdpd|j | S(sTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. i(RNRZiissuccess!sfailure.( R"RNRZR&RFtspawnRRRHRM( RR-R.RRRR/RNRZR6R<texeRO((s0/usr/lib64/python2.7/distutils/command/config.pyttry_runs    ic Cs|jg}|r*|jd|n|jd|rQ|jd|n|jd||jddj|d}|j|||||S(sDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. s int %s ();s int main () {s %s();s %s;t}s (R&RDRIR[( RtfuncR.RRRtdecltcallR-((s0/usr/lib64/python2.7/distutils/command/config.pyt check_funcs   cCs*|j|jd|||g||S(sDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. sint main (void) { }(R&R[(RtlibraryRR.Rtother_libraries((s0/usr/lib64/python2.7/distutils/command/config.pyt check_lib?s  cCs|jddd|gd|S(sDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. R-s /* No body */R.R(RP(RR2RRR/((s0/usr/lib64/python2.7/distutils/command/config.pyt check_headerNsN(s compiler=Nsspecify the compiler type(scc=Nsspecify the compiler executable(s include-dirs=Rs.list of directories to search for header files(sdefine=RsC preprocessor macros to define(sundef=Rs!C preprocessor macros to undefine(s libraries=R s!external C libraries to link with(s library-dirs=R s.directories to search for external C libraries(R Ns1show every action (compile, link, run, ...) taken(s dump-sourceNs=dump generated source files before attempting to compile them(t__name__t __module__t descriptionR t user_optionsRRRR&R3R8R=RFRMRPRXRYR[R^RcRfRg(((s0/usr/lib64/python2.7/distutils/command/config.pyRsT            !cCsb|dkr tjd|n tj|t|}ztj|jWd|jXdS(sjDumps a file content into log.info. If head is not None, will be dumped before the file content. s%sN(R RRHR*treadR,(R0theadR1((s0/usr/lib64/python2.7/distutils/command/config.pyR9Xs   (t__doc__t __revision__RRRtdistutils.coreRtdistutils.errorsRtdistutils.sysconfigRt distutilsRR)RR R9(((s0/usr/lib64/python2.7/distutils/command/config.pyt s  APKvr]command/build_clib.pycnu[ {fc@s{dZdZddlZddlmZddlmZddlmZddl m Z dZ d efd YZ dS( sdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.s$Id$iN(tCommand(tDistutilsSetupError(tcustomize_compiler(tlogcCsddlm}|dS(Ni(tshow_compilers(tdistutils.ccompilerR(R((s4/usr/lib64/python2.7/distutils/command/build_clib.pyRst build_clibcBseZdZdddddgZdd gZdddefgZdZdZ dZ dZ dZ dZ dZRS(s/build C/C++ libraries used by Python extensionss build-clib=tbs%directory to build C/C++ libraries tos build-temp=tts,directory to put temporary build by-productstdebugtgs"compile with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s compiler=tcsspecify the compiler types help-compilerslist available compilerscCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_ dS(Ni( tNoneRt build_tempt librariest include_dirstdefinetundefR R tcompiler(tself((s4/usr/lib64/python2.7/distutils/command/build_clib.pytinitialize_options6s        cCs|jdddd d d |jj|_|jrG|j|jn|jdkrn|jjpeg|_nt|jtr|jjt j |_ndS( NtbuildRRRR R (RR(RR(RR(R R (R R ( tset_undefined_optionst distributionRtcheck_library_listRRt isinstancetstrtsplittostpathsep(R((s4/usr/lib64/python2.7/distutils/command/build_clib.pytfinalize_optionsFs  cCs|js dSddlm}|d|jd|jd|j|_t|j|jdk rv|jj |jn|j dk rx-|j D]\}}|jj ||qWn|j dk rx$|j D]}|jj |qWn|j|jdS(Ni(t new_compilerRtdry_runR (RRR!RR"R RRRtset_include_dirsRt define_macroRtundefine_macrotbuild_libraries(RR!tnametvaluetmacro((s4/usr/lib64/python2.7/distutils/command/build_clib.pytrun_s    cCst|tstdnx|D]}t|t rVt|dkrVtdn|\}}t|tstddnd|kstjdkrtj|krtdd|d nt|ts"td d q"q"Wd S( s`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. s+'libraries' option must be a list of tuplesis*each element of 'libraries' must a 2-tuples+first element of each tuple in 'libraries' s#must be a string (the library name)t/sbad library name '%s': s$may not contain directory separatorsis,second element of each tuple in 'libraries' s!must be a dictionary (build info)N( RtlistRttupletlenRRtseptdict(RRtlibR't build_info((s4/usr/lib64/python2.7/distutils/command/build_clib.pyRws*   "   *cCs>|js dSg}x$|jD]\}}|j|qW|S(N(RRtappend(Rt lib_namestlib_nameR2((s4/usr/lib64/python2.7/distutils/command/build_clib.pytget_library_namess  cCs|j|jg}xe|jD]Z\}}|jd}|dks]t|ttf rmtd|n|j|q W|S(Ntsourcessfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames( RRtgetRRR,R-Rtextend(Rt filenamesR5R2R7((s4/usr/lib64/python2.7/distutils/command/build_clib.pytget_source_filess" c Csx|D]\}}|jd}|dksDt|ttf r\tddd|nt|}tjd||jd}|jd}|jj |d|j d|d|d |j }|jj ||d|j d |j qWdS( NR7s&in 'libraries' option (library '%s'), s&'sources' must be present and must be sa list of source filenamessbuilding '%s' librarytmacrosRt output_dirR (R8RRR,R-RRtinfoRtcompileRR tcreate_static_libR(RRR5R2R7R<Rtobjects((s4/usr/lib64/python2.7/distutils/command/build_clib.pyR&s$"    (s build-clib=Rs%directory to build C/C++ libraries to(s build-temp=Rs,directory to put temporary build by-products(R R s"compile with debugging information(R R s2forcibly build everything (ignore file timestamps)(s compiler=R sspecify the compiler typeN(t__name__t __module__t descriptiont user_optionstboolean_optionsRRt help_optionsRR R*RR6R;R&(((s4/usr/lib64/python2.7/distutils/command/build_clib.pyRs*      $ ( t__doc__t __revision__Rtdistutils.coreRtdistutils.errorsRtdistutils.sysconfigRt distutilsRRR(((s4/usr/lib64/python2.7/distutils/command/build_clib.pyts  PKvr])Of.].]command/bdist_msi.pyonu[ {fc@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZd efd YZdefdYZdS(s# Implements the bdist_msi command. iN(tget_python_version(tCommand(t remove_tree(t StrictVersion(tDistutilsOptionError(tlog(t get_platform(tschematsequencettext(t DirectorytFeaturetDialogtadd_datatPyDialogcBsVeZdZdZdZdddZdddZddd Zd ZRS( sDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs=tj|||jd}|jdd||jddS(sbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)i$t BottomLineiN(R t__init__thtlinetw(tselftargstkwtruler((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs c Cs'|jddddddd|dS( s,Set the title text of the dialog at the top.tTitleii i@i<is{\VerdanaBold10}%sN(R (Rttitle((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyR$stBackic Cs>|rd}nd}|j|d|jddd|||S(sAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatediiiii8i(t pushbuttonR(RRtnexttnametactivetflags((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytback+s tCancelc Cs>|rd}nd}|j|d|jddd|||S(sAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatediii0ii8i(RR(RRRRRR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytcancel6s tNextc Cs>|rd}nd}|j|d|jddd|||S(sAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatediiiii8i(RR(RRRRRR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRAs c Cs:|j|t|j|d|jdddd||S(sAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatediii8ii(RtintRR(RRRRtxpos((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytxbuttonLs( t__name__t __module__t__doc__RRR R"RR&(((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs    t bdist_msicBs=eZdZdedfdddefdddd fd ed d fd ddfdddfdddfdedfdedfdedfg Zdd ddgZddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/gZd0Zd1Z d2Z d3Z d4Z d5Z d6Zd7Zd8ZRS(9s7create a Microsoft Installer (.msi) binary distributions bdist-dir=s1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archivestarget-version=s!require a specific python versions on the target systemsno-target-compiletcs/do not compile .py to .pyc on the target systemsno-target-optimizetos;do not compile .py to .pyo (optimized) on the target systems dist-dir=tds-directory to put final built distributions ins skip-builds2skip rebuilding everything (for testing/debugging)sinstall-script=sUbasename of installation script to be run after installation or before deinstallationspre-install-script=s{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributions2.0s2.1s2.2s2.3s2.4s2.5s2.6s2.7s2.8s2.9s3.0s3.1s3.2s3.3s3.4s3.5s3.6s3.7s3.8s3.9tXcCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS(Ni( tNonet bdist_dirt plat_namet keep_temptno_target_compiletno_target_optimizettarget_versiontdist_dirt skip_buildtinstall_scripttpre_install_scripttversions(R((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytinitialize_options~s          cCsi|jdd |jdkrL|jdj}tjj|d|_nt}|j rz|j j rz||_ n|j r|j g|_ |j r|j j r|j |krtd|fqnt|j|_ |jdd d |jr tdn|jr\xF|j jD]%}|jtjj|kr Pq q Wtd|jnd|_dS( NtbdistR9tmsisMtarget version can only be %s, or the '--skip-build' option must be specifiedR8R3s5the pre-install-script feature is not yet implementeds(install_script '%s' not found in scripts(R9R9(R8R8(R3R3(tset_undefined_optionsR2R1tget_finalized_commandt bdist_basetostpathtjoinRR7t distributionthas_ext_modulesR<R9Rtlistt all_versionsR;R:tscriptstbasenametinstall_script_key(RRBt short_versiontscript((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pytfinalize_optionss8        cCsz|js|jdn|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|st j dd!}nd|j |f}|jd}tjj|jd ||_ntjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|rtj|n|jj }|j!} | s|j"} n| sd } n|j#} d t$| j } |jj}|j r d|j |f} n d|} t%j&|t'| t%j(| | |_)t%j*|j)t+d| fg} |j,p|j-}|r| j.d|fn|j/r| j.d|j/fn| rt0|j)d| n|j1|j2|j3|j4|j)j5t6|jdrTd|j p5d|f}|jj7j.|n|j8svt9|jd|j:ndS(Ntbuildtinstalltreinit_subcommandsiit install_libis.%s-%stlibsinstalling to %stPURELIBtUNKNOWNs%d.%d.%ds Python %s %ss Python %st DistVersiont ARPCONTACTtARPURLINFOABOUTtPropertyt dist_filesR*tanytdry_run(;R9t run_commandtreinitialize_commandR2tprefixtwarn_dirtcompiletoptimizeRFRGR7tsystversionR3RARCRDREt build_baset build_libRtinfotensure_finalizedtinserttruntmkpathR8t get_fullnametget_installer_filenametabspathtexiststunlinktmetadatatauthort maintainert get_versionRtmsilibt init_databaseRtgen_uuidtdbt add_tablesRt author_emailtmaintainer_emailtappendturlR tadd_find_pythont add_filest add_scriptstadd_uitCommitthasattrR[R4RR](RRQRSR7tplat_specifierRPtfullnametinstaller_nameRrRsRetsversiont product_nametpropstemailttup((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRks|        %                  c Cs|j}tjd}tjj|j}t||d|dd}t |ddddddd}||d fg}x|j |j gD]}d|}d|} } d} ||j krd } d } nd |} d} t || | | d| d|}t|||||| }|j |||fqW|j i}x|D]\}}}|g}xg|r|j}xNtj|jD]:}tjj|j|}tjj|r d |j||f}||} t||||| |}|j |q|js.|j|j|dn||kr|j|}||<||jkr|jr|td|nd||_qq||}t|jd|||j|d|jfgqWqiW|j qNW|j|dS(Nt distfilest TARGETDIRt SourceDirtPythont Everythingiit directorytsPython from another locationisPython %s from registrys%s|%ssMultiple files with name %ss[#%s]t DuplicateFile(RyRvtCABRCRDRoR2R R1R R<t other_versionR}RtpoptlistdirtabsoluteREtisdirt make_shortt componenttstart_componenttlogicaltadd_fileR:RLRR tcommit(RRytcabtrootdirtroottftitemsRettargetRtdefaulttdescRtleveltdirtseentfeaturettodotfiletafiletshorttnewdirtkey((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs\    !          +c Csd}x|jD]}d|}d|}d|}d|}d|}d|}d|} d |} d |} d |} tjrd} nd } t|jd|d |d| f|d|d| fgt|jd||f||fgt|jd|d | d|df| d!| d|df| d"| d| dfgt|jd|||f| ||df| d|d fgt|jd|||f| ||df| d|d fgt|jdd|dd|fg|d7}qWdS(#ssAdds code to the installer to compute the location of Python. Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the registry for each version of Python. Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined, else from PYTHON.MACHINE.X.Y. Properties PYTHONX.Y will be set to TARGETDIRX.Y\python.exeis)SOFTWARE\Python\PythonCore\%s\InstallPathspython.machine.s python.user.sPYTHON.MACHINE.s PYTHON.USER.tPythonFromMachinetPythonFromUsert PythonExeRtPYTHONiit RegLocatorit AppSearcht CustomActioni3it[t]s ]\python.exetInstallExecuteSequencetInstallUISequencet ConditionRis NOT TARGETDIRiNii3i3i3(R<RvtWin64R RyR1(Rtstarttvert install_patht machine_regtuser_regt machine_propt user_proptmachine_actiont user_actiont exe_actionttarget_dir_proptexe_proptType((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyREsJ                       cCsQ|jrd}x|j|jgD]l}d|}d|}t|jd|d||jfgt|jd|d||fg|d7}q#Wn|jrMtjj |j d }t |d }|j d |j t |jj |jt|jd d tj|fgt|jddgt|jddgndS(Nisinstall_script.RRi2Rs &Python%s=3ispreinstall.batRsrem =""" %1 %0 exit """ tBinaryt PreInstallis NOT Installedi(RiRN(Rs NOT Installedi(R:R<RR RyRLR;RCRDRER2topentwritetreadtcloseRvRR1(RRRtinstall_actionRtscriptfnR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyR{s,            cCsA|j}d}}d}d}d}d}d}t|dddddddgt|dddddgt|ddddddgt|d.tjt|d/tjt|d0||||||d1d1d1 } | jd2| jd3d1d4d| j d5d6d4d| jd7d8d9d:d;d<d=| jd>d8d?d:d@d<dA| j d1d5dBd1} | j dCdDt|dE||||||d1d1d1 } | jdF| jd3d1d4d| j d5d6d4d| jd7d8d9d:d;d<dG| jd>d8d?d:d@d<dA| j d1d5dBd1} | j dCdDt|dH||||||d1d1d1 } | jdI| jd3d1d4d| j d5d6d4d| jdJd8dKd:d@d<dA| j d1d5dBd1} | j dCdLt|dM||||dN|dOdOdOdPt } | jdQd8dRdSd8d<dT| jdJd@dUdVd@d<dW| jdXd@dYdZddd[| j d\d]d@d^dZd_d`daddd | jdDdbdBdD} | j dCdD| j dbdOdBdb} | j dCdb| j dOdDdBdO} | j dCdOt|d dddZdcdd|dedd }|jdedddVdfddg|jdhdidjdkdlddmdj dCdn|jdodpdjdkdlddqdj dCdr|jdsddjdkdlddtdj dCdu|jdvdwdjdkdldd5dj dCdx|jdydkdjdkdlddbdj dCdz|jd{d|djdkdldd}dj dCd~|jdddjdkdlddOdj dCdt|dddddd|dmdmdm }|jdXdfd8dddd|jdqdjdddddqdm} | j dCdD|jdmddddddmdq} | j dCdLt|ddddd||dLdLdL }|jdXdfd8dddd|jdLddddddLd} | j dCdDt|d ||||||d5d5d5 }|jdJd8d9d:dd<d|jd|jd.d8dd:d@d<d} | jd.dX|jdd8dd:dd<d} | jddX|jd6dd4d|j ddd4d|j d5d} | j ddt|d&||||||ddd5 }|jd|jdd8ddd@dd|jj|jd3dd4d|j dd5} d}| j ddd|xF|j|jgD]1}|d7}| j dd|d|d|qW| j ddd|d| j dCdLd|d|j d5d} | j dd|j ddd8dddiddddd } | j dd|j}d|}d|}|jdd8dSdd8dd} | jd|| jd|| jd|| jd||j ddd8ddddd|ddd } | jd|| jd|| jd|| jd|t|d||||||ddddPt }|jdQd8dRdSd8d<d|jdJd@d@dVd@d<d|jdXd@ddZddd|j ddd@ddZdddddd |jdd}ddj dCdLt|d#||||||ddd5 }|jd|jdd8ddddddgd }|jddddd@d|jddddd@d|jd6dd4d|j dd5} | j dddd| j dCdLdd|j d5d} | j ddt|d,||||||d5d5d5dPt }|jdQd@d8dSd8d<d|jdXdddddd|jddddd@dd|jd.d9d|d9d@dd} | jd.dX|j ddddiddddddd } | jdd|jd3dd4t |j dd5d4t |j d5d6j ddt|d)||||||ddd5 }|jd|jdd8ddZdwdd|jdd8ddZddddgd }|jddddSdd|jddddSdd|jd3dd4t |j d1d5} | j dddd| j ddddR| j dddd`| j dddd| j dddd| j dddd| j dddd| j dddd| j dCdLdd@|j d5dj dddS(Ni2iri,s[ProductName] SetupiiRZt DefaultUIFonttDlgFont8t ErrorDialogtErrorDlgt Progress1tInstallt Progress2tinstallstMaintenanceForm_ActiontRepairt WhichUserstALLt TextStyletTahomai it DlgFontBold8it VerdanaBold10tVerdanai t VerdanaRed9iRt PrepareDlgs(Not Privileged or Windows9x or Installedit WhichUsersDlgs.Privileged and not Windows9x and not InstalleditSelectFeaturesDlgs Not InstalleditMaintenanceTypeDlgs,Installed AND NOT RESUME AND NOT Preselectedit ProgressDlgit ActionTexttUITextt FatalErrortFinishs)[ProductName] Installer ended prematurelys< BackRR!Rt Description1iiFi@iPis[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.t Description2iis.Click the Finish button to exit the Installer.Rt EndDialogtExittUserExits'[ProductName] Installer was interrupteds[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.t ExitDialogs&Completing the [ProductName] Installert DescriptionitReturnt FilesInUseitRetrytbitmapRiis{\DlgFontBold8}Files in Useiis8Some files that need to be updated are currently in use.tTexti7iJsThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.tListtListBoxikiitFileInUseProcesstIgnoreieit ErrorTexti0RtNixiHiQitNotErrorNotYitYestErrorYestAtAbortt ErrorAborttCi*t ErrorCanceltIt ErrorIgnoretOitOktErrorOktRit ErrorRetryt CancelDlgiiUiis;Are you sure you want to cancel [ProductName] installation?i9i8iitWaitForCostingDlgsRPlease wait while the installer finishes determining your disk space requirements.ifi(sOPlease wait while the Installer prepares to guide you through the installation.s&Welcome to the [ProductName] Installerins Pondering...t ActionDataiR#t SpawnDialogsSelect Python InstallationstHints9Select the Python locations where %s should be installed.sNext >s [TARGETDIR]s [SourceDir]torderings [TARGETDIR%s]s FEATURE_SELECTED AND &Python%s=3tSpawnWaitDialogitFeaturest SelectionTreei<tFEATUREtPathEdits[FEATURE_SELECTED]t1s!FEATURE_SELECTED AND &Python%s<>3tOthers$Provide an alternate Python locationtEnabletShowtDisabletHideiiRt DiskCostDlgtOKs&{\DlgFontBold8}Disk Space RequirementssFThe disk space required for the installation of the selected features.i5sThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).t VolumeListtVolumeCostListidiis{120}{70}{70}{70}{70}g?t AdminInstallsGSelect whether to install [ProductName] for all users of this computer.isInstall for all userstJUSTMEisInstall just for mes [ALLUSERS]sWhichUsers="ALL"s({\DlgFontBold8}[Progress1] [ProductName]i#iAsYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.t StatusLabelsStatus:t ProgressBaris Progress donet SetProgresstProgresss)Welcome to the [ProductName] Setup WizardtBodyTexti?s:Select whether you want to repair or remove [ProductName].tRepairRadioGroupilis&Repair [ProductName]tRemovei$sRe&move [ProductName]s [REINSTALL]sMaintenanceForm_Action="Repair"s [Progress1]t Repairings [Progress2]trepairst Reinstalls[REMOVE]sMaintenanceForm_Action="Remove"i tRemovingi tremovesi is MaintenanceForm_Action<>"Change"(RR(RR(RR(RR(RR(RR(RRi Ni(RRiNi(RRi Ni(RRi ii(Rs(Not Privileged or Windows9x or Installedi(Rs.Privileged and not Windows9x and not Installedi(Rs Not Installedi(Rs,Installed AND NOT RESUME AND NOT Preselectedi(RNi(RyR R1R RRRRR R"RteventtFalsetcontrolR RtmappingRFRmR<Rt conditionR&t radiogrouptadd(RRytxtyRRRtmodaltmodelesstfatalR-t user_exitt exit_dialogtinuseterrorR"tcostingtpreptseldlgtorderReRtinstall_other_condtdont_install_other_condtcostt whichuserstgtprogresstmaint((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRs                .......$$$ !!        "  % cCsT|jr%d||j|jf}nd||jf}tjj|j|}|S(Ns%s.%s-py%s.msis %s.%s.msi(R7R3RCRDRER8(RRt base_nameR((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyRns   (R'R(t descriptionR1Rt user_optionstboolean_optionsRIRR=RORkRRRRRn(((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyR*TsP     ) [ 6 6 & >(R)RdRCt sysconfigRtdistutils.coreRtdistutils.dir_utilRtdistutils.versionRtdistutils.errorsRt distutilsRtdistutils.utilRRvRRR R R R R RR*(((s3/usr/lib64/python2.7/distutils/command/bdist_msi.pyts "=PKvr]Z}}command/build_scripts.pyonu[ {fc@sdZdZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ejd Zd efd YZdS( sRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.s$Id$iN(tST_MODE(tCommand(tnewer(t convert_path(tlogs^#!.*python[0-9.]*([ ].*)?$t build_scriptscBsSeZdZdddgZdgZd Zd Zd Zd ZdZ RS(s("build" scripts (copy and fixup #! line)s build-dir=tdsdirectory to "build" (copy) totforcetfs1forcibly build everything (ignore file timestampss executable=tes*specify final destination interpreter pathcCs1d|_d|_d|_d|_d|_dS(N(tNonet build_dirtscriptsRt executabletoutfiles(tself((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytinitialize_optionss     cCs)|jdddd|jj|_dS( NtbuildRR RR (RR (RR(R R (tset_undefined_optionst distributionR (R((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytfinalize_options%s  cCs|jS(N(R (R((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytget_source_files,scCs|js dS|jdS(N(R t copy_scripts(R((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytrun/s c Cstd}|j|jg}x|jD]}d}t|}tjj|jtjj|}|j ||j rt || rt j d|q,nyt|d}Wn&tk r|jsnd}n]X|j}|s |jd|q,ntj|}|r=d}|jdp7d} n|rt jd||j|jst|d } |js| jd |j| fnK| jd tjj|jd d |jd |jdf| f| j|j| jn|r>|jq>q,|r.|jn|j||q,Wtj dkrx|D]|} |jrzt jd| qXtj!| t"d@} | dBd@} | | krXt jd| | | tj#| | qXqXWndS(s"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. t sysconfigisnot copying %s (up-to-date)trs%s is an empty file (skipping)itscopying and adjusting %s -> %stws#!%s%s tBINDIRs python%s%stVERSIONtEXEtposixschanging mode of %siims!changing mode of %s from %o to %oN($t __import__tmkpathR R RtostpathtjointbasenametappendRRRtdebugtopentIOErrortdry_runR treadlinetwarnt first_line_retmatchtgrouptinfotis_python_buildtwriteR tget_config_vart writelinest readlinestcloset copy_filetnametstatRtchmod(Rt _sysconfigRtscripttadjusttoutfileRt first_lineR.t post_interptoutftfiletoldmodetnewmode((s7/usr/lib64/python2.7/distutils/command/build_scripts.pyR5sr  $                     (s build-dir=Rsdirectory to "build" (copy) to(RRs1forcibly build everything (ignore file timestamps(s executable=R s*specify final destination interpreter path( t__name__t __module__t descriptiont user_optionstboolean_optionsRRRRR(((s7/usr/lib64/python2.7/distutils/command/build_scripts.pyRs      (t__doc__t __revision__R"treR9Rtdistutils.coreRtdistutils.dep_utilRtdistutils.utilRt distutilsRtcompileR-R(((s7/usr/lib64/python2.7/distutils/command/build_scripts.pytsPKvr]ܚy command/clean.pycnu[ {fc@sbdZdZddlZddlmZddlmZddlmZdefdYZ dS( sBdistutils.command.clean Implements the Distutils 'clean' command.s$Id$iN(tCommand(t remove_tree(tlogtcleancBsJeZdZddddddgZd gZdZdZdZRS(s-clean up temporary files from 'build' commands build-base=tbs2base build directory (default: 'build.build-base')s build-lib=s<build directory for all modules (default: 'build.build-lib')s build-temp=tts7temporary build directory (default: 'build.build-temp')sbuild-scripts=s<build directory for scripts (default: 'build.build-scripts')s bdist-base=s+temporary directory for built distributionstalltas7remove all build output, not just temporary by-productscCs:d|_d|_d|_d|_d|_d|_dS(N(tNonet build_baset build_libt build_tempt build_scriptst bdist_baseR(tself((s//usr/lib64/python2.7/distutils/command/clean.pytinitialize_options"s      cCs-|jddd d d |jdd dS( NtbuildR R R R tbdistR (R R (R R (R R (R R (R R (tset_undefined_options(R((s//usr/lib64/python2.7/distutils/command/clean.pytfinalize_options*s  cCstjj|jr.t|jd|jntjd|j|jrx[|j |j |j fD]>}tjj|rt|d|jqctj d|qcWn|jsy'tj |jtjd|jWqtk rqXndS(Ntdry_runs%'%s' does not exist -- can't clean its removing '%s'(tostpathtexistsR RRRtdebugRR R R twarntrmdirR tinfotOSError(Rt directory((s//usr/lib64/python2.7/distutils/command/clean.pytrun3s$       (s build-base=Rs2base build directory (default: 'build.build-base')N(s build-lib=Ns<build directory for all modules (default: 'build.build-lib')(s build-temp=Rs7temporary build directory (default: 'build.build-temp')(sbuild-scripts=Ns<build directory for scripts (default: 'build.build-scripts')(s bdist-base=Ns+temporary directory for built distributions(RRs7remove all build output, not just temporary by-products( t__name__t __module__t descriptionRt user_optionstboolean_optionsRRR(((s//usr/lib64/python2.7/distutils/command/clean.pyRs"    ( t__doc__t __revision__Rtdistutils.coreRtdistutils.dir_utilRt distutilsRR(((s//usr/lib64/python2.7/distutils/command/clean.pyts  PKvr]4tDtDcommand/bdist_rpm.pyonu[ {fc@sdZdZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZmZmZmZdd lmZd efd YZdS( swdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).s$Id$iN(tCommand(tDEBUG(t write_file(tget_python_version(tDistutilsOptionErrortDistutilsPlatformErrortDistutilsFileErrortDistutilsExecError(tlogt bdist_rpmc+BseZdZd^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddg)Zd2d7d;d0dSgZid2d56d7d96d;d=6ZdVZdWZdXZ dYZ dZZ d[Z d\Z RS(screate an RPM distributions bdist-base=s/base directory for creating built distributionss rpm-base=sdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)s dist-dir=tdsDdirectory to put final RPM files in (and .spec files if --spec-only)spython=sMpath to Python interpreter to hard-code in the .spec file (default: "python")s fix-pythonsLhard-code the exact path to the current Python interpreter in the .spec files spec-onlysonly regenerate spec files source-onlysonly generate source RPMs binary-onlysonly generate binary RPMs use-bzip2s7use bzip2 instead of gzip to create source distributionsdistribution-name=sgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)sgroup=s9package classification [default: "Development/Libraries"]srelease=sRPM release numbersserial=sRPM serial numbersvendor=saRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script]s packager=sBRPM packager (eg. "Jane Doe ") [default: vendor]s doc-files=s6list of documentation files (space or comma-separated)s changelog=s RPM changelogsicon=sname of icon files provides=s%capabilities provided by this packages requires=s%capabilities required by this packages conflicts=s-capabilities which conflict with this packagesbuild-requires=s+capabilities required to build this packages obsoletes=s*capabilities made obsolete by this packages no-autoreqs+do not automatically calculate dependenciess keep-temptks"don't clean up RPM build directorys no-keep-temps&clean up RPM build directory [default]suse-rpm-opt-flagss8compile with RPM_OPT_FLAGS when building from source RPMsno-rpm-opt-flagss&do not pass any RPM CFLAGS to compilers rpm3-modes"RPM 3 compatibility mode (default)s rpm2-modesRPM 2 compatibility modes prep-script=s3Specify a script for the PREP phase of RPM buildings build-script=s4Specify a script for the BUILD phase of RPM buildings pre-install=s:Specify a script for the pre-INSTALL phase of RPM buildingsinstall-script=s6Specify a script for the INSTALL phase of RPM buildings post-install=s;Specify a script for the post-INSTALL phase of RPM buildingspre-uninstall=s<Specify a script for the pre-UNINSTALL phase of RPM buildingspost-uninstall=s=Specify a script for the post-UNINSTALL phase of RPM buildings clean-script=s4Specify a script for the CLEAN phase of RPM buildingsverify-script=s6Specify a script for the VERIFY phase of the RPM builds force-arch=s0Force an architecture onto the RPM build processtquiettqs3Run the INSTALL phase of RPM building in quiet modecCscd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%d|_&d|_'dS(Nii((tNonet bdist_basetrpm_basetdist_dirtpythont fix_pythont spec_onlyt binary_onlyt source_onlyt use_bzip2tdistribution_nametgrouptreleasetserialtvendortpackagert doc_filest changelogticont prep_scriptt build_scripttinstall_scriptt clean_scriptt verify_scriptt pre_installt post_installt pre_uninstalltpost_uninstalltpreptprovidestrequirest conflictstbuild_requirest obsoletest keep_temptuse_rpm_opt_flagst rpm3_modet no_autoreqt force_archR (tself((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pytinitialize_optionssN                                      cCs|jdd |jdkrR|js4tdntjj|jd|_n|j dkr|j ryt j |_ qd|_ n|j rtdntj dkrtdtj n|jr|jrtd n|jjsd |_n|jdd |jdS(NtbdistRs)you must specify --rpm-base in RPM 2 modetrpmRs8--python and --fix-python are mutually exclusive optionstposixs9don't know how to create RPM distributions on platform %ss6cannot supply both '--source-only' and '--binary-only'iR(RR(RR(tset_undefined_optionsRRR2RtostpathtjoinRRRtsyst executabletnameRRRt distributionthas_ext_modulesR1tfinalize_package_data(R5((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pytfinalize_optionss0         cCs|jdd|jdd|jj|jjf|jd|jdt|jtrxEdD]:}tj j |ro||jkro|jj |qoqoWn|jd d |jd |jd |jd |j |j |_ |jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jd|jddS(NRsDevelopment/LibrariesRs%s <%s>RRtREADMEs README.txtRt1RRRR R!R"R#R$R%R&R'R(R)R+R,R-R.R/R4(REs README.txt(t ensure_stringRAt get_contacttget_contact_emailtensure_string_listt isinstanceRtlistR;R<texiststappendt_format_changelogRtensure_filename(R5treadme((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyRCs>    !                  cCstr>dGHdG|jGHdG|jGHdG|jGHdG|jGHn|jr`|j}|j|nNi}x;d'D]3}tj j |j |||<|j||qmW|d}tj j |d |j j }|jt||jfd ||jrdS|j j}|jd }|jr4dg|_n dg|_|jd ||j _|jd}|d}|j|||jrtj j|jr|j|j|qtd|jntjddg} tj jdstj jdrdg} n|jr)| jdn&|jrB| jdn | jd|j r| j!ddtj j"|j gn|j#s| jdn|j$r| jdn| j|d} | d} d | d!} d"| | |f} tj%| }zg}d}x\|j'}|s(Pnt(j)t(j*|}|j|d#|dkr|d}qqW|j+}|rt,d$t-| nWd|j+X|j.| |j/s|j j0rt1}nd%}|jsKtj j |d |}|j2||jtj j |j|}|j jjd&||fn|jsx|D]}tj j |d |}tj j|r[|j2||jtj j |jtj j3|}|j jjd&||fq[q[WqndS((Nsbefore _get_package_data():svendor =s packager =s doc_files =s changelog =tSOURCEStSPECStBUILDtRPMStSRPMSs%s.specs writing '%s'tsdisttbztartgztarisicon file '%s' does not exists building RPMsR8s/usr/bin/rpmbuilds /bin/rpmbuildtrpmbuilds-bss-bbs-bas--defines _topdir %ss--cleans--quiets%{name}-%{version}-%{release}s.src.rpms%{arch}/s .%{arch}.rpms%rpm -q --qf '%s %s\n' --specfile '%s'isFailed to execute: %stanyR (RRRSRTRURV(4RRRRRRRtmkpathR;R<R=RRAtget_nametexecuteRt_make_spec_filet dist_filestreinitialize_commandRtformatst run_commandtget_archive_filest copy_fileR RMRRtinfoRRNRR2textendtabspathR0R tpopenRtreadlinetstringtsplittstriptcloseRtreprtspawntdry_runRBRt move_filetbasename(R5tspec_dirtrpm_dirR t spec_pathtsaved_dist_filesRWtsourcet source_dirtrpm_cmdt nvr_stringtsrc_rpmt non_src_rpmtq_cmdtoutt binary_rpmst source_rpmtlinetltstatust pyversiontsrpmtfilenameR8((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pytruns                                            cCs"tjj|jtjj|S(N(R;R<R=RRs(R5R<((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyt _dist_pathsc Csd|jjd|jjjddd|jjd|jjdddd|jjg}|jd d d g|jr|jd n |jd |jd|jj d|j ddg|j s|jj s|jdqn|jd|j x~dBD]v}t |tj|}t|trj|jd|tj|fq|dCk r|jd||fqqW|jjdkr|jd|jjn|jr|jd|jn|jr|jdtj|jn|jr;|jdtjj|jn|jrT|jd n|jdd!|jjgd"|jtjjtjd#f}d$|}|j rd%|}nd&|}dDd*d+|fd,d-|fdEdFdGdHdIdJg }x|D]\}} } t || }|s'| r|jdd;|g|ro|jtj!t"|d<j#d=q|j| qqW|jdd>d?g|j$r|jd@tj|j$n|j%r|jddAg|j|j%n|S(KsiGenerate the text of an RPM spec file and return it as a list of strings (one per line). s %define name s%define version t-t_s%define unmangled_version s%define release ts Summary: s Name: %{name}sVersion: %{version}sRelease: %{release}s-Source0: %{name}-%{unmangled_version}.tar.bz2s,Source0: %{name}-%{unmangled_version}.tar.gzs License: sGroup: s>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootsPrefix: %{_prefix}sBuildArch: noarchs BuildArch: %stVendortPackagertProvidestRequirest Conflictst Obsoletess%s: %stUNKNOWNsUrl: sDistribution: sBuildRequires: sIcon: s AutoReq: 0s %descriptions%s %sis%s buildsenv CFLAGS="$RPM_OPT_FLAGS" s>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESR*R!s&%setup -n %{name}-%{unmangled_version}tbuildR"tinstallR#tcleanR$srm -rf $RPM_BUILD_ROOTt verifyscriptR%tpreR&tpostR'tpreunR(tpostunR)t%trs s%files -f INSTALLED_FILESs%defattr(-,root,root)s%doc s %changelog(RRRRRRN(R*R!s&%setup -n %{name}-%{unmangled_version}(RR$srm -rf $RPM_BUILD_ROOT(RR%N(RR&N(RR'N(RR(N(RR)N(&RAR]t get_versiontreplaceRtget_descriptionRgRRNt get_licenseRR4RBtgetattrRktlowerRKRLR=Rtget_urlRR.R R;R<RsR3tget_long_descriptionRR>targvR1RltopentreadRR( R5t spec_filetfieldtvaltdef_setup_callt def_buildt install_cmdtscript_optionstrpm_opttattrtdefault((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyR_s        #     # &       +     cCs|s |Sg}xtjtj|dD]l}tj|}|ddkrg|jd|gq,|ddkr|j|q,|jd|q,W|ds|d=n|S(sKFormat the changelog correctly and convert it to a list of strings s it*RRs (RkRlRmRgRN(R5Rt new_changelogR((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyRO5s"  N(s bdist-base=Ns/base directory for creating built distributions(s rpm-base=Nsdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)(s dist-dir=R sDdirectory to put final RPM files in (and .spec files if --spec-only)(spython=NsMpath to Python interpreter to hard-code in the .spec file (default: "python")(s fix-pythonNsLhard-code the exact path to the current Python interpreter in the .spec file(s spec-onlyNsonly regenerate spec file(s source-onlyNsonly generate source RPM(s binary-onlyNsonly generate binary RPM(s use-bzip2Ns7use bzip2 instead of gzip to create source distribution(sdistribution-name=Nsgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)(sgroup=Ns9package classification [default: "Development/Libraries"](srelease=NsRPM release number(sserial=NsRPM serial number(svendor=NsaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script](s packager=NsBRPM packager (eg. "Jane Doe ") [default: vendor](s doc-files=Ns6list of documentation files (space or comma-separated)(s changelog=Ns RPM changelog(sicon=Nsname of icon file(s provides=Ns%capabilities provided by this package(s requires=Ns%capabilities required by this package(s conflicts=Ns-capabilities which conflict with this package(sbuild-requires=Ns+capabilities required to build this package(s obsoletes=Ns*capabilities made obsolete by this package(s no-autoreqNs+do not automatically calculate dependencies(s keep-tempR s"don't clean up RPM build directory(s no-keep-tempNs&clean up RPM build directory [default](suse-rpm-opt-flagsNs8compile with RPM_OPT_FLAGS when building from source RPM(sno-rpm-opt-flagsNs&do not pass any RPM CFLAGS to compiler(s rpm3-modeNs"RPM 3 compatibility mode (default)(s rpm2-modeNsRPM 2 compatibility mode(s prep-script=Ns3Specify a script for the PREP phase of RPM building(s build-script=Ns4Specify a script for the BUILD phase of RPM building(s pre-install=Ns:Specify a script for the pre-INSTALL phase of RPM building(sinstall-script=Ns6Specify a script for the INSTALL phase of RPM building(s post-install=Ns;Specify a script for the post-INSTALL phase of RPM building(spre-uninstall=Ns<Specify a script for the pre-UNINSTALL phase of RPM building(spost-uninstall=Ns=Specify a script for the post-UNINSTALL phase of RPM building(s clean-script=Ns4Specify a script for the CLEAN phase of RPM building(sverify-script=Ns6Specify a script for the VERIFY phase of the RPM build(s force-arch=Ns0Force an architecture onto the RPM build process(R R s3Run the INSTALL phase of RPM building in quiet mode(t__name__t __module__t descriptionRt user_optionstboolean_optionst negative_optR6RDRCRRR_RO(((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyR s      0 " /  (t__doc__t __revision__R>R;Rktdistutils.coreRtdistutils.debugRtdistutils.file_utilRtdistutils.sysconfigRtdistutils.errorsRRRRt distutilsRR (((s3/usr/lib64/python2.7/distutils/command/bdist_rpm.pyts   "PKvr]ˣAAAcommand/install.pycnu[ {fc@sdZddlmZdZddlZddlZddlZddlTddlm Z ddl m Z ddl m Z dd lmZdd lmZdd lmZmZmZdd lmZdd lmZddlmZddlmZejdkr1idd6dd6dd6dd6dd6Zn)idd6dd6dd6dd6dd6Ziidd6dd6dd6dd6dd6d6idd6d d6d!d6dd6dd6d"6id#d6d#d6d$d6d%d6d&d6d'6ed(6id#d6d#d6d)d6d*d6d&d6d+6idd6dd6dd6dd6dd6d,6id#d6d#d6d$d6d%d6d&d6d-6Zd0Zd.e fd/YZdS(1sFdistutils.command.install Implements the Distutils 'install' command.i(tlogs$Id$N(t*(tCommand(tDEBUG(tget_config_vars(tDistutilsPlatformError(t write_file(t convert_patht subst_varst change_root(t get_platform(tDistutilsOptionError(t USER_BASE(t USER_SITEs2.2s$basetpurelibtplatlibs$base/Include/$dist_nametheaderss $base/Scriptstscriptstdatas$base/Lib/site-packagess/$base/lib/python$py_version_short/site-packagess5$platbase/lib64/python$py_version_short/site-packagess0$base/include/python$py_version_short/$dist_names $base/bint unix_prefixs$base/lib/pythons$base/lib64/pythons$base/include/python/$dist_namet unix_homes $usersites4$userbase/include/python$py_version_short/$dist_names $userbase/bins $userbaset unix_usertnts4$userbase/Python$py_version_nodot/Include/$dist_names$userbase/Scriptstnt_usertos2tos2_hometinstallcBseZdZdHdIdJddGdefdKd dGd d fdLdMdNddGddfdOdPdQdRdSdTdUdVdWgZdd%d(dgZidd 6Zd,Zd-Z d.Z d/Z d0Z d1Z d2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAefdBefdCefdDefdEdFfgZRS(Xs'install everything from build directorysprefix=sinstallation prefixs exec-prefix=s.(Unix only) prefix for platform-specific filesshome=s+(Unix only) home directory to install undertusers!install in user site-package '%s's install-base=s;base installation directory (instead of --prefix or --home)sinstall-platbase=s8base installation directory for platform-specific files s$(instead of --exec-prefix or --home)sroot=s<install everything relative to this alternate root directorysinstall-purelib=s;installation directory for pure Python module distributionssinstall-platlib=s8installation directory for non-pure module distributionss install-lib=s4installation directory for all module distributions s3(overrides --install-purelib and --install-platlib)sinstall-headers=s(installation directory for C/C++ headerssinstall-scripts=s)installation directory for Python scriptss install-data=s%installation directory for data filestcompiletcscompile .py to .pyc [default]s no-compilesdon't compile .py filess optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs1force installation (overwrite any existing files)s skip-builds2skip rebuilding everything (for testing/debugging)srecord=s3filename in which to record list of installed filescCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ t|_t|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_dS(Nii(tNonetprefixt exec_prefixthomeRt install_basetinstall_platbasetroottinstall_purelibtinstall_platlibtinstall_headerst install_libtinstall_scriptst install_dataR tinstall_userbaseR tinstall_usersiteRtoptimizet extra_pathtinstall_path_fileRt skip_buildtwarn_dirt build_baset build_libtrecord(tself((s1/usr/lib64/python2.7/distutils/command/install.pytinitialize_optionss2                       c CsL|js|js|jr=|js-|jr=tddn|jrd|jsX|jrdtdn|jr|js|js|js|js|jrtdntjdkr|jr|j dd|_qn|j dtjdkr|j n |j |j dtjtjd }td d \}}i |jjd 6|jjd 6|jjd6|d6|d d!d6|d |dd6|d6|d 6|d6|d 6|jd6|jd6|_|j|j d|j|jd<|j|jdR"R#RG((s1/usr/lib64/python2.7/distutils/command/install.pytfinalize_optionss~  $                    cCstrddlm}|dGHx|jD]}|d}|ddkrY|dd!}n||jkrtj|j||}t|| }n!tj||}t||}d||fGHq)WndS(Ni(t longopt_xlatet:it=s %s: %s(Rtdistutils.fancy_getoptRgt user_optionst negative_optRQt translatetgetattr(R8tmsgRgtopttopt_nametval((s1/usr/lib64/python2.7/distutils/command/install.pyRN~s   cCs|jdk s|jdk r|jdkrK|jdkrK|jdksx|jdksx|jdksx|jdkrt dndS|j r|j dkrt dn|j |_|_|j dn|jdk r|j|_|_|j dn|jdkra|jdk r.t dntjjtj|_tjjtj|_n|jdkr|j|_n|j|_|j|_|j ddS(NsPinstall-base or install-platbase supplied, but installation scheme is incompletes$User base directory is not specifiedRRs*must not supply exec-prefix without prefixR(R%R!R&R+R(R)R*R,R-R RR.Rt select_schemeR$R"R#RKRatnormpathRS(R8((s1/usr/lib64/python2.7/distutils/command/install.pyROs<      cCs|jrQ|jdkr'tdn|j|_|_|jtjdn|j dk r|j |_|_|jdnu|j dkrtj j t j |_ n|j |_|_y|jtjWn!tk rtdtjnXdS(Ns$User base directory is not specifiedt_userRs)I don't know how to install stuff on '%s'(RR.R!RR%R&RsRKRLR$R"RaRtRStKeyError(R8((s1/usr/lib64/python2.7/distutils/command/install.pyRPs"   cCsUt|}xDtD]<}d|}t||dkrt||||qqWdS(Ntinstall_(tINSTALL_SCHEMESt SCHEME_KEYSRnR!tsetattr(R8RLtschemetkeytattrname((s1/usr/lib64/python2.7/distutils/command/install.pyRss    cCsx|D]y}t||}|dk rtjdksFtjdkr[tjj|}nt||j}t|||qqWdS(NR:R( RnR!RKRLRat expanduserRRYRz(R8tattrstattrRr((s1/usr/lib64/python2.7/distutils/command/install.pyt _expand_attrss  cCs|jdddgdS(NR%R&R'(R(R8((s1/usr/lib64/python2.7/distutils/command/install.pyRZs cCs#|jddddddgdS(NR(R)R+R*R,R-(R(R8((s1/usr/lib64/python2.7/distutils/command/install.pyR[s  cGs>x7|D]/}d|}t||tt||qWdS(NRw(RzRRn(R8tnamesRLR((s1/usr/lib64/python2.7/distutils/command/install.pyR^s  cCs|jdkr!|jj|_n|jdk rt|jtkr`tj|jd|_nt|jdkr|jd}}n0t|jdkr|j\}}n tdt |}n d}d}||_ ||_ dS(Nt,iiisY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementst( R1R!RUttypet StringTypeRQRRtlenR Rt path_fileRc(R8RRc((s1/usr/lib64/python2.7/distutils/command/install.pyR_s  c GsDx=|D]5}d|}t||t|jt||qWdS(NRw(RzR R'Rn(R8RRLR((s1/usr/lib64/python2.7/distutils/command/install.pyRds  cCs|js dSttjjd}xc|jjD]R\}}|j|r5tjj| r5|j d|tj |dq5q5WdS(s#Create directories under ~ Nt~sos.makedirs('%s', 0700)i( RRRKRaR~RYt iteritemst startswithtisdirt debug_printtmakedirs(R8R$RLRa((s1/usr/lib64/python2.7/distutils/command/install.pyR\"s "cCs|jsU|jd|jjdj}|jrU|tkrUtdqUnx!|jD]}|j|qbW|j r|j n|j r|j }|j rt|j }x/tt|D]}|||||RN(sprefix=Nsinstallation prefix(s exec-prefix=Ns.(Unix only) prefix for platform-specific files(shome=Ns+(Unix only) home directory to install under(s install-base=Ns;base installation directory (instead of --prefix or --home)(sroot=Ns<install everything relative to this alternate root directory(sinstall-purelib=Ns;installation directory for pure Python module distributions(sinstall-platlib=Ns8installation directory for non-pure module distributions(sinstall-headers=Ns(installation directory for C/C++ headers(sinstall-scripts=Ns)installation directory for Python scripts(s install-data=Ns%installation directory for data files(RRscompile .py to .pyc [default](s no-compileNsdon't compile .py files(s optimize=Rslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](RR s1force installation (overwrite any existing files)(s skip-buildNs2skip rebuilding everything (for testing/debugging)(srecord=Ns3filename in which to record list of installed files(t__name__t __module__t descriptionR!R Rktboolean_optionsRlR9RfRNRORPRsRRZR[R^R_RdR\RRRRRRRRt sub_commands(((s1/usr/lib64/python2.7/distutils/command/install.pyR^s    M  +    "  .         (RRRRR( t__doc__t distutilsRt __revision__RSRKRQttypestdistutils.coreRtdistutils.debugRtdistutils.sysconfigRtdistutils.errorsRtdistutils.file_utilRtdistutils.utilRRR R R tsiteR R RTtWINDOWS_SCHEMERxRyR(((s1/usr/lib64/python2.7/distutils/command/install.pyts$        PKvr]% p p command/install_scripts.pycnu[ {fc@sbdZdZddlZddlmZddlmZddlmZdefdYZ dS( sudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.s$Id$iN(tCommand(tlog(tST_MODEtinstall_scriptscBsYeZdZddddgZdd gZd Zd ZdZdZ dZ RS(s%install scripts (Python or otherwise)s install-dir=tdsdirectory to install scripts tos build-dir=tbs'build directory (where to install from)tforcetfs-force installation (overwrite existing files)s skip-buildsskip the build stepscCs(d|_d|_d|_d|_dS(Ni(tNonet install_dirRt build_dirt skip_build(tself((s9/usr/lib64/python2.7/distutils/command/install_scripts.pytinitialize_optionss   cCs*|jdd |jdd d d dS( Ntbuildt build_scriptsR tinstallRR RR (RR (RR (RR(R R (tset_undefined_options(R ((s9/usr/lib64/python2.7/distutils/command/install_scripts.pytfinalize_options#s  cCs|js|jdn|j|j|j|_tjdkrxq|jD]`}|j rrt j d|qPtj |t dBd@}t j d||tj||qPWndS(NRtposixschanging mode of %simischanging mode of %s to %o(R t run_commandt copy_treeR R toutfilestostnamet get_outputstdry_runRtinfotstatRtchmod(R tfiletmode((s9/usr/lib64/python2.7/distutils/command/install_scripts.pytrun+s  cCs|jjpgS(N(t distributiontscripts(R ((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyt get_inputs:scCs |jp gS(N(R(R ((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyR=s(s install-dir=Rsdirectory to install scripts to(s build-dir=Rs'build directory (where to install from)(RRs-force installation (overwrite existing files)N(s skip-buildNsskip the build steps( t__name__t __module__t descriptionRt user_optionstboolean_optionsR RR R#R(((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyRs      ( t__doc__t __revision__Rtdistutils.coreRt distutilsRRRR(((s9/usr/lib64/python2.7/distutils/command/install_scripts.pyts  PKvr]N`wwcommand/bdist_dumb.pycnu[ {fc@sdZdZddlZddlmZddlmZddlmZddl m Z m Z ddl m Z dd lmZd efd YZdS( sdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).s$Id$iN(tget_python_version(t get_platform(tCommand(t remove_treetensure_relative(tDistutilsPlatformError(tlogt bdist_dumbc BseZdZd"dddefd#d d d d fd$d&d'd(d)g Zd ddgZidd6dd6dd6ZdZd Z d!Z RS(*s"create a "dumb" built distributions bdist-dir=tds1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)sformat=tfs0archive format to create (tar, ztar, gztar, zip)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archives dist-dir=s-directory to put final built distributions ins skip-builds2skip rebuilding everything (for testing/debugging)trelatives7build the archive using relative paths (default: false)sowner=tus@Owner name used when creating a tar file [default: current user]sgroup=tgsAGroup name used when creating a tar file [default: current group]tgztartposixtziptnttos2cCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_ dS(Ni( tNonet bdist_dirt plat_nametformatt keep_temptdist_dirt skip_buildR townertgroup(tself((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pytinitialize_options7s        cCs|jdkr<|jdj}tjj|d|_n|jdkry|jtj |_Wqt k rt ddtj qXn|j ddd d dS( Ntbdisttdumbs2don't know how to create dumb built distributions son platform %sRRR(RR(RR(RR( RRtget_finalized_commandt bdist_basetostpathtjoinRtdefault_formattnametKeyErrorRtset_undefined_options(RR"((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pytfinalize_optionsBs  c Cs|js|jdn|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j dkr|j d d }nt jj|j|}|js|j}nj|jjr&|j|jkr&td t|jt|jfn!t jj|jt|j}|j||jd |d |jd|j}|jjrt}nd}|jjjd||f|jst |jd|j!ndS(Ntbuildtinstalltreinit_subcommandsiisinstalling to %ss%s.%sRt:t-sScan't make a dumb built distribution where base and platbase are different (%s, %s)troot_dirRRtanyRtdry_run("Rt run_commandtreinitialize_commandRtroottwarn_dirRtinfot distributiont get_fullnameRR#R'treplaceR$R%RR thas_ext_modulest install_basetinstall_platbaseRtreprRt make_archiveRRRRt dist_filestappendRRR2(RR,tarchive_basenametpseudoinstall_roott archive_roottfilenamet pyversion((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pytrunTsB             (s bdist-dir=Rs1temporary directory for creating the distribution(sformat=R s0archive format to create (tar, ztar, gztar, zip)(s dist-dir=Rs-directory to put final built distributions inN(s skip-buildNs2skip rebuilding everything (for testing/debugging)(R Ns7build the archive using relative paths (default: false)(sowner=R s@Owner name used when creating a tar file [default: current user](sgroup=RsAGroup name used when creating a tar file [default: current group]( t__name__t __module__t descriptionRRt user_optionstboolean_optionsR&RR*RG(((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pyRs8     (t__doc__t __revision__R#t sysconfigRtdistutils.utilRtdistutils.coreRtdistutils.dir_utilRRtdistutils.errorsRt distutilsRR(((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pyts PKvr]t. . command/install_data.pycnu[ {fc@sXdZdZddlZddlmZddlmZmZdefdYZdS(sdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.s$Id$iN(tCommand(t change_roott convert_patht install_datacBsSeZdZdddgZdgZd Zd Zd Zd Z d Z RS(sinstall data filess install-dir=tdsIbase directory for installing data files (default: installation base dir)sroot=s<install everything relative to this alternate root directorytforcetfs-force installation (overwrite existing files)cCs@d|_g|_d|_d|_|jj|_d|_dS(Nii(tNonet install_dirtoutfilestrootRt distributiont data_filestwarn_dir(tself((s6/usr/lib64/python2.7/distutils/command/install_data.pytinitialize_optionss     cCs|jdddddS( NtinstallRRR R(RR(R R (RR(tset_undefined_options(R((s6/usr/lib64/python2.7/distutils/command/install_data.pytfinalize_options%s cCsk|j|jxT|jD]I}t|trt|}|jra|jd||jfn|j||j\}}|j j |qt|d}t j j |st j j|j|}n|jrt|j|}n|j||dgkr|j j |qxF|dD]:}t|}|j||\}}|j j |q%WqWdS(NsMsetup script did not provide a directory for '%s' -- installing right in '%s'ii(tmkpathRR t isinstancetstrRR twarnt copy_fileR tappendtostpathtisabstjoinR R(RRtoutt_tdirtdata((s6/usr/lib64/python2.7/distutils/command/install_data.pytrun,s*      cCs |jp gS(N(R (R((s6/usr/lib64/python2.7/distutils/command/install_data.pyt get_inputsMscCs|jS(N(R (R((s6/usr/lib64/python2.7/distutils/command/install_data.pyt get_outputsPs(s install-dir=RsIbase directory for installing data files (default: installation base dir)N(sroot=Ns<install everything relative to this alternate root directory(RRs-force installation (overwrite existing files)( t__name__t __module__t descriptionRt user_optionstboolean_optionsRRR!R"R#(((s6/usr/lib64/python2.7/distutils/command/install_data.pyRs     ! ( t__doc__t __revision__Rtdistutils.coreRtdistutils.utilRRR(((s6/usr/lib64/python2.7/distutils/command/install_data.pyts  PKvr]ܚy command/clean.pyonu[ {fc@sbdZdZddlZddlmZddlmZddlmZdefdYZ dS( sBdistutils.command.clean Implements the Distutils 'clean' command.s$Id$iN(tCommand(t remove_tree(tlogtcleancBsJeZdZddddddgZd gZdZdZdZRS(s-clean up temporary files from 'build' commands build-base=tbs2base build directory (default: 'build.build-base')s build-lib=s<build directory for all modules (default: 'build.build-lib')s build-temp=tts7temporary build directory (default: 'build.build-temp')sbuild-scripts=s<build directory for scripts (default: 'build.build-scripts')s bdist-base=s+temporary directory for built distributionstalltas7remove all build output, not just temporary by-productscCs:d|_d|_d|_d|_d|_d|_dS(N(tNonet build_baset build_libt build_tempt build_scriptst bdist_baseR(tself((s//usr/lib64/python2.7/distutils/command/clean.pytinitialize_options"s      cCs-|jddd d d |jdd dS( NtbuildR R R R tbdistR (R R (R R (R R (R R (R R (tset_undefined_options(R((s//usr/lib64/python2.7/distutils/command/clean.pytfinalize_options*s  cCstjj|jr.t|jd|jntjd|j|jrx[|j |j |j fD]>}tjj|rt|d|jqctj d|qcWn|jsy'tj |jtjd|jWqtk rqXndS(Ntdry_runs%'%s' does not exist -- can't clean its removing '%s'(tostpathtexistsR RRRtdebugRR R R twarntrmdirR tinfotOSError(Rt directory((s//usr/lib64/python2.7/distutils/command/clean.pytrun3s$       (s build-base=Rs2base build directory (default: 'build.build-base')N(s build-lib=Ns<build directory for all modules (default: 'build.build-lib')(s build-temp=Rs7temporary build directory (default: 'build.build-temp')(sbuild-scripts=Ns<build directory for scripts (default: 'build.build-scripts')(s bdist-base=Ns+temporary directory for built distributions(RRs7remove all build output, not just temporary by-products( t__name__t __module__t descriptionRt user_optionstboolean_optionsRRR(((s//usr/lib64/python2.7/distutils/command/clean.pyRs"    ( t__doc__t __revision__Rtdistutils.coreRtdistutils.dir_utilRt distutilsRR(((s//usr/lib64/python2.7/distutils/command/clean.pyts  PKvr]"11command/config.pycnu[ {fc@sdZdZddlZddlZddlmZddlmZddlm Z ddl m Z idd 6d d 6Z d efd YZ edZdS(sdistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". s$Id$iN(tCommand(tDistutilsExecError(tcustomize_compiler(tlogs.ctcs.cxxsc++tconfigc Bs.eZdZd,d-d.d/d0d1d2d3d4g ZdZdZdZdZdZ dZ dZ dZ d Z d+d+d+d!d"Zd+d+d+d!d#Zd+d+d!d$Zd+d+d+d+d!d%Zd+d+d+d+d!d&Zd+d+d+d+d'd'd(Zd+d+d+gd)Zd+d+d!d*ZRS(5sprepare to builds compiler=sspecify the compiler typescc=sspecify the compiler executables include-dirs=tIs.list of directories to search for header filessdefine=tDsC preprocessor macros to definesundef=tUs!C preprocessor macros to undefines libraries=tls!external C libraries to link withs library-dirs=tLs.directories to search for external C librariestnoisys1show every action (compile, link, run, ...) takens dump-sources=dump generated source files before attempting to compile themcCsLd|_d|_d|_d|_d|_d|_d|_g|_dS(Ni( tNonetcompilertcct include_dirst librariest library_dirsR t dump_sourcet temp_files(tself((s0/usr/lib64/python2.7/distutils/command/config.pytinitialize_options6s       cCs|jdkr'|jjpg|_n-t|jtrT|jjtj|_n|jdkrog|_n$t|jtr|jg|_n|j dkrg|_ n-t|j tr|j jtj|_ ndS(N( RR t distributiont isinstancetstrtsplittostpathsepRR(R((s0/usr/lib64/python2.7/distutils/command/config.pytfinalize_optionsEs  cCsdS(N((R((s0/usr/lib64/python2.7/distutils/command/config.pytrunUscCsddlm}m}t|j|s|d|jd|jdd|_t|j|jrx|jj|jn|j r|jj |j n|j r|jj |j qndS(s^Check that 'self.compiler' really is a CCompiler object; if not, make it one. i(t CCompilert new_compilerR tdry_runtforceiN( tdistutils.ccompilerRRRR R RRtset_include_dirsRt set_librariesRtset_library_dirs(RRR((s0/usr/lib64/python2.7/distutils/command/config.pyt_check_compiler]s    cCsdt|}t|d}|rUx|D]}|jd|q*W|jdn|j||ddkr|jdn|j|S(Nt _configtesttws#include <%s> s i(tLANG_EXTtopentwritetclose(Rtbodytheaderstlangtfilenametfiletheader((s0/usr/lib64/python2.7/distutils/command/config.pyt_gen_temp_sourcefileps   cCsT|j|||}d}|jj||g|jj||d|||fS(Ns _configtest.iR(R3RtextendR t preprocess(RR-R.RR/tsrctout((s0/usr/lib64/python2.7/distutils/command/config.pyt _preprocess}s cCs|j|||}|jr2t|d|n|jj|g\}|jj||g|jj|gd|||fS(Nscompiling '%s':R(R3Rt dump_fileR tobject_filenamesRR4tcompile(RR-R.RR/R6tobj((s0/usr/lib64/python2.7/distutils/command/config.pyt_compiles c Cs|j||||\}}tjjtjj|d} |jj|g| d|d|d||jjdk r| |jj} n|j j | ||| fS(NiRRt target_lang( R=RtpathtsplitexttbasenameR tlink_executablet exe_extensionR Rtappend( RR-R.RRRR/R6R<tprog((s0/usr/lib64/python2.7/distutils/command/config.pyt_links"cGsn|s|j}g|_ntjddj|x3|D]+}ytj|Wq;tk req;Xq;WdS(Ns removing: %st (RRtinfotjoinRtremovetOSError(Rt filenamesR0((s0/usr/lib64/python2.7/distutils/command/config.pyt_cleans    RcCsbddlm}|jd}y|j||||Wn|k rSd}nX|j|S(sQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) i(t CompileErrorii(R"RNR&R8RM(RR-R.RR/RNtok((s0/usr/lib64/python2.7/distutils/command/config.pyttry_cpps    c Cs|j|j||||\}}t|trItj|}nt|}d} x9|j} | dkrzPn|j| r^d} Pq^q^W|j |j | S(sConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. iti( R&R8RRtreR;R*treadlinetsearchR,RM( RtpatternR-R.RR/R6R7R1tmatchtline((s0/usr/lib64/python2.7/distutils/command/config.pyt search_cpps      cCs{ddlm}|jy |j||||d}Wn|k rSd}nXtj|rfdpid|j|S(swTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. i(RNiissuccess!sfailure.(R"RNR&R=RRHRM(RR-R.RR/RNRO((s0/usr/lib64/python2.7/distutils/command/config.pyt try_compiles     c Csddlm}m}|jy&|j||||||d} Wn||fk red} nXtj| rxdp{d|j| S(sTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. i(RNt LinkErroriissuccess!sfailure.(R"RNRZR&RFRRHRM( RR-R.RRRR/RNRZRO((s0/usr/lib64/python2.7/distutils/command/config.pyttry_links     c Csddlm}m}|jyA|j||||||\} } } |j| gd} Wn ||tfk rd} nXtj| rdpd|j | S(sTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. i(RNRZiissuccess!sfailure.( R"RNRZR&RFtspawnRRRHRM( RR-R.RRRR/RNRZR6R<texeRO((s0/usr/lib64/python2.7/distutils/command/config.pyttry_runs    ic Cs|jg}|r*|jd|n|jd|rQ|jd|n|jd||jddj|d}|j|||||S(sDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. s int %s ();s int main () {s %s();s %s;t}s (R&RDRIR[( RtfuncR.RRRtdecltcallR-((s0/usr/lib64/python2.7/distutils/command/config.pyt check_funcs   cCs*|j|jd|||g||S(sDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. sint main (void) { }(R&R[(RtlibraryRR.Rtother_libraries((s0/usr/lib64/python2.7/distutils/command/config.pyt check_lib?s  cCs|jddd|gd|S(sDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. R-s /* No body */R.R(RP(RR2RRR/((s0/usr/lib64/python2.7/distutils/command/config.pyt check_headerNsN(s compiler=Nsspecify the compiler type(scc=Nsspecify the compiler executable(s include-dirs=Rs.list of directories to search for header files(sdefine=RsC preprocessor macros to define(sundef=Rs!C preprocessor macros to undefine(s libraries=R s!external C libraries to link with(s library-dirs=R s.directories to search for external C libraries(R Ns1show every action (compile, link, run, ...) taken(s dump-sourceNs=dump generated source files before attempting to compile them(t__name__t __module__t descriptionR t user_optionsRRRR&R3R8R=RFRMRPRXRYR[R^RcRfRg(((s0/usr/lib64/python2.7/distutils/command/config.pyRsT            !cCsb|dkr tjd|n tj|t|}ztj|jWd|jXdS(sjDumps a file content into log.info. If head is not None, will be dumped before the file content. s%sN(R RRHR*treadR,(R0theadR1((s0/usr/lib64/python2.7/distutils/command/config.pyR9Xs   (t__doc__t __revision__RRRtdistutils.coreRtdistutils.errorsRtdistutils.sysconfigRt distutilsRR)RR R9(((s0/usr/lib64/python2.7/distutils/command/config.pyt s  APKvr]fX,,command/build_py.pyonu[ {fc@sdZdZddlZddlZddlmZddlmZddlmZm Z ddl m Z ddl m Z d efd YZdS( sHdistutils.command.build_py Implements the Distutils 'build_py' command.s$Id$iN(tglob(tCommand(tDistutilsOptionErrortDistutilsFileError(t convert_path(tlogtbuild_pycBseZdZd#d$d&d'd(gZdd gZidd6ZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZddZdZd Zd!Zd"ZRS()s5"build" pure Python modules (copy to build directory)s build-lib=tdsdirectory to "build" (copy) totcompiletcscompile .py to .pycs no-compiles!don't compile .py files [default]s optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS(Ni( tNonet build_libt py_modulestpackaget package_datat package_dirRtoptimizeR (tself((s2/usr/lib64/python2.7/distutils/command/build_py.pytinitialize_options!s       cCs|jddd|jj|_|jj|_|jj|_i|_|jjrx6|jjjD]\}}t||j|X|jd|tjj|Sq>W|jjd}|dk r|jd|n|rtjj|SdSdS(sReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).R+R9iiN( R/RR-R"R.tKeyErrortinsertR:R (RRR"ttailtpdir((s2/usr/lib64/python2.7/distutils/command/build_py.pyR,s(      cCs|dkrYtjj|s1td|ntjj|sYtd|qYn|rtjj|d}tjj|r|Stjdd|ndS(NR9s%package directory '%s' does not exists>supposed package directory '%s' exists, but is not a directorys __init__.pys!package init file '%s' not found s(or not a regular file)( R-R"texistsRtisdirR.R<RtwarnR (RRRtinit_py((s2/usr/lib64/python2.7/distutils/command/build_py.pyt check_packages  cCs1tjj|s)tjd||tStSdS(Ns!file %s (for module %s) not found(R-R"R<RRORFtTrue(Rtmodulet module_file((s2/usr/lib64/python2.7/distutils/command/build_py.pyt check_modulesc Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S(Ns*.pyis excluding %s( RQRR-R"R.tabspathRt script_nametsplitexttbasenameR2t debug_print( RRRt module_filestmodulest setup_scriptR tabs_fRS((s2/usr/lib64/python2.7/distutils/command/build_py.pytfind_package_moduless  "c Cs!i}g}x|jD]}|jd}dj|dd!}|d}y||\}}Wn&tk r|j|}d}nX|s|j||} |df||<| r|j|d| fqntjj||d} |j || sqn|j||| fqW|S(sFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. R+iiit__init__s.py( RR/R.RIR,RQR2R-R"RU( RRR\RSR"Rt module_baseRtcheckedRPRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyt find_moduless*   cCswg}|jr%|j|jn|jrsxB|jD]4}|j|}|j||}|j|q8Wn|S(s4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.(RR;RcRR,R_(RR\RRtm((s2/usr/lib64/python2.7/distutils/command/build_py.pytfind_all_moduless  cCs!g|jD]}|d^q S(Ni(Re(RRS((s2/usr/lib64/python2.7/distutils/command/build_py.pytget_source_files-scCs.|gt||dg}tjj|S(Ns.py(tlistR-R"R.(RR5RRSt outfile_path((s2/usr/lib64/python2.7/distutils/command/build_py.pytget_module_outfile0sic Cs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|j|dn|jdkr|j|dqqqW|g|jD]4\}}} } | D]}tj j | |^qq7}|S(NR+R ito( ReR/RiRR2RRRR-R"R.( RR$R\toutputsRRSRTRGR4R5R8((s2/usr/lib64/python2.7/distutils/command/build_py.pyR)4s    )cCst|tr!|jd}n$t|ttfsEtdn|j|j||}tj j |}|j ||j ||ddS(NR+s:'package' must be a string (dot-separated), list, or tupleRBi( RtstrR/Rgttuplet TypeErrorRiRR-R"RDRCRE(RRSRTRtoutfiletdir((s2/usr/lib64/python2.7/distutils/command/build_py.pyt build_moduleIs  cCs=|j}x*|D]"\}}}|j|||qWdS(N(RcRq(RR\RRSRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyR%Xs cCsfx_|jD]T}|j|}|j||}x*|D]"\}}}|j|||q8Wq WdS(N(RR,R_Rq(RRRR\tpackage_RSRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyR&bs  c Cstjr|jddSddlm}|j}|dtjkrV|tj}n|jr||ddd|j d|d|j n|j dkr||d|j d|j d|d|j ndS( Ns%byte-compiling is disabled, skipping.i(R(RiR tprefixtdry_run( tsystdont_write_bytecodeROtdistutils.utilR(RR-tsepRR RtR(RR>R(Rs((s2/usr/lib64/python2.7/distutils/command/build_py.pyR(ws    (s build-lib=Rsdirectory to "build" (copy) to(RR scompile .py to .pycN(s no-compileNs!don't compile .py files [default](s optimize=R slalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](R R s2forcibly build everything (ignore file timestamps)(t__name__t __module__t descriptionR t user_optionstboolean_optionst negative_optRR#R*RR1R'R,RQRUR_RcReRfRiR)RqR%R&R((((s2/usr/lib64/python2.7/distutils/command/build_py.pyRs8       (    4      (t__doc__t __revision__R-RuRtdistutils.coreRtdistutils.errorsRRRwRt distutilsRR(((s2/usr/lib64/python2.7/distutils/command/build_py.pyts  PKvr]jKKcommand/build_ext.pyonu[ {fc@s/dZdZddlZddlZddlZddlZddlTddlmZm Z ddl m Z ddl Tddl mZmZddlmZdd lmZdd lmZdd lmZejd krdd lmZeeZnejdZdZde fdYZ dS(sdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).s$Id$iN(t*(t USER_BASEt USER_SITE(tCommand(tcustomize_compilertget_python_version(t newer_group(t Extension(t get_platform(tlogtnt(tget_build_versions3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS(Ni(tshow_compilers(tdistutils.ccompilerR (R ((s3/usr/lib64/python2.7/distutils/command/build_ext.pyR st build_extcBs?eZdZdejZdFdGdd d efd d d dfdddefdHdIdJdddefdKdLdMdNdOdQdRdSdTgZd d$d'd-d3gZ d5dPd6e fgZ d7Z d8Z d9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAZdBZdCZdDZdEZRS(Us8build C/C++ extensions (compile/link to build directory)s (separated by '%s')s build-lib=tbs(directory for compiled extension moduless build-temp=tts1directory for temporary files (build by-products)s plat-name=tps>platform name to cross-compile for, if supported (default: %s)tinplacetis=ignore build-lib and put compiled extensions into the source s,directory alongside your pure Python moduless include-dirs=tIs.list of directories to search for header filessdefine=tDsC preprocessor macros to definesundef=tUs!C preprocessor macros to undefines libraries=tls!external C libraries to link withs library-dirs=tLs.directories to search for external C librariessrpath=tRs7directories to search for shared C libraries at runtimes link-objects=tOs2extra explicit link objects to include in the linktdebugtgs'compile/link with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s compiler=tcsspecify the compiler typesswig-cpps)make SWIG create C++ files (default is C)s swig-opts=s!list of SWIG command line optionssswig=spath to the SWIG executabletusers#add user include, library and rpaths help-compilerslist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS(Ni(tNonet extensionst build_libt plat_namet build_tempRtpackaget include_dirstdefinetundeft librariest library_dirstrpatht link_objectsRRtcompilertswigtswig_cppt swig_optsR (tself((s3/usr/lib64/python2.7/distutils/command/build_ext.pytinitialize_optionsls(                   c Csddlm}|jdd.d/d0d1d2d3|jdkrP|jj|_n|jj|_|j }|j d d }|j dkr|jj pg|_ nt |j t r|j j tj|_ n|j j|||kr|j j|n|jd |jd |jdkr5g|_n|jdkrPg|_n3t|jtkrtj |jtj|_n|jdkrg|_n3t|jtkrtj |jtj|_ntjdkr|jjtjjtjd|jr)tjj|jd|_ntjj|jd|_|j jtjjtjdtdkr|j dkrd}n |j d}xd4d5fD]L}tjjtj|}|rtjj||}n|jj|qWqtdkr+|jjtjjtjddqtdkr_|jjtjjtjddq|jjtjjtjddntjdkr|jjtjjtjdntj!d d!kstj!d d"krJtj"j#tjjtjd#r7|jjtjjtj$d$d%t%d&qJ|jjd'n|j&d(r|j's~|jj|j&d)q|jjd'n|j(r|j(j d*}t)d+||_(n|j*r|j*j d*|_*n|j+dkrg|_+n|j+j d,|_+|j,rtjjt-d-}tjjt-d$} tjj.|rm|j j|ntjj.| r|jj| |jj| qndS(6Ni(t sysconfigtbuildR#R%R.RRR$t plat_specificiR*R-R tlibstDebugtReleasetPCi twin32titPCbuildsVS9.0isVS8.0isVS7.1tVC6tos2tConfigitcygwintatheostbintlibtpythontconfigt.tPy_ENABLE_SHAREDtLIBDIRt,cSs |dfS(Nt1((tsymbol((s3/usr/lib64/python2.7/distutils/command/build_ext.pytR<t tinclude(R#R#(R%R%(R.R.(RR(RR(R$R$(R=(R:sVS9.0(/t distutilsR4tset_undefined_optionsR&R!t distributiont ext_packaget ext_modulesR"tget_python_incR't isinstancetstrtsplittostpathseptappendtensure_string_listR*R+ttypet StringTypetstringR,tnametpathtjointsyst exec_prefixRR%t MSVC_VERSIONR$tplatformt executablet startswithtprefixRtget_config_vart python_buildR(tmapR)R1R Rtisdir( R2R4t py_includetplat_py_includetsuffixtdtnew_libtdefinest user_includetuser_lib((s3/usr/lib64/python2.7/distutils/command/build_ext.pytfinalize_optionss        " "     %&$       c Csddlm}|jsdS|jjrm|jd}|jj|jpSg|j j |j n|d|j d|j d|jd|j|_ t|j tjdkr|jtkr|j j|jn|jdk r|j j|jn|jdk rEx-|jD]\}}|j j||qWn|jdk r{x$|jD]}|j j|q^Wn|jdk r|j j|jn|j dk r|j j|j n|jdk r|j j |jn|j!dk r|j j"|j!n|j#dS( Ni(t new_compilert build_clibR.tverbosetdry_runRR ($R RwR"RRthas_c_librariestget_finalized_commandR*textendtget_library_namesR+R[RxR.RyRzRRRYR`R$Rt initializeR'R!tset_include_dirsR(t define_macroR)tundefine_macrot set_librariestset_library_dirsR,tset_runtime_library_dirsR-tset_link_objectstbuild_extensions(R2RwRxR`tvaluetmacro((s3/usr/lib64/python2.7/distutils/command/build_ext.pytruns>    !c Cs!t|tstdnxt|D]\}}t|trIq(nt|t skt|dkrwtdn|\}}tjd|t|t ot j |stdnt|t stdnt||d}x<dD]4}|j |}|dk rt|||qqW|j d|_d|krYtjdn|j d}|rg|_g|_x|D]} t| tot| dkstdnt| dkr|jj| dqt| dkr|jj| qqWn||||j|jg}x!|jD]}|j|jq W|S(N(RR"R}R(R2t filenamesR((s3/usr/lib64/python2.7/distutils/command/build_ext.pytget_source_filess cCsG|j|jg}x*|jD]}|j|j|jq W|S(N(RR"R[tget_ext_fullpathR`(R2toutputsR((s3/usr/lib64/python2.7/distutils/command/build_ext.pyt get_outputss cCs5|j|jx|jD]}|j|qWdS(N(RR"tbuild_extension(R2R((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRsc Cs|j}|dks-t|ttfkrHtddd|jnt|}|j|j}||j }|j pt ||dst j d|jdSt jd|j|j||}|jpg}|j}x!|jD]}|j|fqW|jj|d|jd|d |jd |j d |d |j }||_|jro|j|jn|jp{g}|jp|jj|} |jj||d |j|d|j d|j!d |d|j"|d |j d|jd| dS(Ns*in 'ext_modules' option (extension '%s'), s&'sources' must be present and must be sa list of source filenamestnewers$skipping '%s' extension (up-to-date)sbuilding '%s' extensiont output_dirRR'Rtextra_postargstdependsR*R+Rtexport_symbolsR%t target_lang(#RR!R]tListTypet TupleTypeRR`RRRRRR Rtinfot swig_sourcesRRRR[R.tcompileR%R't_built_objectsRR}Rtlanguagetdetect_languagetlink_shared_objectt get_librariesR+Rtget_export_symbols( R2RRtext_pathRt extra_argsRR)tobjectsR((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRsN $              cCsg}g}i}|jr+tjdn|jsRd|jksRd|jkr[d}nd}xr|D]j}tjj|\}} | dkr|j|d||j||d||          cCstjdkrdStjdkrixgd D]5}tjjd|d}tjj|r)|Sq)WdSn#tjd kr|dStd tjd S( sReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. tposixR/R s1.3s1.2s1.1s c:\swig%ssswig.exeR?s>I don't know how to find (much less run) SWIG on platform '%s'N(s1.3s1.2s1.1(RYR`RaRbtisfiletDistutilsPlatformError(R2tverstfn((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRPs c Cstjdtjd}|j|}|j|}|jd}|j|}tjj|d}|j stjj |d |g}tjj |j |Sdj |dd!}|j d}tjj |j|}tjj ||S(sReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). t/s..RGiitbuild_py(R_t maketransRYtsept translatetget_ext_fullnameRXtget_ext_filenameRaRRbR#R|tabspathtget_package_dir( R2Rtall_dotstfullnametmodpathtfilenameR&Rt package_dir((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRqs cCs&|jdkr|S|jd|SdS(sSReturns the fullname of a given extension name. Adds the `package.` prefixRGN(R&R!(R2R((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRscCsddlm}tj|d}tjdkrZ|t|dd |t|ds$0    PKvr]N`wwcommand/bdist_dumb.pyonu[ {fc@sdZdZddlZddlmZddlmZddlmZddl m Z m Z ddl m Z dd lmZd efd YZdS( sdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).s$Id$iN(tget_python_version(t get_platform(tCommand(t remove_treetensure_relative(tDistutilsPlatformError(tlogt bdist_dumbc BseZdZd"dddefd#d d d d fd$d&d'd(d)g Zd ddgZidd6dd6dd6ZdZd Z d!Z RS(*s"create a "dumb" built distributions bdist-dir=tds1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)sformat=tfs0archive format to create (tar, ztar, gztar, zip)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archives dist-dir=s-directory to put final built distributions ins skip-builds2skip rebuilding everything (for testing/debugging)trelatives7build the archive using relative paths (default: false)sowner=tus@Owner name used when creating a tar file [default: current user]sgroup=tgsAGroup name used when creating a tar file [default: current group]tgztartposixtziptnttos2cCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_ dS(Ni( tNonet bdist_dirt plat_nametformatt keep_temptdist_dirt skip_buildR townertgroup(tself((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pytinitialize_options7s        cCs|jdkr<|jdj}tjj|d|_n|jdkry|jtj |_Wqt k rt ddtj qXn|j ddd d dS( Ntbdisttdumbs2don't know how to create dumb built distributions son platform %sRRR(RR(RR(RR( RRtget_finalized_commandt bdist_basetostpathtjoinRtdefault_formattnametKeyErrorRtset_undefined_options(RR"((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pytfinalize_optionsBs  c Cs|js|jdn|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j dkr|j d d }nt jj|j|}|js|j}nj|jjr&|j|jkr&td t|jt|jfn!t jj|jt|j}|j||jd |d |jd|j}|jjrt}nd}|jjjd||f|jst |jd|j!ndS(Ntbuildtinstalltreinit_subcommandsiisinstalling to %ss%s.%sRt:t-sScan't make a dumb built distribution where base and platbase are different (%s, %s)troot_dirRRtanyRtdry_run("Rt run_commandtreinitialize_commandRtroottwarn_dirRtinfot distributiont get_fullnameRR#R'treplaceR$R%RR thas_ext_modulest install_basetinstall_platbaseRtreprRt make_archiveRRRRt dist_filestappendRRR2(RR,tarchive_basenametpseudoinstall_roott archive_roottfilenamet pyversion((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pytrunTsB             (s bdist-dir=Rs1temporary directory for creating the distribution(sformat=R s0archive format to create (tar, ztar, gztar, zip)(s dist-dir=Rs-directory to put final built distributions inN(s skip-buildNs2skip rebuilding everything (for testing/debugging)(R Ns7build the archive using relative paths (default: false)(sowner=R s@Owner name used when creating a tar file [default: current user](sgroup=RsAGroup name used when creating a tar file [default: current group]( t__name__t __module__t descriptionRRt user_optionstboolean_optionsR&RR*RG(((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pyRs8     (t__doc__t __revision__R#t sysconfigRtdistutils.utilRtdistutils.coreRtdistutils.dir_utilRRtdistutils.errorsRt distutilsRR(((s4/usr/lib64/python2.7/distutils/command/bdist_dumb.pyts PKvr]5))command/bdist_wininst.pyonu[ {fc@sdZdZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z ddlmZdd lmZd efd YZdS( szdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.s$Id$iN(tget_python_version(tCommand(t remove_tree(tDistutilsOptionErrortDistutilsPlatformError(tlog(t get_platformt bdist_wininstcBseZdZd,dddefdddd fd d+d d fd-d.d/d0d1d2d3d4d5g Zdd ddgZd$Zd%Zd&Z d'Z d+d(Z d)Z d*Z RS(6s-create an executable installer for MS Windowss bdist-dir=s1temporary directory for creating the distributions plat-name=tps;platform name to embed in generated filenames (default: %s)s keep-temptks/keep the pseudo-installation tree around after s!creating the distribution archivestarget-version=s!require a specific python versions on the target systemsno-target-compiletcs/do not compile .py to .pyc on the target systemsno-target-optimizetos;do not compile .py to .pyo (optimized) on the target systems dist-dir=tds-directory to put final built distributions insbitmap=tbs>bitmap to use for the installer instead of python-powered logostitle=tts?title to display on the installer background instead of defaults skip-builds2skip rebuilding everything (for testing/debugging)sinstall-script=sUbasename of installation script to be run after installation or before deinstallationspre-install-script=s{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionsuser-access-control=sspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS(Ni(tNonet bdist_dirt plat_namet keep_temptno_target_compiletno_target_optimizettarget_versiontdist_dirtbitmapttitlet skip_buildtinstall_scripttpre_install_scripttuser_access_control(tself((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytinitialize_options@s            cCsV|jdd |jdkr|jrR|jrR|jjd}|j|_n|jdj}t j j |d|_n|j sd|_ n|j r|jj rt}|j r|j |krtd|fn||_ n|jdd d |jrRxF|jjD]%}|jt j j|krPqqWtd|jndS( NtbdistRtwininsttsMtarget version can only be %s, or the '--skip-build' option must be specifiedRRs(install_script '%s' not found in scripts(RR(RR(RR(tset_undefined_optionsRRRRt distributiontget_command_objtget_finalized_commandt bdist_basetostpathtjoinRthas_ext_modulesRRRtscriptstbasename(RRR&t short_versiontscript((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytfinalize_optionsRs4       c Cstjdkr<|jjs-|jjr<tdn|jsU|jdn|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr-|j}|stjdd !}nd |j |f}|jd}tjj|jd ||_nxJdD]B}tj|}|dkrb|d}nt|d||q4Wtjd|j |jtjjdtjj|j d|jtjd=ddlm }|} |jj!} |j"| dd|j } |j#| | |j$|jjrDt%} nd} |jj&j'd| |j(| ftj)d| tj*| |j+st,|j d|j-ndS(Ntwin32s^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformtbuildtinstalltreinit_subcommandsiit install_libis.%s-%stlibtpurelibtplatlibtheadersR+tdatas/Include/$dist_nametinstall_sinstalling to %stPURELIBi(tmktemptziptroot_dirtanyRsremoving temporary file '%s'tdry_run(R6R7R8R+R9(.tsystplatformR#R*thas_c_librariesRRt run_commandtreinitialize_commandRtroottwarn_dirRtcompiletoptimizeRtversionR%R'R(R)t build_baset build_libtstringtuppertsetattrRtinfotensure_finalizedtinserttrunttempfileR<t get_fullnamet make_archivet create_exeRRt dist_filestappendtget_installer_filenametdebugtremoveRRR@( RR2R4Rtplat_specifierR1tkeytvalueR<tarchive_basenametfullnametarcnamet pyversion((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRSzsd              %       c Csg}|jj}|jd|jp+dd}d}xddddd d d d gD]a}t||d}|rZ|d tj|||f}|jd|||fqZqZW|jd|jr|jd|jn|jd|||jd|j |jd|j |j rM|jd|j n|j rm|jd|j n|j p|jj }|jd||ddl}ddl} d|j|j| jf} |jd| tj|dS(Ns [metadata]R!s cSstj|ddS(Ns s\n(RMtreplace(ts((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pytescapestauthort author_emailt descriptiont maintainertmaintainer_emailtnameturlRJs %s: %ss%s=%ss [Setup]sinstall_script=%ssinfo=%sstarget_compile=%dstarget_optimize=%dstarget_version=%ssuser_access_control=%sstitle=%sisBuilt %s with distutils-%ss build_info=%s(R#tmetadataRYtlong_descriptiontgetattrRMt capitalizeRRRRRRRUttimet distutilstctimet __version__R)( RtlinesRnRPRfRlR9RRrRst build_info((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyt get_inidatas<   $      c Csddl}|j|j|j}|j|}|jd||rrt|dj}t|}nd}t|d} | j |j |r| j |nyt Wnt k rn"Xt |t r|jd}n|d}|jr)t|jdj} || d }n |d}| j ||jd d t||} | j | | j t|djdS( Nis creating %strbitwbtmbcsstrs s           cCs`|jr7tjj|jd||j|jf}n%tjj|jd||jf}|S(Ns%s.%s-py%s.exes %s.%s.exe(RR'R(R)RR(RRaR((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRZ5s cCsddlm}t}|jrm|j|krm|j|krL|}qv|jdkrdd}qvd}n |}tjjt}|jdkr|jd dkr|jd}nd }tjj |d ||f}t |d }z|j SWd|j XdS( Ni(tget_build_versions2.4g@gffffff@R0itwinR!swininst-%.1f%s.exeRy( tdistutils.msvccompilerRRRR'R(tdirnamet__file__RR)RRtclose(RRt cur_versiontbvt directorytsfixtfilenametf((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRCs$     "N(s bdist-dir=Ns1temporary directory for creating the distribution(sno-target-compileR s/do not compile .py to .pyc on the target system(sno-target-optimizeR s;do not compile .py to .pyo (optimized) on the target system(s dist-dir=R s-directory to put final built distributions in(sbitmap=R s>bitmap to use for the installer instead of python-powered logo(stitle=Rs?title to display on the installer background instead of default(s skip-buildNs2skip rebuilding everything (for testing/debugging)(sinstall-script=NsUbasename of installation script to be run after installation or before deinstallation(spre-install-script=Ns{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution(suser-access-control=Nsspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UAC(t__name__t __module__RiRRt user_optionstboolean_optionsRR/RSRxRWRZR(((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyRsN      ( S 1 7 (t__doc__t __revision__RAR'RMt sysconfigRtdistutils.coreRtdistutils.dir_utilRtdistutils.errorsRRRsRtdistutils.utilRR(((s7/usr/lib64/python2.7/distutils/command/bdist_wininst.pyts   PKvr]:Oķcommand/build.pyonu[ {fc@swdZdZddlZddlZddlmZddlmZddlm Z dZ defd YZ dS( sBdistutils.command.build Implements the Distutils 'build' command.s$Id$iN(t get_platform(tCommand(tDistutilsOptionErrorcCsddlm}|dS(Ni(tshow_compilers(tdistutils.ccompilerR(R((s//usr/lib64/python2.7/distutils/command/build.pyR stbuildc BseZdZd,d.d/dd-d d fd0d1dddefd2d3d4d5g ZddgZdd-d efgZd!Z d"Z d#Z d$Z d%Z d&Zd'Zd(e fd)e fd*efd+efgZRS(6s"build everything needed to installs build-base=tbs base directory for build librarysbuild-purelib=s2build directory for platform-neutral distributionssbuild-platlib=s3build directory for platform-specific distributionss build-lib=s9build directory for all distribution (defaults to either sbuild-purelib or build-platlibsbuild-scripts=sbuild directory for scriptss build-temp=ttstemporary build directorys plat-name=tps6platform name to build for, if supported (default: %s)s compiler=tcsspecify the compiler typetdebugtgs;compile extensions and libraries with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s executable=tes5specify final destination interpreter path (build.py)s help-compilerslist available compilerscCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS(NRi( t build_basetNonet build_purelibt build_platlibt build_libt build_tempt build_scriptstcompilert plat_nameR R t executable(tself((s//usr/lib64/python2.7/distutils/command/build.pytinitialize_options7s          cCs|jdkrt|_ntjdkr<tdnd|jtjdd!f}ttdru|d7}n|j dkrtj j |j d|_ n|j dkrtj j |j d||_ n|jdkr |jjr|j |_q |j |_n|jdkr=tj j |j d ||_n|jdkrxtj j |j d tjdd!|_n|jdkrtjrtj jtj|_ndS( NtntsW--plat-name only supported on Windows (try using './configure --help' on your platform)s.%s-%siitgettotalrefcounts-pydebugtlibttempsscripts-(RRRtostnameRtsystversionthasattrRtpathtjoinRRRt distributiont ext_modulesRRRtnormpath(Rtplat_specifier((s//usr/lib64/python2.7/distutils/command/build.pytfinalize_optionsFs2   cCs(x!|jD]}|j|q WdS(N(tget_sub_commandst run_command(Rtcmd_name((s//usr/lib64/python2.7/distutils/command/build.pytrunxscCs |jjS(N(R&thas_pure_modules(R((s//usr/lib64/python2.7/distutils/command/build.pyR/scCs |jjS(N(R&thas_c_libraries(R((s//usr/lib64/python2.7/distutils/command/build.pyR0scCs |jjS(N(R&thas_ext_modules(R((s//usr/lib64/python2.7/distutils/command/build.pyR1scCs |jjS(N(R&t has_scripts(R((s//usr/lib64/python2.7/distutils/command/build.pyR2stbuild_pyt build_clibt build_extR(s build-base=Rs base directory for build libraryN(sbuild-purelib=Ns2build directory for platform-neutral distributions(sbuild-platlib=Ns3build directory for platform-specific distributions(sbuild-scripts=Nsbuild directory for scripts(s build-temp=Rstemporary build directory(s compiler=R sspecify the compiler type(R R s;compile extensions and libraries with debugging information(R R s2forcibly build everything (ignore file timestamps)(s executable=Rs5specify final destination interpreter path (build.py)(t__name__t __module__t descriptionRRt user_optionstboolean_optionsRt help_optionsRR*R.R/R0R1R2t sub_commands(((s//usr/lib64/python2.7/distutils/command/build.pyRsN     2       ( t__doc__t __revision__R!Rtdistutils.utilRtdistutils.coreRtdistutils.errorsRRR(((s//usr/lib64/python2.7/distutils/command/build.pyts PKvr]=ib8A8Acommand/sdist.pycnu[ {fc@sdZdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZddlmZdd lmZmZmZdd lmZdd l mZdd lmZd Zde fdYZdS(sadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).s$Id$iN(tglob(twarn(tCommand(tdir_utiltdep_utilt file_utilt archive_util(tTextFile(tDistutilsPlatformErrortDistutilsOptionErrortDistutilsTemplateError(tFileList(tlog(t convert_pathcCsddlm}ddlm}g}x6|jD](}|jd|d||dfq3W|j||jddS(soPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). i(t FancyGetopt(tARCHIVE_FORMATSsformats=is.List of available source distribution formats:N( tdistutils.fancy_getoptRtdistutils.archive_utilRtkeystappendtNonetsortt print_help(RRtformatstformat((s//usr/lib64/python2.7/distutils/command/sdist.pyt show_formatss  tsdistcBs6eZdZdZd<d=d?d@dAdBdCdDdEddddfdFdGdHdIgZdd ddddgZd'd>d(efgZidd 6d d6Z id)d*6d+d,6Z d-efgZ d.Z d/Z d0Zd1Zd2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;ZRS(Js6create a source distribution (tarball, zip file, etc.)cCs|jS(sYCallable used for the check sub-command. Placed here so user_options can view it(tmetadata_check(tself((s//usr/lib64/python2.7/distutils/command/sdist.pytchecking_metadata(ss template=tts5name of manifest template file [default: MANIFEST.in]s manifest=tms)name of manifest file [default: MANIFEST]s use-defaultssRinclude the default file set in the manifest [default; disable with --no-defaults]s no-defaultss"don't include the default file settprunesspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]sno-prunes$don't automatically exclude anythings manifest-onlytosEjust regenerate the manifest and then stop (implies --force-manifest)sforce-manifesttfskforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.sformats=s6formats for source distribution (comma-separated list)s keep-temptks1keep the distribution tree around after creating sarchive file(s)s dist-dir=tdsFdirectory to put the source distribution archive(s) in [default: dist]smetadata-checks[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]sowner=tus@Owner name used when creating a tar file [default: current user]sgroup=tgsAGroup name used when creating a tar file [default: current group]s help-formatss#list available distribution formatstgztartposixtziptnttcheckcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS(Nii(Rttemplatetmanifestt use_defaultsR t manifest_onlytforce_manifestRt keep_temptdist_dirt archive_filesRtownertgroup(R((s//usr/lib64/python2.7/distutils/command/sdist.pytinitialize_optionsfs            cCs|jdkrd|_n|jdkr6d|_n|jd|jdkry|jtjg|_Wqtk rt ddtjqXnt j |j}|rt d|n|j dkrd|_ ndS(NtMANIFESTs MANIFEST.inRs.don't know how to create source distributions son platform %ssunknown archive format '%s'tdist(R-RR,tensure_string_listRtdefault_formattostnametKeyErrorRRtcheck_archive_formatsR R2(Rt bad_format((s//usr/lib64/python2.7/distutils/command/sdist.pytfinalize_options}s$     cCsUt|_x!|jD]}|j|qW|j|jrGdS|jdS(N(R tfilelisttget_sub_commandst run_commandt get_file_listR/tmake_distribution(Rtcmd_name((s//usr/lib64/python2.7/distutils/command/sdist.pytruns   cCs7tdt|jjd}|j|jdS(sDeprecated API.sadistutils.command.sdist.check_metadata is deprecated, use the check command insteadR+N(RtPendingDeprecationWarningt distributiontget_command_objtensure_finalizedRG(RR+((s//usr/lib64/python2.7/distutils/command/sdist.pytcheck_metadatas   cCstjj|j}| rP|jrP|j|jj|jjdS|sq|j dd|jn|jj |j r|j n|r|j n|jr|jn|jj|jj|jdS(sCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Ns&manifest template '%s' does not exist s(using default file list)(R;tpathtisfileR,t_manifest_is_not_generatedt read_manifestRARtremove_duplicatesRtfindallR.t add_defaultst read_templateR tprune_file_listtwrite_manifest(Rttemplate_exists((s//usr/lib64/python2.7/distutils/command/sdist.pyRDs(            cCsd|jjg}x|D]}t|tr|}d}x:|D]2}tjj|rAd}|jj|PqAqAW|s|j dt j |dqqtjj|r|jj|q|j d|qWdd g}xB|D]:}t tjj t|}|r|jj|qqW|jd }|jjrb|jj|jnxM|jD]B\} } } } x-| D]%} |jjtjj | | qWqlW|jjrlx|jjD]}t|trt|}tjj |re|jj|qeq|\}} x?| D]7}t|}tjj |r*|jj|q*q*WqWn|jjr|jd }|jj|jn|jjr|jd }|jj|jn|jjr|jd }|jj|jndS(s9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. tREADMEs README.txtiis,standard file not found: should have one of s, sstandard file '%s' not founds test/test*.pys setup.cfgtbuild_pyt build_extt build_clibt build_scriptsN(RXs README.txt(RIt script_namet isinstancettupleR;RMtexistsRARRtstringtjointfilterRNRtextendtget_finalized_commandthas_pure_modulestget_source_filest data_filesthas_data_fileststrR thas_ext_modulesthas_c_librariest has_scripts(Rt standardstfntaltstgot_ittoptionaltpatterntfilesRYtpkgtsrc_dirt build_dirt filenamestfilenametitemtdirnameR"RZR[R\((s//usr/lib64/python2.7/distutils/command/sdist.pyRSs^      '    cCstjd|jt|jdddddddddddd}zwxp|j}|d krhPny|jj|WqLtt fk r}|j d |j |j |fqLXqLWWd |j Xd S( sRead and parse manifest template file named by self.template. (usually "MANIFEST.in") The parsing and processing is done by 'self.filelist', which updates itself accordingly. sreading manifest template '%s'tstrip_commentsit skip_blankst join_linest lstrip_wst rstrip_wst collapse_joins%s, line %d: %sN(R tinfoR,RtreadlineRRAtprocess_template_lineR t ValueErrorRRyt current_linetclose(RR,tlinetmsg((s//usr/lib64/python2.7/distutils/command/sdist.pyRT,s(    cCs|jd}|jj}|jjdd|j|jjdd|tjdkred}nd}dddd d d d g}d |dj ||f}|jj|dddS(svPrune off branches that might slip into the file list as created by 'read_template()', but really don't belong there: * the build tree (typically "build") * the release tree itself (only an issue if we ran "sdist" previously with --keep-temp, or it aborted) * any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories tbuildtprefixtwin32s/|\\t/tRCStCVSs\.svns\.hgs\.gits\.bzrt_darcss(^|%s)(%s)(%s).*t|tis_regexiN( ReRIt get_fullnameRAtexclude_patternRt build_basetsystplatformRb(RRtbase_dirtsepstvcs_dirstvcs_ptrn((s//usr/lib64/python2.7/distutils/command/sdist.pyRUMs  cCsk|jr$tjd|jdS|jj}|jdd|jtj |j|fd|jdS(sWrite the file list in 'self.filelist' (presumably as filled in by 'add_defaults()' and 'read_template()') to the manifest file named by 'self.manifest'. s5not writing to manually maintained manifest file '%s'Nis*# file GENERATED by distutils, do NOT editswriting manifest file '%s'( ROR RR-RARttinserttexecuteRt write_file(Rtcontent((s//usr/lib64/python2.7/distutils/command/sdist.pyRVgs    cCsStjj|jstSt|jd}z|j}Wd|jX|dkS(NtrUs+# file GENERATED by distutils, do NOT edit (R;RMRNR-tFalsetopenRR(Rtfpt first_line((s//usr/lib64/python2.7/distutils/command/sdist.pyROvs cCsytjd|jt|j}xF|D]>}|j}|jds)| rWq)n|jj|q)W|jdS(sRead the manifest file (named by 'self.manifest') and use it to fill in 'self.filelist', the list of files to include in the source distribution. sreading manifest file '%s't#N( R RR-Rtstript startswithRARR(RR-R((s//usr/lib64/python2.7/distutils/command/sdist.pyRPs  cCs|j|tj||d|jttdrHd}d|}nd}d|}|sntjdn tj |x_|D]W}tj j |stjd|qtj j ||}|j ||d|qW|jjj|dS( sCreate the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. tdry_runtlinkthardsmaking hard links in %s...scopying files to %s...s)no files to distribute -- empty manifest?s#'%s' not a regular file -- skippingN(tmkpathRt create_treeRthasattrR;RR RRRMRNRbt copy_fileRItmetadatatwrite_pkg_info(RRRtRRtfiletdest((s//usr/lib64/python2.7/distutils/command/sdist.pytmake_release_trees      c Cs|jj}tjj|j|}|j||jjg}d|j kr}|j j |j j |j j dnxd|j D]Y}|j ||d|d|jd|j}|j ||jjj dd|fqW||_|jstj|d|jndS( sCreate the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. ttarRR4R5RtRN(RIRR;RMRbR2RRARtRRtpoptindext make_archiveR4R5t dist_filesR3R1Rt remove_treeR(RRt base_nameR3tfmtR((s//usr/lib64/python2.7/distutils/command/sdist.pyREs +    cCs|jS(szReturn the list of archive files created when the command was run, or None if the command hasn't run yet. (R3(R((s//usr/lib64/python2.7/distutils/command/sdist.pytget_archive_filess(s template=Rs5name of manifest template file [default: MANIFEST.in](s manifest=Rs)name of manifest file [default: MANIFEST]N(s use-defaultsNsRinclude the default file set in the manifest [default; disable with --no-defaults](s no-defaultsNs"don't include the default file set(R Nsspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune](sno-pruneNs$don't automatically exclude anything(s manifest-onlyR!sEjust regenerate the manifest and then stop (implies --force-manifest)(sforce-manifestR"skforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.(sformats=Ns6formats for source distribution (comma-separated list)(s dist-dir=R$sFdirectory to put the source distribution archive(s) in [default: dist](smetadata-checkNs[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default](sowner=R%s@Owner name used when creating a tar file [default: current user](sgroup=R&sAGroup name used when creating a tar file [default: current group](t__name__t __module__t descriptionRRt user_optionstboolean_optionsRt help_optionst negative_optR:t sub_commandsR6R@RGRLRDRSRTRURVRORPRRER(((s//usr/lib64/python2.7/distutils/command/sdist.pyR$sn            ( R !    * (t__doc__t __revision__R;RaRRtwarningsRtdistutils.coreRt distutilsRRRRtdistutils.text_fileRtdistutils.errorsRR R tdistutils.filelistR R tdistutils.utilR RR(((s//usr/lib64/python2.7/distutils/command/sdist.pyts   " PKvr]V11command/bdist.pyonu[ {fc@sqdZdZddlZddlmZddlmZddlmZm Z dZ defd YZ dS( sidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).s$Id$iN(t get_platform(tCommand(tDistutilsPlatformErrortDistutilsOptionErrorcCslddlm}g}x6tjD]+}|jd|dtj|dfq W||}|jddS(sFPrint list of available formats (arguments to "--format" option). i(t FancyGetoptsformats=is'List of available distribution formats:N(tdistutils.fancy_getoptRtbdisttformat_commandstappendtNonetformat_commandt print_help(Rtformatstformattpretty_printer((s//usr/lib64/python2.7/distutils/command/bdist.pyt show_formatss Rc BseZdZd0dddefd2d3d4d5d6gZd gZdd1defgZd7Z idd6dd6dd6Z dddddd dd!gZ id8d6d9d6d:d6d;d6d<d6d=d 6d>d6d?d!6Z d-Z d.Zd/ZRS(@s$create a built (binary) distributions bdist-base=tbs4temporary directory for creating built distributionss plat-name=tps;platform name to embed in generated filenames (default: %s)sformats=s/formats for distribution (comma-separated list)s dist-dir=tds=directory to put final built distributions in [default: dist]s skip-builds2skip rebuilding everything (for testing/debugging)sowner=tus@Owner name used when creating a tar file [default: current user]sgroup=tgsAGroup name used when creating a tar file [default: current group]s help-formatss$lists available distribution formatst bdist_rpmtgztartposixtziptnttos2trpmtbztartztarttartwininsttmsisRPM distributiont bdist_dumbsgzip'ed tar filesbzip2'ed tar filescompressed tar filestar filet bdist_wininstsWindows executable installersZIP filet bdist_msisMicrosoft InstallercCsCd|_d|_d|_d|_d|_d|_d|_dS(Ni(R t bdist_baset plat_nameR tdist_dirt skip_buildtgrouptowner(tself((s//usr/lib64/python2.7/distutils/command/bdist.pytinitialize_optionsTs      cCs|jdkr?|jr't|_q?|jdj|_n|jdkr|jdj}tjj |d|j|_n|j d|j dkry|j tj g|_ Wqtk rtddtj qXn|jdkrd|_ndS(Ntbuildsbdist.R s-don't know how to create built distributions son platform %stdist(R%R R'Rtget_finalized_commandR$t build_basetostpathtjointensure_string_listR tdefault_formattnametKeyErrorRR&(R*R/((s//usr/lib64/python2.7/distutils/command/bdist.pytfinalize_options]s$    cCs g}xN|jD]C}y|j|j|dWqtk rRtd|qXqWxtt|jD]}||}|j|}||jkr|j||_ n|dkr|j |_ |j |_ n|||dkrd|_ n|j |qmWdS(Nisinvalid format '%s'R!i(R RR R6Rtrangetlentreinitialize_commandtno_format_optionR R)R(t keep_tempt run_command(R*tcommandsR titcmd_nametsub_cmd((s//usr/lib64/python2.7/distutils/command/bdist.pytrunys"     (s bdist-base=Rs4temporary directory for creating built distributionsN(sformats=Ns/formats for distribution (comma-separated list)(s dist-dir=Rs=directory to put final built distributions in [default: dist](s skip-buildNs2skip rebuilding everything (for testing/debugging)(sowner=Rs@Owner name used when creating a tar file [default: current user](sgroup=RsAGroup name used when creating a tar file [default: current group](R(RsRPM distribution(R!sgzip'ed tar file(R!sbzip2'ed tar file(R!scompressed tar file(R!star file(R"sWindows executable installer(R!sZIP file(R#sMicrosoft Installer(t__name__t __module__t descriptionRR t user_optionstboolean_optionsRt help_optionsR;R4RR R+R7RB(((s//usr/lib64/python2.7/distutils/command/bdist.pyRsJ        ( t__doc__t __revision__R0tdistutils.utilRtdistutils.coreRtdistutils.errorsRRRR(((s//usr/lib64/python2.7/distutils/command/bdist.pyts  PKvr]ˣAAAcommand/install.pyonu[ {fc@sdZddlmZdZddlZddlZddlZddlTddlm Z ddl m Z ddl m Z dd lmZdd lmZdd lmZmZmZdd lmZdd lmZddlmZddlmZejdkr1idd6dd6dd6dd6dd6Zn)idd6dd6dd6dd6dd6Ziidd6dd6dd6dd6dd6d6idd6d d6d!d6dd6dd6d"6id#d6d#d6d$d6d%d6d&d6d'6ed(6id#d6d#d6d)d6d*d6d&d6d+6idd6dd6dd6dd6dd6d,6id#d6d#d6d$d6d%d6d&d6d-6Zd0Zd.e fd/YZdS(1sFdistutils.command.install Implements the Distutils 'install' command.i(tlogs$Id$N(t*(tCommand(tDEBUG(tget_config_vars(tDistutilsPlatformError(t write_file(t convert_patht subst_varst change_root(t get_platform(tDistutilsOptionError(t USER_BASE(t USER_SITEs2.2s$basetpurelibtplatlibs$base/Include/$dist_nametheaderss $base/Scriptstscriptstdatas$base/Lib/site-packagess/$base/lib/python$py_version_short/site-packagess5$platbase/lib64/python$py_version_short/site-packagess0$base/include/python$py_version_short/$dist_names $base/bint unix_prefixs$base/lib/pythons$base/lib64/pythons$base/include/python/$dist_namet unix_homes $usersites4$userbase/include/python$py_version_short/$dist_names $userbase/bins $userbaset unix_usertnts4$userbase/Python$py_version_nodot/Include/$dist_names$userbase/Scriptstnt_usertos2tos2_hometinstallcBseZdZdHdIdJddGdefdKd dGd d fdLdMdNddGddfdOdPdQdRdSdTdUdVdWgZdd%d(dgZidd 6Zd,Zd-Z d.Z d/Z d0Z d1Z d2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAefdBefdCefdDefdEdFfgZRS(Xs'install everything from build directorysprefix=sinstallation prefixs exec-prefix=s.(Unix only) prefix for platform-specific filesshome=s+(Unix only) home directory to install undertusers!install in user site-package '%s's install-base=s;base installation directory (instead of --prefix or --home)sinstall-platbase=s8base installation directory for platform-specific files s$(instead of --exec-prefix or --home)sroot=s<install everything relative to this alternate root directorysinstall-purelib=s;installation directory for pure Python module distributionssinstall-platlib=s8installation directory for non-pure module distributionss install-lib=s4installation directory for all module distributions s3(overrides --install-purelib and --install-platlib)sinstall-headers=s(installation directory for C/C++ headerssinstall-scripts=s)installation directory for Python scriptss install-data=s%installation directory for data filestcompiletcscompile .py to .pyc [default]s no-compilesdon't compile .py filess optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs1force installation (overwrite any existing files)s skip-builds2skip rebuilding everything (for testing/debugging)srecord=s3filename in which to record list of installed filescCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ t|_t|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_dS(Nii(tNonetprefixt exec_prefixthomeRt install_basetinstall_platbasetroottinstall_purelibtinstall_platlibtinstall_headerst install_libtinstall_scriptst install_dataR tinstall_userbaseR tinstall_usersiteRtoptimizet extra_pathtinstall_path_fileRt skip_buildtwarn_dirt build_baset build_libtrecord(tself((s1/usr/lib64/python2.7/distutils/command/install.pytinitialize_optionss2                       c CsL|js|js|jr=|js-|jr=tddn|jrd|jsX|jrdtdn|jr|js|js|js|js|jrtdntjdkr|jr|j dd|_qn|j dtjdkr|j n |j |j dtjtjd }td d \}}i |jjd 6|jjd 6|jjd6|d6|d d!d6|d |dd6|d6|d 6|d6|d 6|jd6|jd6|_|j|j d|j|jd<|j|jdR"R#RG((s1/usr/lib64/python2.7/distutils/command/install.pytfinalize_optionss~  $                    cCstrddlm}|dGHx|jD]}|d}|ddkrY|dd!}n||jkrtj|j||}t|| }n!tj||}t||}d||fGHq)WndS(Ni(t longopt_xlatet:it=s %s: %s(Rtdistutils.fancy_getoptRgt user_optionst negative_optRQt translatetgetattr(R8tmsgRgtopttopt_nametval((s1/usr/lib64/python2.7/distutils/command/install.pyRN~s   cCs|jdk s|jdk r|jdkrK|jdkrK|jdksx|jdksx|jdksx|jdkrt dndS|j r|j dkrt dn|j |_|_|j dn|jdk r|j|_|_|j dn|jdkra|jdk r.t dntjjtj|_tjjtj|_n|jdkr|j|_n|j|_|j|_|j ddS(NsPinstall-base or install-platbase supplied, but installation scheme is incompletes$User base directory is not specifiedRRs*must not supply exec-prefix without prefixR(R%R!R&R+R(R)R*R,R-R RR.Rt select_schemeR$R"R#RKRatnormpathRS(R8((s1/usr/lib64/python2.7/distutils/command/install.pyROs<      cCs|jrQ|jdkr'tdn|j|_|_|jtjdn|j dk r|j |_|_|jdnu|j dkrtj j t j |_ n|j |_|_y|jtjWn!tk rtdtjnXdS(Ns$User base directory is not specifiedt_userRs)I don't know how to install stuff on '%s'(RR.R!RR%R&RsRKRLR$R"RaRtRStKeyError(R8((s1/usr/lib64/python2.7/distutils/command/install.pyRPs"   cCsUt|}xDtD]<}d|}t||dkrt||||qqWdS(Ntinstall_(tINSTALL_SCHEMESt SCHEME_KEYSRnR!tsetattr(R8RLtschemetkeytattrname((s1/usr/lib64/python2.7/distutils/command/install.pyRss    cCsx|D]y}t||}|dk rtjdksFtjdkr[tjj|}nt||j}t|||qqWdS(NR:R( RnR!RKRLRat expanduserRRYRz(R8tattrstattrRr((s1/usr/lib64/python2.7/distutils/command/install.pyt _expand_attrss  cCs|jdddgdS(NR%R&R'(R(R8((s1/usr/lib64/python2.7/distutils/command/install.pyRZs cCs#|jddddddgdS(NR(R)R+R*R,R-(R(R8((s1/usr/lib64/python2.7/distutils/command/install.pyR[s  cGs>x7|D]/}d|}t||tt||qWdS(NRw(RzRRn(R8tnamesRLR((s1/usr/lib64/python2.7/distutils/command/install.pyR^s  cCs|jdkr!|jj|_n|jdk rt|jtkr`tj|jd|_nt|jdkr|jd}}n0t|jdkr|j\}}n tdt |}n d}d}||_ ||_ dS(Nt,iiisY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementst( R1R!RUttypet StringTypeRQRRtlenR Rt path_fileRc(R8RRc((s1/usr/lib64/python2.7/distutils/command/install.pyR_s  c GsDx=|D]5}d|}t||t|jt||qWdS(NRw(RzR R'Rn(R8RRLR((s1/usr/lib64/python2.7/distutils/command/install.pyRds  cCs|js dSttjjd}xc|jjD]R\}}|j|r5tjj| r5|j d|tj |dq5q5WdS(s#Create directories under ~ Nt~sos.makedirs('%s', 0700)i( RRRKRaR~RYt iteritemst startswithtisdirt debug_printtmakedirs(R8R$RLRa((s1/usr/lib64/python2.7/distutils/command/install.pyR\"s "cCs|jsU|jd|jjdj}|jrU|tkrUtdqUnx!|jD]}|j|qbW|j r|j n|j r|j }|j rt|j }x/tt|D]}|||||RN(sprefix=Nsinstallation prefix(s exec-prefix=Ns.(Unix only) prefix for platform-specific files(shome=Ns+(Unix only) home directory to install under(s install-base=Ns;base installation directory (instead of --prefix or --home)(sroot=Ns<install everything relative to this alternate root directory(sinstall-purelib=Ns;installation directory for pure Python module distributions(sinstall-platlib=Ns8installation directory for non-pure module distributions(sinstall-headers=Ns(installation directory for C/C++ headers(sinstall-scripts=Ns)installation directory for Python scripts(s install-data=Ns%installation directory for data files(RRscompile .py to .pyc [default](s no-compileNsdon't compile .py files(s optimize=Rslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](RR s1force installation (overwrite any existing files)(s skip-buildNs2skip rebuilding everything (for testing/debugging)(srecord=Ns3filename in which to record list of installed files(t__name__t __module__t descriptionR!R Rktboolean_optionsRlR9RfRNRORPRsRRZR[R^R_RdR\RRRRRRRRt sub_commands(((s1/usr/lib64/python2.7/distutils/command/install.pyR^s    M  +    "  .         (RRRRR( t__doc__t distutilsRt __revision__RSRKRQttypestdistutils.coreRtdistutils.debugRtdistutils.sysconfigRtdistutils.errorsRtdistutils.file_utilRtdistutils.utilRRR R R tsiteR R RTtWINDOWS_SCHEMERxRyR(((s1/usr/lib64/python2.7/distutils/command/install.pyts$        PKvr]jKKcommand/build_ext.pycnu[ {fc@s/dZdZddlZddlZddlZddlZddlTddlmZm Z ddl m Z ddl Tddl mZmZddlmZdd lmZdd lmZdd lmZejd krdd lmZeeZnejdZdZde fdYZ dS(sdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).s$Id$iN(t*(t USER_BASEt USER_SITE(tCommand(tcustomize_compilertget_python_version(t newer_group(t Extension(t get_platform(tlogtnt(tget_build_versions3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS(Ni(tshow_compilers(tdistutils.ccompilerR (R ((s3/usr/lib64/python2.7/distutils/command/build_ext.pyR st build_extcBs?eZdZdejZdFdGdd d efd d d dfdddefdHdIdJdddefdKdLdMdNdOdQdRdSdTgZd d$d'd-d3gZ d5dPd6e fgZ d7Z d8Z d9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAZdBZdCZdDZdEZRS(Us8build C/C++ extensions (compile/link to build directory)s (separated by '%s')s build-lib=tbs(directory for compiled extension moduless build-temp=tts1directory for temporary files (build by-products)s plat-name=tps>platform name to cross-compile for, if supported (default: %s)tinplacetis=ignore build-lib and put compiled extensions into the source s,directory alongside your pure Python moduless include-dirs=tIs.list of directories to search for header filessdefine=tDsC preprocessor macros to definesundef=tUs!C preprocessor macros to undefines libraries=tls!external C libraries to link withs library-dirs=tLs.directories to search for external C librariessrpath=tRs7directories to search for shared C libraries at runtimes link-objects=tOs2extra explicit link objects to include in the linktdebugtgs'compile/link with debugging informationtforcetfs2forcibly build everything (ignore file timestamps)s compiler=tcsspecify the compiler typesswig-cpps)make SWIG create C++ files (default is C)s swig-opts=s!list of SWIG command line optionssswig=spath to the SWIG executabletusers#add user include, library and rpaths help-compilerslist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS(Ni(tNonet extensionst build_libt plat_namet build_tempRtpackaget include_dirstdefinetundeft librariest library_dirstrpatht link_objectsRRtcompilertswigtswig_cppt swig_optsR (tself((s3/usr/lib64/python2.7/distutils/command/build_ext.pytinitialize_optionsls(                   c Csddlm}|jdd.d/d0d1d2d3|jdkrP|jj|_n|jj|_|j }|j d d }|j dkr|jj pg|_ nt |j t r|j j tj|_ n|j j|||kr|j j|n|jd |jd |jdkr5g|_n|jdkrPg|_n3t|jtkrtj |jtj|_n|jdkrg|_n3t|jtkrtj |jtj|_ntjdkr|jjtjjtjd|jr)tjj|jd|_ntjj|jd|_|j jtjjtjdtdkr|j dkrd}n |j d}xd4d5fD]L}tjjtj|}|rtjj||}n|jj|qWqtdkr+|jjtjjtjddqtdkr_|jjtjjtjddq|jjtjjtjddntjdkr|jjtjjtjdntj!d d!kstj!d d"krJtj"j#tjjtjd#r7|jjtjjtj$d$d%t%d&qJ|jjd'n|j&d(r|j's~|jj|j&d)q|jjd'n|j(r|j(j d*}t)d+||_(n|j*r|j*j d*|_*n|j+dkrg|_+n|j+j d,|_+|j,rtjjt-d-}tjjt-d$} tjj.|rm|j j|ntjj.| r|jj| |jj| qndS(6Ni(t sysconfigtbuildR#R%R.RRR$t plat_specificiR*R-R tlibstDebugtReleasetPCi twin32titPCbuildsVS9.0isVS8.0isVS7.1tVC6tos2tConfigitcygwintatheostbintlibtpythontconfigt.tPy_ENABLE_SHAREDtLIBDIRt,cSs |dfS(Nt1((tsymbol((s3/usr/lib64/python2.7/distutils/command/build_ext.pytR<t tinclude(R#R#(R%R%(R.R.(RR(RR(R$R$(R=(R:sVS9.0(/t distutilsR4tset_undefined_optionsR&R!t distributiont ext_packaget ext_modulesR"tget_python_incR't isinstancetstrtsplittostpathseptappendtensure_string_listR*R+ttypet StringTypetstringR,tnametpathtjointsyst exec_prefixRR%t MSVC_VERSIONR$tplatformt executablet startswithtprefixRtget_config_vart python_buildR(tmapR)R1R Rtisdir( R2R4t py_includetplat_py_includetsuffixtdtnew_libtdefinest user_includetuser_lib((s3/usr/lib64/python2.7/distutils/command/build_ext.pytfinalize_optionss        " "     %&$       c Csddlm}|jsdS|jjrm|jd}|jj|jpSg|j j |j n|d|j d|j d|jd|j|_ t|j tjdkr|jtkr|j j|jn|jdk r|j j|jn|jdk rEx-|jD]\}}|j j||qWn|jdk r{x$|jD]}|j j|q^Wn|jdk r|j j|jn|j dk r|j j|j n|jdk r|j j |jn|j!dk r|j j"|j!n|j#dS( Ni(t new_compilert build_clibR.tverbosetdry_runRR ($R RwR"RRthas_c_librariestget_finalized_commandR*textendtget_library_namesR+R[RxR.RyRzRRRYR`R$Rt initializeR'R!tset_include_dirsR(t define_macroR)tundefine_macrot set_librariestset_library_dirsR,tset_runtime_library_dirsR-tset_link_objectstbuild_extensions(R2RwRxR`tvaluetmacro((s3/usr/lib64/python2.7/distutils/command/build_ext.pytruns>    !c Cs!t|tstdnxt|D]\}}t|trIq(nt|t skt|dkrwtdn|\}}tjd|t|t ot j |stdnt|t stdnt||d}x<dD]4}|j |}|dk rt|||qqW|j d|_d|krYtjdn|j d}|rg|_g|_x|D]} t| tot| dkstdnt| dkr|jj| dqt| dkr|jj| qqWn||||j|jg}x!|jD]}|j|jq W|S(N(RR"R}R(R2t filenamesR((s3/usr/lib64/python2.7/distutils/command/build_ext.pytget_source_filess cCsG|j|jg}x*|jD]}|j|j|jq W|S(N(RR"R[tget_ext_fullpathR`(R2toutputsR((s3/usr/lib64/python2.7/distutils/command/build_ext.pyt get_outputss cCs5|j|jx|jD]}|j|qWdS(N(RR"tbuild_extension(R2R((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRsc Cs|j}|dks-t|ttfkrHtddd|jnt|}|j|j}||j }|j pt ||dst j d|jdSt jd|j|j||}|jpg}|j}x!|jD]}|j|fqW|jj|d|jd|d |jd |j d |d |j }||_|jro|j|jn|jp{g}|jp|jj|} |jj||d |j|d|j d|j!d |d|j"|d |j d|jd| dS(Ns*in 'ext_modules' option (extension '%s'), s&'sources' must be present and must be sa list of source filenamestnewers$skipping '%s' extension (up-to-date)sbuilding '%s' extensiont output_dirRR'Rtextra_postargstdependsR*R+Rtexport_symbolsR%t target_lang(#RR!R]tListTypet TupleTypeRR`RRRRRR Rtinfot swig_sourcesRRRR[R.tcompileR%R't_built_objectsRR}Rtlanguagetdetect_languagetlink_shared_objectt get_librariesR+Rtget_export_symbols( R2RRtext_pathRt extra_argsRR)tobjectsR((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRsN $              cCsg}g}i}|jr+tjdn|jsRd|jksRd|jkr[d}nd}xr|D]j}tjj|\}} | dkr|j|d||j||d||          cCstjdkrdStjdkrixgd D]5}tjjd|d}tjj|r)|Sq)WdSn#tjd kr|dStd tjd S( sReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. tposixR/R s1.3s1.2s1.1s c:\swig%ssswig.exeR?s>I don't know how to find (much less run) SWIG on platform '%s'N(s1.3s1.2s1.1(RYR`RaRbtisfiletDistutilsPlatformError(R2tverstfn((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRPs c Cstjdtjd}|j|}|j|}|jd}|j|}tjj|d}|j stjj |d |g}tjj |j |Sdj |dd!}|j d}tjj |j|}tjj ||S(sReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). t/s..RGiitbuild_py(R_t maketransRYtsept translatetget_ext_fullnameRXtget_ext_filenameRaRRbR#R|tabspathtget_package_dir( R2Rtall_dotstfullnametmodpathtfilenameR&Rt package_dir((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRqs cCs&|jdkr|S|jd|SdS(sSReturns the fullname of a given extension name. Adds the `package.` prefixRGN(R&R!(R2R((s3/usr/lib64/python2.7/distutils/command/build_ext.pyRscCsddlm}tj|d}tjdkrZ|t|dd |t|ds$0    PKvr]O** filelist.pycnu[ {fc@sdZdZddlZddlZddlZddlmZddlmZm Z ddl m Z dddYZ ej d Zd Zd dd d ZdS(ssdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. s$Id$iN(t convert_path(tDistutilsTemplateErrortDistutilsInternalError(tlogtFileListcBseZdZdddZdZejdZdZ dZ dZ dZ dZ d Zd Zd dd d Zd dd dZRS(sA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) cCsd|_g|_dS(N(tNonetallfilestfiles(tselftwarnt debug_print((s*/usr/lib64/python2.7/distutils/filelist.pyt__init__s cCs ||_dS(N(R(RR((s*/usr/lib64/python2.7/distutils/filelist.pyt set_allfiles$scCst||_dS(N(tfindallR(Rtdir((s*/usr/lib64/python2.7/distutils/filelist.pyR 'scCs"ddlm}|r|GHndS(s~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. i(tDEBUGN(tdistutils.debugR(RtmsgR((s*/usr/lib64/python2.7/distutils/filelist.pyR *scCs|jj|dS(N(Rtappend(Rtitem((s*/usr/lib64/python2.7/distutils/filelist.pyR4scCs|jj|dS(N(Rtextend(Rtitems((s*/usr/lib64/python2.7/distutils/filelist.pyR7scCs\ttjj|j}|jg|_x*|D]"}|jjtjj|q2WdS(N(tmaptostpathtsplitRtsortRtjoin(Rtsortable_filest sort_tuple((s*/usr/lib64/python2.7/distutils/filelist.pyR:s    cCsYxRtt|jdddD]1}|j||j|dkr |j|=q q WdS(Niii(trangetlenR(Rti((s*/usr/lib64/python2.7/distutils/filelist.pytremove_duplicatesEs&cCs|j}|d}d}}}|dkrht|dkrRtd|ntt|d}n|dkrt|d krtd |nt|d}tt|d}nN|dkrt|dkrtd|nt|d}n td|||||fS(Nitincludetexcludesglobal-includesglobal-excludeis&'%s' expects ...isrecursive-includesrecursive-excludeis,'%s' expects ...tgrafttprunes#'%s' expects a single sunknown action '%s'(R"R#sglobal-includesglobal-exclude(srecursive-includesrecursive-exclude(R$R%(RRRRRR(RtlinetwordstactiontpatternsRt dir_pattern((s*/usr/lib64/python2.7/distutils/filelist.pyt_parse_template_lineNs,         cCs&|j|\}}}}|dkr}|jddj|x|D].}|j|ddsHtjd|qHqHWn|dkr|jddj|x||D].}|j|ddstjd |qqWnC|d krE|jd dj|x|D]2}|j|dd s tjd d|q q Wn|dkr|jddj|x|D].}|j|dd srtjd|qrqrWn{|dkr|jd|dj|fxL|D]5}|j|d|stjd d||qqWn |dkr|jd|dj|fx|D]1}|j|d|sItjd||qIqIWn|dkr|jd||jdd|s"tjd|q"nY|dkr|jd||jdd|s"tjdd|q"n td |dS(!NR"sinclude t tanchoris%warning: no files found matching '%s'R#sexclude s9warning: no previously-included files found matching '%s'sglobal-includesglobal-include is&warning: no files found matching '%s' sanywhere in distributionsglobal-excludesglobal-exclude sRwarning: no previously-included files matching '%s' found anywhere in distributionsrecursive-includesrecursive-include %s %stprefixsunder directory '%s'srecursive-excludesrecursive-exclude %s %ssNwarning: no previously-included files matching '%s' found under directory '%s'R$sgraft s+warning: no directories found matching '%s'R%sprune s)no previously-included directories found s matching '%s's'this cannot happen: invalid action '%s'( R+R Rtinclude_patternRR texclude_patternRR(RR&R(R)RR*tpattern((s*/usr/lib64/python2.7/distutils/filelist.pytprocess_template_linepsh                         iicCsd}t||||}|jd|j|jdkrK|jnxJ|jD]?}|j|rU|jd||jj|d}qUqUW|S(sSelect strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform-dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return 1 if files are found. is%include_pattern: applying regex r'%s's adding iN( ttranslate_patternR R1RRR tsearchRR(RR1R-R.tis_regext files_foundt pattern_retname((s*/usr/lib64/python2.7/distutils/filelist.pyR/s    cCsd}t||||}|jd|jxhtt|jdddD]G}|j|j|rO|jd|j||j|=d}qOqOW|S(sRemove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return 1 if files are found. is%exclude_pattern: applying regex r'%s'iis removing (R3R R1RRRR4(RR1R-R.R5R6R7R ((s*/usr/lib64/python2.7/distutils/filelist.pyR0s  &  N(t__name__t __module__t__doc__RR R RtcurdirR R RRRR!R+R2R/R0(((s*/usr/lib64/python2.7/distutils/filelist.pyRs     " K-cCsddlm}m}m}m}g}|g}|j}|j}x|r|}tj|} x| D]} |tj krtj j || } n| } tj| } | |} || r|j| qk|| rk||  rk|| qkqkWqFW|S(s^Find all files under 'dir' and return the list of full filenames (relative to 'dir'). i(tST_MODEtS_ISREGtS_ISDIRtS_ISLNK( tstatR=R>R?R@tpopRRtlistdirR<RR(RR=R>R?R@tlisttstackRBtpushtnamesR8tfullnameRAtmode((s*/usr/lib64/python2.7/distutils/filelist.pyR s&"        cCsStj|}tj}tjdkr0d}nd|}tjd||}|S(sTranslate a shell-like glob pattern to a regular expression. Return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). s\s\\\\s\1[^%s]s((?t|}nd}|dk rtd}t|t| }tj}tjdkrd}nd|j |d|f}n|rd|}ntj|S(sTranslate a shell-like wildcard pattern to a compiled regular expression. Return the compiled regex. If 'is_regex' true, then 'pattern' is directly compiled to a regex (if it's a string) or just returned as-is (assumes it's a regex object). ts\s\\t^s.*N( t isinstancetstrRMtcompileRPRRRRLR(R1R-R.R5R7t empty_patternt prefix_reRL((s*/usr/lib64/python2.7/distutils/filelist.pyR38s"       ((R;t __revision__RRMRJtdistutils.utilRtdistutils.errorsRRt distutilsRRR<R RPRR3(((s*/usr/lib64/python2.7/distutils/filelist.pyts  PKvr]  extension.pyonu[ {fc@sdZdZddlZddlZddlZddlTyddlZWnek rcdZnXdddYZ dZ dS( smdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.s$Id$iN(t*t ExtensioncBs>eZdZdddddddddddddd ZRS(s4 Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. cKsM||_||_|pg|_|p*g|_|p9g|_|pHg|_|pWg|_|pfg|_| pug|_| pg|_ | pg|_ | pg|_ | pg|_ |pg|_ ||_t|rI|j}|jtt|}dtj|d}tdk r2tj|qItjj|dndS(NsUnknown Extension options: s, s (tnametsourcest include_dirst define_macrost undef_macrost library_dirst librariestruntime_library_dirst extra_objectstextra_compile_argstextra_link_argstexport_symbolst swig_optstdependstlanguagetlentkeystsorttmaptreprtstringtjointwarningstNonetwarntsyststderrtwrite(tselfRRRRRRRR R R R R RRRtkwtLtmsg((s+/usr/lib64/python2.7/distutils/extension.pyt__init__Zs.      N(t__name__t __module__t__doc__RR"(((s+/usr/lib64/python2.7/distutils/extension.pyRs<c Csddlm}m}m}ddlm}ddlm}||}||ddddddd dd d}zag}xT|j} | dkrPn|j | rq~| d | dkod knr|j d | q~qn|| |} || } | d } t | g} d} x| dD]}| dk rZ| j |d} q/ntjj|d}|d d!}|d}|d(kr| jj |q/|dkr| jj |q/|dkr0tj|d}|dkr| jj |dfq| jj |d |!||dfq/|dkrO| jj |q/|dkrn| jj |q/|dkr| jj |q/|dkr| jj |q/|dkr| jj |q/|dkr| j} q/|dkr| j} q/|d kr| j} q/|d!krD| jj ||s| j} qq/|d kr\| j} q/|d!kr| jj ||s| j} qq/|d)kr| jj |q/|j d'|q/W|j | q~WWd|jX|S(*Ni(tparse_makefiletexpand_makefile_varst _variable_rx(tTextFile(t split_quotedtstrip_commentsit skip_blankst join_linest lstrip_wst rstrip_wsiRs'%s' lines not handled yetis.cs.ccs.cpps.cxxs.c++s.ms.mms-Is-Dt=s-Us-Cs-ls-Ls-Rs-rpaths-Xlinkers -Xcompilers-us.as.sos.sls.os.dylibsunrecognized argument '%s'(s.cs.ccs.cpps.cxxs.c++s.ms.mm(s.as.sos.sls.os.dylib(tdistutils.sysconfigR&R'R(tdistutils.text_fileR)tdistutils.utilR*treadlineRtmatchRRtappendtostpathtsplitextRRRtfindRRR RRR R R tclose(tfilenameR&R'R(R)R*tvarstfilet extensionstlinetwordstmoduletexttappend_next_wordtwordtsuffixtswitchtvaluetequals((s+/usr/lib64/python2.7/distutils/extension.pytread_setup_files    $                          (( R%t __revision__R7RRttypesRt ImportErrorRRRJ(((s+/usr/lib64/python2.7/distutils/extension.pyts$   qPKvr]#˱archive_util.pyonu[ {fc@sdZdZddlZddlmZddlZddlmZddlm Z ddl m Z ddl m Z ydd lmZWnek rdZnXydd lmZWnek rdZnXd Zd Zd dddddZdddZiedgdfd6ed gdfd6ed!gdfd6ed"gdfd6egdfd6ZdZdddddddZdS(#sodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).s$Id$iN(twarn(tDistutilsExecError(tspawn(tmkpath(tlog(tgetpwnam(tgetgrnamcCs^tdks|dkrdSyt|}Wntk rEd}nX|dk rZ|dSdS(s"Returns a gid, given a group name.iN(RtNonetKeyError(tnametresult((s./usr/lib64/python2.7/distutils/archive_util.pyt_get_gids   cCs^tdks|dkrdSyt|}Wntk rEd}nX|dk rZ|dSdS(s"Returns an uid, given a user name.iN(RRR(R R ((s./usr/lib64/python2.7/distutils/archive_util.pyt_get_uid's   tgzipicsidd6dd6dd6dd6}idd6dd6d d6}|dk rg||jkrgtd n|d } |dkr| |j|d7} nttjj| d |d dl} t j dt t fd} |sC| j | d||} z| j|d| Wd| jXn|dkrtdt| ||} tjdkr|| | g}n|d| g}t|d || S| S(s-Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "compress", "bzip2", or None. (compress will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2" or ".Z"). Returns the output filename. tgzR tbz2tbzip2ttcompresss.gzs.bz2s.ZsEbad value for 'compress': must be None, 'gzip', 'bzip2' or 'compress's.tartdry_runiNsCreating tar archivecsFdk r!|_|_ndk rB|_|_n|S(N(Rtgidtgnametuidtuname(ttarinfo(RtgrouptownerR(s./usr/lib64/python2.7/distutils/archive_util.pyt _set_uid_gid[s      sw|%stfilters'compress' will be deprecated.twin32s-f(Rtkeyst ValueErrortgetRtostpathtdirnamettarfileRtinfoR R topentaddtcloseRtPendingDeprecationWarningtsystplatformR(t base_nametbase_dirRtverboseRRRttar_compressiont compress_extt archive_nameR$Rttartcompressed_nametcmd((RRRRs./usr/lib64/python2.7/distutils/archive_util.pyt make_tarball3s8"          c Cs-yddl}Wntk r)d}nX|d}ttjj|d||dkr|rkd}nd}y td|||gd|Wq)tk rtd|q)Xntt j d |||s)|j |d d |j }|tj kr<tjjtjj|d }|j||t j d |nxtj|D]\} } } xR| D]J} tjjtjj| | d }|j||t j d |qbWxe| D]]} tjjtjj| | }tjj|r|j||t j d |qqWqLW|jn|S(svCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. iNs.zipRs-rs-rqtzipskunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilitys#creating '%s' and adding '%s' to ittwt compressionRs adding '%s'(tzipfilet ImportErrorRRR!R"R#RRRR%tZipFilet ZIP_DEFLATEDtcurdirtnormpathtjointwritetwalktisfileR(( R,R-R.RR9t zip_filenamet zipoptionsR6R"tdirpathtdirnamest filenamesR ((s./usr/lib64/python2.7/distutils/archive_util.pyt make_zipfileysL           ! $ ! Rsgzip'ed tar-filetgztarRsbzip2'ed tar-filetbztarscompressed tar filetztarsuncompressed tar fileR2sZIP fileR6cCs%x|D]}|tkr|SqWdS(sqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N(tARCHIVE_FORMATSR(tformatstformat((s./usr/lib64/python2.7/distutils/archive_util.pytcheck_archive_formatss  cCsCtj}|d k rStjd|tjj|}|sStj|qSn|d krktj}ni|d6} yt |} Wnt k rt d|nX| d} x"| dD]\} } | | | tjd |tj|nX|S( sCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "ztar", or "gztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. schanging into '%s'Rsunknown archive format '%s'iiR6RRNschanging back to '%s'( R!tgetcwdRRtdebugR"tabspathtchdirR=RLRR(R,RNtroot_dirR-R.RRRtsave_cwdtkwargst format_infotfunctargtvaltfilename((s./usr/lib64/python2.7/distutils/archive_util.pyt make_archives2           (RR (RR(RR(RN(t__doc__t __revision__R!twarningsRR*tdistutils.errorsRtdistutils.spawnRtdistutils.dir_utilRt distutilsRtpwdRR:RtgrpRR R R5RHRLROR\(((s./usr/lib64/python2.7/distutils/archive_util.pyts<       E> PKvr]O9DDsysconfig.py.debug-buildnu["""Provide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: """ __revision__ = "$Id$" import os import re import string import sys from distutils.errors import DistutilsPlatformError # These are needed in a couple of spots, so just compute them once. PREFIX = os.path.normpath(sys.prefix) EXEC_PREFIX = os.path.normpath(sys.exec_prefix) # Path to the base directory of the project. On Windows the binary may # live in project/PCBuild9. If we're dealing with an x64 Windows build, # it'll live in project/PCbuild/amd64. if sys.executable: project_base = os.path.dirname(os.path.abspath(sys.executable)) else: # sys.executable can be empty if argv[0] has been changed and Python is # unable to retrieve the real program name project_base = os.getcwd() if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) # PC/VS7.1 if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower(): project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, os.path.pardir)) # PC/AMD64 if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower(): project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, os.path.pardir)) # set for cross builds if "_PYTHON_PROJECT_BASE" in os.environ: # this is the build directory, at least for posix project_base = os.path.normpath(os.environ["_PYTHON_PROJECT_BASE"]) # python_build: (Boolean) if true, we're either building Python or # building an extension with an un-installed Python, so we use # different (hard-wired) directories. # Setup.local is available for Makefile builds including VPATH builds, # Setup.dist is available on Windows def _python_build(): for fn in ("Setup.dist", "Setup.local"): if os.path.isfile(os.path.join(project_base, "Modules", fn)): return True return False python_build = _python_build() def get_python_version(): """Return a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. """ return sys.version[:3] def get_python_inc(plat_specific=0, prefix=None): """Return the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ if prefix is None: prefix = plat_specific and EXEC_PREFIX or PREFIX if os.name == "posix": if python_build: if sys.executable: buildir = os.path.dirname(sys.executable) else: # sys.executable can be empty if argv[0] has been changed # and Python is unable to retrieve the real program name buildir = os.getcwd() if plat_specific: # python.h is located in the buildir inc_dir = buildir else: # the source dir is relative to the buildir srcdir = os.path.abspath(os.path.join(buildir, get_config_var('srcdir'))) # Include is located in the srcdir inc_dir = os.path.join(srcdir, "Include") return inc_dir return os.path.join(prefix, "include", "python" + get_python_version()) elif os.name == "nt": return os.path.join(prefix, "include") elif os.name == "os2": return os.path.join(prefix, "Include") else: raise DistutilsPlatformError( "I don't know where Python installs its C header files " "on platform '%s'" % os.name) def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): """Return the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ if prefix is None: prefix = plat_specific and EXEC_PREFIX or PREFIX if os.name == "posix": if plat_specific or standard_lib: lib = "lib64" else: lib = "lib" libpython = os.path.join(prefix, lib, "python" + get_python_version()) if standard_lib: return libpython else: return os.path.join(libpython, "site-packages") elif os.name == "nt": if standard_lib: return os.path.join(prefix, "Lib") else: if get_python_version() < "2.2": return prefix else: return os.path.join(prefix, "Lib", "site-packages") elif os.name == "os2": if standard_lib: return os.path.join(prefix, "Lib") else: return os.path.join(prefix, "Lib", "site-packages") else: raise DistutilsPlatformError( "I don't know where Python installs its library " "on platform '%s'" % os.name) def customize_compiler(compiler): """Do any platform-specific customization of a CCompiler instance. Mainly needed on Unix, so we can plug in the information that varies across Unices and is stored in Python's Makefile. """ if compiler.compiler_type == "unix": if sys.platform == "darwin": # Perform first-time customization of compiler-related # config vars on OS X now that we know we need a compiler. # This is primarily to support Pythons from binary # installers. The kind and paths to build tools on # the user system may vary significantly from the system # that Python itself was built on. Also the user OS # version and build tools may not support the same set # of CPU architectures for universal builds. global _config_vars # Use get_config_var() to ensure _config_vars is initialized. if not get_config_var('CUSTOMIZED_OSX_COMPILER'): import _osx_support _osx_support.customize_compiler(_config_vars) _config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True' (cc, cxx, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \ get_config_vars('CC', 'CXX', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS') if 'CC' in os.environ: newcc = os.environ['CC'] if (sys.platform == 'darwin' and 'LDSHARED' not in os.environ and ldshared.startswith(cc)): # On OS X, if CC is overridden, use that as the default # command for LDSHARED as well ldshared = newcc + ldshared[len(cc):] cc = newcc if 'CXX' in os.environ: cxx = os.environ['CXX'] if 'LDSHARED' in os.environ: ldshared = os.environ['LDSHARED'] if 'CPP' in os.environ: cpp = os.environ['CPP'] else: cpp = cc + " -E" # not always if 'LDFLAGS' in os.environ: ldshared = ldshared + ' ' + os.environ['LDFLAGS'] if 'CFLAGS' in os.environ: cflags = cflags + ' ' + os.environ['CFLAGS'] ldshared = ldshared + ' ' + os.environ['CFLAGS'] if 'CPPFLAGS' in os.environ: cpp = cpp + ' ' + os.environ['CPPFLAGS'] cflags = cflags + ' ' + os.environ['CPPFLAGS'] ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] if 'AR' in os.environ: ar = os.environ['AR'] if 'ARFLAGS' in os.environ: archiver = ar + ' ' + os.environ['ARFLAGS'] else: archiver = ar + ' ' + ar_flags cc_cmd = cc + ' ' + cflags compiler.set_executables( preprocessor=cpp, compiler=cc_cmd, compiler_so=cc_cmd + ' ' + ccshared, compiler_cxx=cxx, linker_so=ldshared, linker_exe=cc, archiver=archiver) compiler.shared_lib_extension = so_ext def get_config_h_filename(): """Return full pathname of installed pyconfig.h file.""" if python_build: if os.name == "nt": inc_dir = os.path.join(project_base, "PC") else: inc_dir = project_base else: inc_dir = get_python_inc(plat_specific=1) if get_python_version() < '2.2': config_h = 'config.h' else: # The name of the config.h file changed in 2.2 config_h = 'pyconfig.h' return os.path.join(inc_dir, config_h) def get_makefile_filename(): """Return full pathname of installed Makefile from the Python build.""" if python_build: return os.path.join(project_base, "Makefile") lib_dir = get_python_lib(plat_specific=1, standard_lib=1) return os.path.join(lib_dir, "config", "Makefile") def parse_config_h(fp, g=None): """Parse a config.h-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ if g is None: g = {} define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") # while 1: line = fp.readline() if not line: break m = define_rx.match(line) if m: n, v = m.group(1, 2) try: v = int(v) except ValueError: pass g[n] = v else: m = undef_rx.match(line) if m: g[m.group(1)] = 0 return g # Regexes needed for parsing Makefile (and similar syntaxes, # like old-style Setup files). _variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") def parse_makefile(fn, g=None): """Parse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ from distutils.text_file import TextFile fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1) if g is None: g = {} done = {} notdone = {} while 1: line = fp.readline() if line is None: # eof break m = _variable_rx.match(line) if m: n, v = m.group(1, 2) v = v.strip() # `$$' is a literal `$' in make tmpv = v.replace('$$', '') if "$" in tmpv: notdone[n] = v else: try: v = int(v) except ValueError: # insert literal `$' done[n] = v.replace('$$', '$') else: done[n] = v # do variable interpolation here while notdone: for name in notdone.keys(): value = notdone[name] m = _findvar1_rx.search(value) or _findvar2_rx.search(value) if m: n = m.group(1) found = True if n in done: item = str(done[n]) elif n in notdone: # get it on a subsequent round found = False elif n in os.environ: # do it like make: fall back to environment item = os.environ[n] else: done[n] = item = "" if found: after = value[m.end():] value = value[:m.start()] + item + after if "$" in after: notdone[name] = value else: try: value = int(value) except ValueError: done[name] = value.strip() else: done[name] = value del notdone[name] else: # bogus variable reference; just drop it since we can't deal del notdone[name] fp.close() # strip spurious spaces for k, v in done.items(): if isinstance(v, str): done[k] = v.strip() # save the results in the global dictionary g.update(done) return g def expand_makefile_vars(s, vars): """Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. """ # This algorithm does multiple expansion, so if vars['foo'] contains # "${bar}", it will expand ${foo} to ${bar}, and then expand # ${bar}... and so forth. This is fine as long as 'vars' comes from # 'parse_makefile()', which takes care of such expansions eagerly, # according to make's variable expansion semantics. while 1: m = _findvar1_rx.search(s) or _findvar2_rx.search(s) if m: (beg, end) = m.span() s = s[0:beg] + vars.get(m.group(1)) + s[end:] else: break return s _config_vars = None def _init_posix(): """Initialize the module as appropriate for POSIX systems.""" # _sysconfigdata is generated at build time, see the sysconfig module from _sysconfigdata import build_time_vars global _config_vars _config_vars = {} _config_vars.update(build_time_vars) def _init_nt(): """Initialize the module as appropriate for NT""" g = {} # set basic install directories g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) # XXX hmmm.. a normal install puts include files here g['INCLUDEPY'] = get_python_inc(plat_specific=0) g['SO'] = '.pyd' g['EXE'] = ".exe" g['VERSION'] = get_python_version().replace(".", "") g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) global _config_vars _config_vars = g def _init_os2(): """Initialize the module as appropriate for OS/2""" g = {} # set basic install directories g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) # XXX hmmm.. a normal install puts include files here g['INCLUDEPY'] = get_python_inc(plat_specific=0) g['SO'] = '.pyd' g['EXE'] = ".exe" global _config_vars _config_vars = g def get_config_vars(*args): """With no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows and Mac OS it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. """ global _config_vars if _config_vars is None: func = globals().get("_init_" + os.name) if func: func() else: _config_vars = {} # Normalized versions of prefix and exec_prefix are handy to have; # in fact, these are the standard versions used most places in the # Distutils. _config_vars['prefix'] = PREFIX _config_vars['exec_prefix'] = EXEC_PREFIX # OS X platforms require special customization to handle # multi-architecture, multi-os-version installers if sys.platform == 'darwin': import _osx_support _osx_support.customize_config_vars(_config_vars) if args: vals = [] for name in args: vals.append(_config_vars.get(name)) return vals else: return _config_vars def get_config_var(name): """Return the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) """ return get_config_vars().get(name) PKvr]pversionpredicate.pycnu[ {fc@sdZddlZddlZddlZejdZejdZejdZdZ iej d6ej d6ej d 6ej d 6ejd 6ejd 6Zd ddYZdadZdS(sBModule for parsing and testing package version predicate strings. iNs'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)s^\s*\((.*)\)\s*$s%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCsPtj|}|s(td|n|j\}}|tjj|fS(sVParse a single version comparison. Return (comparison string, StrictVersion) s"bad package restriction syntax: %r(tre_splitComparisontmatcht ValueErrortgroupst distutilstversiont StrictVersion(tpredtrestcomptverStr((s2/usr/lib64/python2.7/distutils/versionpredicate.pytsplitUps ts>=s!=tVersionPredicatecBs)eZdZdZdZdZRS(sParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print v pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|j}|s!tdntj|}|sItd|n|j\|_}|j}|rtj|}|std|n|jd}g|jdD]}t|^q|_ |j std|qn g|_ dS(s*Parse a version predicate string. sempty package restrictionsbad package name in %rsexpected parenthesized list: %rit,sempty parenthesized list in %rN( tstripRtre_validPackageRRtnametre_parentsplitR R(tselftversionPredicateStrRtparentstrtaPred((s2/usr/lib64/python2.7/distutils/versionpredicate.pyt__init___s$  + cCs`|jrUg|jD] \}}|dt|^q}|jddj|dS|jSdS(Nt s (s, t)(RRRtjoin(Rtcondtvertseq((s2/usr/lib64/python2.7/distutils/versionpredicate.pyt__str__zs 0cCs5x.|jD]#\}}t|||s tSq WtS(sTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. (RtcompmaptFalsetTrue(RRRR((s2/usr/lib64/python2.7/distutils/versionpredicate.pyt satisfied_bys(t__name__t __module__t__doc__RR!R%(((s2/usr/lib64/python2.7/distutils/versionpredicate.pyRs?  cCstdkrtjdan|j}tj|}|sRtd|n|jdpdd}|rtj j |}n|jd|fS(s9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) s=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$s"illegal provides specification: %riiN( t _provision_rxtNonetretcompileRRRtgroupRRR(tvaluetmR((s2/usr/lib64/python2.7/distutils/versionpredicate.pytsplit_provisions   ((R(R+tdistutils.versionRtoperatorR,RRRR tlttleteqtgttgetneR"RR*R)R0(((s2/usr/lib64/python2.7/distutils/versionpredicate.pyts    !!nPKvr])ca&a&cygwinccompiler.pycnu[ {fc@sdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZd Zd e fd YZd efd YZdZdZdZdZdZdZdS(sdistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). s$Id$iN(tgen_preprocess_optionstgen_lib_options(t UnixCCompiler(t write_file(tDistutilsExecErrort CompileErrortUnknownFileError(tlogcCstjjd}|dkrtj|d|d!}|dkrIdgS|dkr\dgS|d krod gS|d krd gStd |ndS(saInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. sMSC v.iii t1300tmsvcr70t1310tmsvcr71t1400tmsvcr80t1500tmsvcr90sUnknown MS Compiler version %s N(tsystversiontfindt ValueError(tmsc_postmsc_ver((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyt get_msvcr;s     tCygwinCCompilerc BseZdZdZdZdZdZdZdZddddZ d Z d d d d d dd d d d d Z dd d Z RS(tcygwins.os.as.dllslib%s%ss%s%ss.exeic CsStj||||t\}}|jd||f|tk r\|jd|nt\|_|_|_ |j|j d|j|j|j f|jdkrd|_ n d|_ |jdkrd}nd }|j d d d d dddddd|j |f|jdkrCdg|_ |jdn t|_ dS(Ns%Python's GCC status: %s (details: %s)sPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s, dllwrap %s s2.10.90tgcctdllwraps2.13s-shareds -mdll -statictcompilersgcc -mcygwin -O -Wallt compiler_sosgcc -mcygwin -mdll -O -Wallt compiler_cxxsg++ -mcygwin -O -Wallt linker_exes gcc -mcygwint linker_sos%s -mcygwin %ss2.91.57tmsvcrts,Consider upgrading to a newer version of gcc(Rt__init__tcheck_config_ht debug_printt CONFIG_H_OKtwarnt get_versionst gcc_versiont ld_versiontdllwrap_versiont compiler_typet linker_dlltset_executablest dll_librariesR(tselftverbosetdry_runtforcetstatustdetailst shared_option((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR!\s<        cCs|dks|dkrZy |jdd|d|gWqtk rV}t|qXnHy)|j|j||d|g|Wntk r}t|nXdS(Ns.rcs.restwindress-is-o(tspawnRRR(R.tobjtsrctexttcc_argstextra_postargstpp_optstmsg((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyt_compiles  cCstj| pg} tj|p$g}tj|p9g}|j|j|dk r||jksy|jdkrtjj|d}tjj tjj |\}}tjj ||d}tjj |d|d}dtjj |dg}x|D]}|j |q W|j t||fd||jd krx| jd |g| jd |gq|j |n| s| j d ntj||||||||d| | | | | dS( NRis.deftlibs.as LIBRARY %stEXPORTSs writing %sRs --output-libs--defs-s(tcopytextendR-tNonet EXECUTABLER+tostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(R.t target_desctobjectstoutput_filenamet output_dirt librariest library_dirstruntime_library_dirstexport_symbolstdebugt extra_preargsR;t build_tempt target_langttemp_dirtdll_namet dll_extensiontdef_filetlib_filetcontentstsym((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRMsJ        tcCs|dkrd}ng}x|D]}tjjtjj|\}}||jddgkr{td||fn|rtjj|}n|dks|dkr|jtjj ||||j q"|jtjj |||j q"W|S(NRas.rcs.ress"unknown file type '%s' (from '%s')( RCRERFRHtnormcasetsrc_extensionsRRIRKRJt obj_extension(R.tsource_filenamest strip_dirRQt obj_namestsrc_nametbaseR9((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pytobject_filenames s"  $N(t__name__t __module__R*Rdtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR!R>RCRMRj(((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRRs*>  XtMingw32CCompilercBs eZdZddddZRS(tmingw32icCstj|||||jdkr.d}nd}|jdkrLd}nd}|jdksjtrsd}nd}|jd d |d d |d d|dd|dd|j|||fg|_t|_dS(Ns2.13s-shareds -mdll -statics2.91.57s--entry _DllMain@12Rat4s -mno-cygwinRsgcc%s -O -WallRsgcc%s -mdll -O -WallRsg++%s -O -WallRsgcc%sRs %s%s %s %s( RR!R(R't is_cygwingccR,R+R-R(R.R/R0R1R4t entry_pointt no_cygwin((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR!-s&        (RkRlR*R!(((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRr)stoksnot okt uncertaincCsddlm}ddl}|jtjddkrAtdfS|j}y.t|}z|j }Wd|j XWn't k r}t d||j ffSX|j|ddkrtd |fStd |fSdS( sCheck if the current Python installation (specifically, pyconfig.h) appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: CONFIG_H_OK all is well, go ahead and compile CONFIG_H_NOTOK doesn't look good CONFIG_H_UNCERTAIN not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". i(t sysconfigNtGCCissys.version mentions 'GCC'scouldn't read '%s': %st__GNUC__s'%s' mentions '__GNUC__'s '%s' does not mention '__GNUC__'(t distutilsRztstringRRRR$tget_config_h_filenametopentreadtclosetIOErrortCONFIG_H_UNCERTAINtstrerrortCONFIG_H_NOTOK(RzR~tfntftstexc((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR"es     c Csddlm}ddlm}ddl}|d}|rtj|dd}|j}|j|j d|}|r||j d }qd}nd}|d }|r tj|d d}|j}|j|j d|}|r||j d } q&d} nd} |d } | rtj| d d}|j}|j|j d|}|r||j d } qd} nd} || | fS(sj Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. i(t LooseVersion(tfind_executableNRs -dumpversiontrs(\d+\.\d+(\.\d+)*)itlds -vRs --versions (\d+\.\d+(\.\d+)*)( tdistutils.versionRtdistutils.spawnRtreREtpopenRRtsearchtgroupRC( RRRtgcc_exetoutt out_stringtresultR'tld_exeR(t dllwrap_exeR)((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR&sD             cCs;tjdd}|j}|j|jjdS(s>Try to determine if the gcc that would be used is from cygwin.sgcc -dumpmachineRR(RERRRtstriptendswith(RR((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRus  (t__doc__t __revision__RERRAtdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRR}RRRRrR$RRR"R&Ru(((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyts +$ 8 5 .PKvr]x"..fancy_getopt.pyonu[ {fc@sdZdZddlZddlZddlZddlZddlmZmZdZ ej de Z ej de e fZ ej dd Zd fd YZd Zej ejd eejZdZdZdfdYZdS(s6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object s$Id$iN(tDistutilsGetoptErrortDistutilsArgErrors[a-zA-Z](?:[a-zA-Z0-9-]*)s^%s$s ^(%s)=!(%s)$t-t_t FancyGetoptcBseZdZddZdZdZdddZdZdZ dZ dZ d Z d Z ddd Zd Zdd ZdddZRS(sWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false cCst||_i|_|jr(|jni|_i|_g|_g|_i|_i|_i|_ g|_ dS(N( t option_tablet option_indext _build_indextaliastnegative_aliast short_optst long_optst short2longt attr_namet takes_argt option_order(tselfR((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt__init__-s           cCs6|jjx"|jD]}||j|d= 2is:invalid short option '%s': must a single character or Noneit=t:s>invalid negative alias '%s': aliased option '%s' takes a valuesginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tsinvalid long option name '%s' s'(must be letters, numbers, hyphens onlyN(R R R RtrepeatRtlent ValueErrort isinstancetstrRtNoneRRR tgetRt longopt_retmatchRR (RRtlongtshortthelpR(talias_to((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt_grok_option_tablesd     "  !         c Cs|dkrtjd}n|dkr:t}d}nd}|jtj|j}y"tj|||j \}}Wntj k r}t |nXx|D]\}}t |dkr|ddkr|j |d}n |d}|jj|} | r| }n|j|sQ|jj|} | rH| }d}qQd}n|j|} |r|jj| dk rt|| dd}nt|| ||jj||fqW|r||fS|SdS(sParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. iiiRN(R-tsystargvt OptionDummyR5RtjoinR tgetoptR terrorRR)R RR.RR R R(tgetattrtsetattrRR( Rtargstobjecttcreated_objectR toptstmsgR"tvalRtattr((s./usr/lib64/python2.7/distutils/fancy_getopt.pyR:sB     " "       cCs&|jdkrtdn|jSdS(sReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. s!'getopt()' hasn't been called yetN(RR-t RuntimeError(R((s./usr/lib64/python2.7/distutils/fancy_getopt.pytget_option_order*s cCsd}x||jD]q}|d}|d}t|}|ddkrS|d}n|dk rl|d}n||kr|}qqW|ddd}d}||} d|} |r|g} n d g} x|jD]}|d \}}} t| | } |ddkr|dd!}n|dkrk| rQ| jd ||| dfq| jd ||fnHd ||f}| r| jd ||| dfn| jd|x#| dD]}| j| |qWqW| S(sGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. iiiR&iiiNt sOption summary:is --%-*s %ss --%-*s s%s (-%s)s --%-*sN(RR)R-t wrap_textR(Rtheadertmax_optRR1R2tlt opt_widtht line_widtht text_widtht big_indenttlinesR3ttextt opt_names((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt generate_help5sF             ! cCsG|dkrtj}nx(|j|D]}|j|dq(WdS(Ns (R-R6tstdoutRStwrite(RRItfiletline((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt print_helps  N(t__name__t __module__t__doc__R-RRRRRRR#R$R%R5R:RFRSRX(((s./usr/lib64/python2.7/distutils/fancy_getopt.pyR!s  ,      X@ TcCs)t|}|j||j||S(N(RR%R:(toptionst negative_optR?R>tparser((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt fancy_getopts  RGcCs~|dkrgSt||kr)|gStj|}tj|t}tjd|}td|}g}x|ryg}d}xt|rt|d}|||kr|j |d|d=||}q|r|dddkr|d=nPqW|r]|dkr<|j |dd|!|d||d [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. s( +|-+)iiRGtN( R-R)Rt expandtabsRtWS_TRANStretsplittfilterRR9(RQtwidthtchunksRPtcur_linetcur_lenRK((s./usr/lib64/python2.7/distutils/fancy_getopt.pyRHs:       cCstj|tS(sXConvert a long option name to a valid Python identifier by changing "-" to "_". (RRR(R"((s./usr/lib64/python2.7/distutils/fancy_getopt.pyttranslate_longoptsR8cBseZdZgdZRS(s_Dummy class just used as a place to hold command-line option values as instance attributes.cCs%x|D]}t||dqWdS(skCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N(R=R-(RR\R"((s./usr/lib64/python2.7/distutils/fancy_getopt.pyRs (RYRZR[R(((s./usr/lib64/python2.7/distutils/fancy_getopt.pyR8s(R[t __revision__R6RRcR:tdistutils.errorsRRt longopt_pattcompileR/t neg_alias_ret maketransRRR_t whitespaceR)RbRHRjR8(((s./usr/lib64/python2.7/distutils/fancy_getopt.pyt s"    r " ; PKvr]5㑂 dir_util.pycnu[ {fc@sdZdZddlZddlZddlmZmZddlmZia dddd Z dddd Z ddddddd Z d Z ddd ZdZdS(sWdistutils.dir_util Utility functions for manipulating directories and directory trees.s$Id$iN(tDistutilsFileErrortDistutilsInternalError(tlogiiic Cst|ts"td|fntjj|}g}tjj|sX|dkr\|Stjtjj |r{|Stjj |\}}|g}xK|r|rtjj| rtjj |\}}|j d|qWx|D]}tjj ||}tjj |} tj| r3qn|dkrRt jd|n|sytj||WnWtk r} | jtjkotjj|std|| jdfqnX|j|ndt|  "  $!c Csi}x3|D]+}d|tjj|tjj|tjk r\} } |rwg} qtd|| fnX|st|d|ng} x1| D])} tjj || }tjj || }| j drqn|rktjj |rktj |}|dkrBt jd||n|s[tj||n| j|qtjj|r| jt||||||d|d |q||||||d|d || j|qW| S( sCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. i(t copy_files&cannot copy tree '%s': not a directoryserror listing files in '%s': %sRs.nfsislinking %s -> %sR(tdistutils.file_utilR-RRR RtlistdirterrorR"Rt startswithtislinktreadlinkRRtsymlinkRtextendt copy_tree(tsrctdstt preserve_modetpreserve_timestpreserve_symlinkstupdateRRR-tnamesRterrstrtoutputstntsrc_nametdst_namet link_dest((s*/usr/lib64/python2.7/distutils/dir_util.pyR6gsH       cCsxwtj|D]f}tjj||}tjj|r`tjj| r`t||q|jtj|fqW|jtj |fdS(sHelper for remove_tree().N( RR/RRR R2t_build_cmdtupleRtremovetrmdir(Rt cmdtuplestftreal_f((s*/usr/lib64/python2.7/distutils/dir_util.pyRDs %cCs|dkrtjd|n|r)dSg}t||x|D]w}yB|d|dtjj|d}|tkrt|=nWqCttfk r}tj d||qCXqCWdS(sRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). is'removing '%s' (and everything under it)Niserror removing %s: %s( RRRDRRR R tIOErrorRtwarn(t directoryRRRGtcmdR R!((s*/usr/lib64/python2.7/distutils/dir_util.pyt remove_trees    cCsCtjj|\}}|dd!tjkr?||d}n|S(sTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). ii(RRt splitdrivetsep(Rtdrive((s*/usr/lib64/python2.7/distutils/dir_util.pytensure_relatives(t__doc__t __revision__RRtdistutils.errorsRRt distutilsRR R"R,R6RDRNRR(((s*/usr/lib64/python2.7/distutils/dir_util.pyts  ?D PKvr]e|% % unixccompiler.pycnu[ {fc@sdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZmZmZmZdd lmZejd krddlZnd e fd YZdS( s9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' s$Id$iN(t StringTypetNoneType(t sysconfig(tnewer(t CCompilertgen_preprocess_optionstgen_lib_options(tDistutilsExecErrort CompileErrortLibErrort LinkError(tlogtdarwint UnixCCompilerc Bs|eZdZid(d6dgd6dgd6dgd6ddgd6dgd6d d gd 6d(d 6Zejd dkrd ged    N(t__name__t __module__t compiler_typeR$t executablesR8R9tsrc_extensionst obj_extensiontstatic_lib_extensiontshared_lib_extensiontdylib_lib_extensiontxcode_stub_lib_extensiontstatic_lib_formattshared_lib_formattdylib_lib_formattxcode_stub_lib_formatt exe_extensionRR7R@RJRYR[R^RcReRz(((s//usr/lib64/python2.7/distutils/unixccompiler.pyR 0sF            6    (t__doc__t __revision__R)R8RmttypesRRt distutilsRtdistutils.dep_utilRtdistutils.ccompilerRRRtdistutils.errorsRRR R R R9R:R (((s//usr/lib64/python2.7/distutils/unixccompiler.pyts$"PKvr]dm5m5 unixccompiler.py.distutils-rpathnu["""distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' """ __revision__ = "$Id$" import os, sys, re from types import StringType, NoneType from distutils import sysconfig from distutils.dep_util import newer from distutils.ccompiler import \ CCompiler, gen_preprocess_options, gen_lib_options from distutils.errors import \ DistutilsExecError, CompileError, LibError, LinkError from distutils import log if sys.platform == 'darwin': import _osx_support # XXX Things not currently handled: # * optimization/debug/warning flags; we just use whatever's in Python's # Makefile and live with it. Is this adequate? If not, we might # have to have a bunch of subclasses GNUCCompiler, SGICCompiler, # SunCCompiler, and I suspect down that road lies madness. # * even if we don't know a warning flag from an optimization flag, # we need some way for outsiders to feed preprocessor/compiler/linker # flags in to us -- eg. a sysadmin might want to mandate certain flags # via a site config file, or a user might want to set something for # compiling this module distribution only via the setup.py command # line, whatever. As long as these options come from something on the # current system, they can be as system-dependent as they like, and we # should just happily stuff them into the preprocessor/compiler/linker # options and carry on. class UnixCCompiler(CCompiler): compiler_type = 'unix' # These are used by CCompiler in two places: the constructor sets # instance attributes 'preprocessor', 'compiler', etc. from them, and # 'set_executable()' allows any of these to be set. The defaults here # are pretty generic; they will probably have to be set by an outsider # (eg. using information discovered by the sysconfig about building # Python extensions). executables = {'preprocessor' : None, 'compiler' : ["cc"], 'compiler_so' : ["cc"], 'compiler_cxx' : ["cc"], 'linker_so' : ["cc", "-shared"], 'linker_exe' : ["cc"], 'archiver' : ["ar", "-cr"], 'ranlib' : None, } if sys.platform[:6] == "darwin": executables['ranlib'] = ["ranlib"] # Needed for the filename generation methods provided by the base # class, CCompiler. NB. whoever instantiates/uses a particular # UnixCCompiler instance should set 'shared_lib_ext' -- we set a # reasonable common default here, but it's not necessarily used on all # Unices! src_extensions = [".c",".C",".cc",".cxx",".cpp",".m"] obj_extension = ".o" static_lib_extension = ".a" shared_lib_extension = ".so" dylib_lib_extension = ".dylib" xcode_stub_lib_extension = ".tbd" static_lib_format = shared_lib_format = dylib_lib_format = "lib%s%s" xcode_stub_lib_format = dylib_lib_format if sys.platform == "cygwin": exe_extension = ".exe" def preprocess(self, source, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None): ignore, macros, include_dirs = \ self._fix_compile_args(None, macros, include_dirs) pp_opts = gen_preprocess_options(macros, include_dirs) pp_args = self.preprocessor + pp_opts if output_file: pp_args.extend(['-o', output_file]) if extra_preargs: pp_args[:0] = extra_preargs if extra_postargs: pp_args.extend(extra_postargs) pp_args.append(source) # We need to preprocess: either we're being forced to, or we're # generating output to stdout, or there's a target output file and # the source file is newer than the target (or the target doesn't # exist). if self.force or output_file is None or newer(source, output_file): if output_file: self.mkpath(os.path.dirname(output_file)) try: self.spawn(pp_args) except DistutilsExecError, msg: raise CompileError, msg def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): compiler_so = self.compiler_so if sys.platform == 'darwin': compiler_so = _osx_support.compiler_fixup(compiler_so, cc_args + extra_postargs) try: self.spawn(compiler_so + cc_args + [src, '-o', obj] + extra_postargs) except DistutilsExecError, msg: raise CompileError, msg def create_static_lib(self, objects, output_libname, output_dir=None, debug=0, target_lang=None): objects, output_dir = self._fix_object_args(objects, output_dir) output_filename = \ self.library_filename(output_libname, output_dir=output_dir) if self._need_link(objects, output_filename): self.mkpath(os.path.dirname(output_filename)) self.spawn(self.archiver + [output_filename] + objects + self.objects) # Not many Unices required ranlib anymore -- SunOS 4.x is, I # think the only major Unix that does. Maybe we need some # platform intelligence here to skip ranlib if it's not # needed -- or maybe Python's configure script took care of # it for us, hence the check for leading colon. if self.ranlib: try: self.spawn(self.ranlib + [output_filename]) except DistutilsExecError, msg: raise LibError, msg else: log.debug("skipping %s (up-to-date)", output_filename) def link(self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): objects, output_dir = self._fix_object_args(objects, output_dir) libraries, library_dirs, runtime_library_dirs = \ self._fix_lib_args(libraries, library_dirs, runtime_library_dirs) lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, libraries) if type(output_dir) not in (StringType, NoneType): raise TypeError, "'output_dir' must be a string or None" if output_dir is not None: output_filename = os.path.join(output_dir, output_filename) if self._need_link(objects, output_filename): ld_args = (objects + self.objects + lib_opts + ['-o', output_filename]) if debug: ld_args[:0] = ['-g'] if extra_preargs: ld_args[:0] = extra_preargs if extra_postargs: ld_args.extend(extra_postargs) self.mkpath(os.path.dirname(output_filename)) try: if target_desc == CCompiler.EXECUTABLE: linker = self.linker_exe[:] else: linker = self.linker_so[:] if target_lang == "c++" and self.compiler_cxx: # skip over environment variable settings if /usr/bin/env # is used to set up the linker's environment. # This is needed on OSX. Note: this assumes that the # normal and C++ compiler have the same environment # settings. i = 0 if os.path.basename(linker[0]) == "env": i = 1 while '=' in linker[i]: i = i + 1 linker[i] = self.compiler_cxx[i] if sys.platform == 'darwin': linker = _osx_support.compiler_fixup(linker, ld_args) self.spawn(linker + ld_args) except DistutilsExecError, msg: raise LinkError, msg else: log.debug("skipping %s (up-to-date)", output_filename) # -- Miscellaneous methods ----------------------------------------- # These are all used by the 'gen_lib_options() function, in # ccompiler.py. def library_dir_option(self, dir): return "-L" + dir def _is_gcc(self, compiler_name): return "gcc" in compiler_name or "g++" in compiler_name def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php # ?func=detail&aid=445902&group_id=5470&atid=105470 # Linkers on different platforms need different options to # specify that directories need to be added to the list of # directories searched for dependencies when a dynamic library # is sought. GCC has to be told to pass the -R option through # to the linker, whereas other compilers just know this. # Other compilers may need something slightly different. At # this time, there's no way to determine this information from # the configuration data stored in the Python installation, so # we use this hack. compiler = os.path.basename(sysconfig.get_config_var("CC")) if sys.platform[:6] == "darwin": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:7] == "freebsd": return "-Wl,-rpath=" + dir elif sys.platform[:5] == "hp-ux": if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] elif self._is_gcc(compiler): return "-Wl,-R" + dir else: return "-R" + dir def library_option(self, lib): return "-l" + lib def find_library_file(self, dirs, lib, debug=0): shared_f = self.library_filename(lib, lib_type='shared') dylib_f = self.library_filename(lib, lib_type='dylib') xcode_stub_f = self.library_filename(lib, lib_type='xcode_stub') static_f = self.library_filename(lib, lib_type='static') if sys.platform == 'darwin': # On OSX users can specify an alternate SDK using # '-isysroot', calculate the SDK root if it is specified # (and use it further on) # # Note that, as of Xcode 7, Apple SDKs may contain textual stub # libraries with .tbd extensions rather than the normal .dylib # shared libraries installed in /. The Apple compiler tool # chain handles this transparently but it can cause problems # for programs that are being built with an SDK and searching # for specific libraries. Callers of find_library_file need to # keep in mind that the base filename of the returned SDK library # file might have a different extension from that of the library # file installed on the running system, for example: # /Applications/Xcode.app/Contents/Developer/Platforms/ # MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/ # usr/lib/libedit.tbd # vs # /usr/lib/libedit.dylib cflags = sysconfig.get_config_var('CFLAGS') m = re.search(r'-isysroot\s+(\S+)', cflags) if m is None: sysroot = '/' else: sysroot = m.group(1) for dir in dirs: shared = os.path.join(dir, shared_f) dylib = os.path.join(dir, dylib_f) static = os.path.join(dir, static_f) xcode_stub = os.path.join(dir, xcode_stub_f) if sys.platform == 'darwin' and ( dir.startswith('/System/') or ( dir.startswith('/usr/') and not dir.startswith('/usr/local/'))): shared = os.path.join(sysroot, dir[1:], shared_f) dylib = os.path.join(sysroot, dir[1:], dylib_f) static = os.path.join(sysroot, dir[1:], static_f) xcode_stub = os.path.join(sysroot, dir[1:], xcode_stub_f) # We're second-guessing the linker here, with not much hard # data to go on: GCC seems to prefer the shared library, so I'm # assuming that *all* Unix C compilers do. And of course I'm # ignoring even GCC's "-static" option. So sue me. if os.path.exists(dylib): return dylib elif os.path.exists(xcode_stub): return xcode_stub elif os.path.exists(shared): return shared elif os.path.exists(static): return static # Oops, didn't find it in *any* of 'dirs' return None PKvr]8AAcmd.pycnu[ {fc@sdZdZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z ddlm Z dfdYZd efd YZdS( stdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. s$Id$iN(tDistutilsOptionError(tutiltdir_utilt file_utilt archive_utiltdep_util(tlogtCommandcBsyeZdZgZdZdZdZdZdZd#ddZ dZ d d Z d Z d#d Zd#d ZdZd#dZdZdZdZdZd dZddZdZdZdZd#d dZddZd d d#d dZd d dd dZd dZd d d Z d#d#d#d#d!Z!d#d#d d"Z"RS($s}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsddlm}t||s+tdn|jtkrFtdn||_|jd|_ |j |_ d|_ d|_ d|_dS(sCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. i(t Distributions$dist must be a Distribution instancesCommand is an abstract classiN(tdistutils.distRt isinstancet TypeErrort __class__Rt RuntimeErrort distributiontinitialize_optionstNonet_dry_runtverbosetforcethelpt finalized(tselftdistR((s%/usr/lib64/python2.7/distutils/cmd.pyt__init__1s       cCsO|dkrBt|d|}|dkr;t|j|S|Sn t|dS(Ntdry_runt_(tgetattrRRtAttributeError(Rtattrtmyval((s%/usr/lib64/python2.7/distutils/cmd.pyt __getattr__as   cCs#|js|jnd|_dS(Ni(Rtfinalize_options(R((s%/usr/lib64/python2.7/distutils/cmd.pytensure_finalizedks  cCstd|jdS(sSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. s,abstract method -- subclass %s must overrideN(R R (R((s%/usr/lib64/python2.7/distutils/cmd.pyR}s cCstd|jdS(sSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. s,abstract method -- subclass %s must overrideN(R R (R((s%/usr/lib64/python2.7/distutils/cmd.pyR s tcCsddlm}|dkr/d|j}n|j||dtj|d}xy|jD]n\}}}|j|}|ddkr|d }nt ||}|j|d||fdtjq]WdS(Ni(t longopt_xlatescommand options for '%s':tlevels t=s%s = %s( tdistutils.fancy_getoptR#Rtget_command_nametannounceRtINFOt user_optionst translateR(RtheadertindentR#toptionRtvalue((s%/usr/lib64/python2.7/distutils/cmd.pyt dump_optionss   cCstd|jdS(sA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. s,abstract method -- subclass %s must overrideN(R R (R((s%/usr/lib64/python2.7/distutils/cmd.pytruns icCstj||dS(smIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N(R(RtmsgR$((s%/usr/lib64/python2.7/distutils/cmd.pyR(scCs/ddlm}|r+|GHtjjndS(s~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. i(tDEBUGN(tdistutils.debugR3tsyststdouttflush(RR2R3((s%/usr/lib64/python2.7/distutils/cmd.pyt debug_printscCs[t||}|dkr/t||||St|tsWtd|||fn|S(Ns'%s' must be a %s (got `%s`)(RRtsetattrR tstrR(RR.twhattdefaulttval((s%/usr/lib64/python2.7/distutils/cmd.pyt_ensure_stringlikes cCs|j|d|dS(sWEnsure that 'option' is a string; if not defined, set it to 'default'. tstringN(R>(RR.R<((s%/usr/lib64/python2.7/distutils/cmd.pyt ensure_stringscCst||}|dkrdSt|trMt||tjd|ndt|trd}x0|D]}t|tsid}PqiqiWnd}|std||fndS(sEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Ns,\s*|\s+iis''%s' must be a list of strings (got %r)( RRR R:R9tretsplittlistR(RR.R=toktelement((s%/usr/lib64/python2.7/distutils/cmd.pytensure_string_lists    cCsL|j|||}|dk rH|| rHtd|||fndS(Nserror in '%s' option: (R>RR(RR.ttesterR;t error_fmtR<R=((s%/usr/lib64/python2.7/distutils/cmd.pyt_ensure_tested_stringscCs |j|tjjdddS(s5Ensure that 'option' is the name of an existing file.tfilenames$'%s' does not exist or is not a fileN(RItostpathtisfile(RR.((s%/usr/lib64/python2.7/distutils/cmd.pytensure_filenamescCs |j|tjjdddS(Nsdirectory names)'%s' does not exist or is not a directory(RIRKRLtisdir(RR.((s%/usr/lib64/python2.7/distutils/cmd.pytensure_dirname scCs$t|dr|jS|jjSdS(Nt command_name(thasattrRQR t__name__(R((s%/usr/lib64/python2.7/distutils/cmd.pyR'scGsh|jj|}|jxE|D]=\}}t||dkr#t||t||q#q#WdS(s>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N(Rtget_command_objR!RRR9(Rtsrc_cmdt option_pairst src_cmd_objt src_optiont dst_option((s%/usr/lib64/python2.7/distutils/cmd.pytset_undefined_optionss   cCs#|jj||}|j|S(sWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. (RRTR!(Rtcommandtcreatetcmd_obj((s%/usr/lib64/python2.7/distutils/cmd.pytget_finalized_command1s icCs|jj||S(N(Rtreinitialize_command(RR[treinit_subcommands((s%/usr/lib64/python2.7/distutils/cmd.pyR_=s cCs|jj|dS(sRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N(Rt run_command(RR[((s%/usr/lib64/python2.7/distutils/cmd.pyRaAscCsLg}x?|jD]4\}}|dks4||r|j|qqW|S(skDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N(t sub_commandsRtappend(Rtcommandstcmd_nametmethod((s%/usr/lib64/python2.7/distutils/cmd.pytget_sub_commandsHs cCs!tjd|j|fdS(Nswarning: %s: %s (RtwarnR'(RR2((s%/usr/lib64/python2.7/distutils/cmd.pyRhXs cCs tj|||d|jdS(NR(RtexecuteR(RtfunctargsR2R$((s%/usr/lib64/python2.7/distutils/cmd.pyRi\sicCstj||d|jdS(NR(RtmkpathR(Rtnametmode((s%/usr/lib64/python2.7/distutils/cmd.pyRl_sc Cs)tj|||||j |d|jS(sCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)R(Rt copy_fileRR(Rtinfiletoutfilet preserve_modetpreserve_timestlinkR$((s%/usr/lib64/python2.7/distutils/cmd.pyRobs c Cs)tj||||||j d|jS(s\Copy an entire directory tree respecting verbose, dry-run, and force flags. R(Rt copy_treeRR(RRpRqRrRstpreserve_symlinksR$((s%/usr/lib64/python2.7/distutils/cmd.pyRuos   cCstj||d|jS(s$Move a file respecting dry-run flag.R(Rt move_fileR(RtsrctdstR$((s%/usr/lib64/python2.7/distutils/cmd.pyRw{scCs*ddlm}|||d|jdS(s2Spawn an external command respecting dry-run flag.i(tspawnRN(tdistutils.spawnRzR(Rtcmdt search_pathR$Rz((s%/usr/lib64/python2.7/distutils/cmd.pyRzsc Cs+tj||||d|jd|d|S(NRtownertgroup(Rt make_archiveR(Rt base_nametformattroot_dirtbase_dirR~R((s%/usr/lib64/python2.7/distutils/cmd.pyRscCs|dkrd|}nt|tr4|f}n!t|ttfsUtdn|dkr}d|dj|f}n|jstj ||r|j ||||n t j |dS(sSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. sskipping %s (inputs unchanged)s9'infiles' must be a string, or a list or tuple of stringssgenerating %s from %ss, N( RR R:RCttupleR tjoinRRt newer_groupRiRtdebug(RtinfilesRqRjRktexec_msgtskip_msgR$((s%/usr/lib64/python2.7/distutils/cmd.pyt make_files     N(#RSt __module__t__doc__RbRRR!RR RR0R1R(R8R>R@RFRIRNRPR'RZR^R_RaRgRhRiRlRoRuRwRzRR(((s%/usr/lib64/python2.7/distutils/cmd.pyRsD 0                  t install_misccBs;eZdZdgZdZdZdZdZRS( s{Common base class for installing some files in a subdirectory. Currently used by install_data and install_scripts. s install-dir=tds!directory to install the files tocCsd|_g|_dS(N(Rt install_dirtoutfiles(R((s%/usr/lib64/python2.7/distutils/cmd.pyRs cCs|jd|dfdS(NtinstallR(RZ(Rtdirname((s%/usr/lib64/python2.7/distutils/cmd.pyt_install_dir_fromscCsmg|_|sdS|j|jxC|D];}|j||j|jjtjj|j|q*WdS(N(RRlRRoRcRKRLR(Rtfilelisttf((s%/usr/lib64/python2.7/distutils/cmd.pyt _copy_filess  cCs|jS(N(R(R((s%/usr/lib64/python2.7/distutils/cmd.pyt get_outputss(s install-dir=Rs!directory to install the files to(RSRRR*RRRR(((s%/usr/lib64/python2.7/distutils/cmd.pyRs     (Rt __revision__R5RKRAtdistutils.errorsRt distutilsRRRRRRRR(((s%/usr/lib64/python2.7/distutils/cmd.pyts$(PKvr];(2828util.pycnu[ {fc@s1dZdZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZd Zd Zd Zd ad ZdZddZdaaadZdZdd d dZdZd d dddd ddZdZdS(sudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. s$Id$iN(tDistutilsPlatformError(tnewer(tspawn(tlog(tDistutilsByteCompileErrorcCstjdkrd}tjtj|}|dkr=tjStjtjd|}tj|t||!j}|dkrdS|dkrdStjSd tj krtj d Stjd kst td  rtjStj \}}}}}tj|}tj |d d }tj |dd}tj |d d}|d dkrcd||fS|d dkr|ddkrd}dt |dd|df}idd6dd6} |d| tj7}qn|d d!krd||fS|d d"krd#|||fS|d$ d%kred%}tjd&} | j|} | r| j}qnU|d$ d'krdd(l} dd(l} | j| jj|||\}}}nd)|||fS(*sReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. for IRIX the architecture isn't particularly important (IRIX only runs on SGI hardware), but for Linux the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u irix-5.3 irix64-6.2 Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win-ia64 (64bit Windows on Itanium) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. tnts bit (it)tamd64s win-amd64titaniumswin-ia64t_PYTHON_HOST_PLATFORMtposixtunamet/tt t_t-itlinuxs%s-%stsunosit5tsolariss%d.%siit32bitit64bitIs.%sitirixtaixs%s-%s.%sitcygwins[\d.]+tdarwinNs%s-%s-%s(tostnametstringtfindtsystversiontplatformtlentlowertenvironthasattrR treplacetinttmaxinttretcompiletmatchtgroupt _osx_supporttdistutils.sysconfigtget_platform_osxt sysconfigtget_config_vars(tprefixtitjtlooktosnamethosttreleaseR tmachinetbitnesstrel_retmR-t distutils((s&/usr/lib64/python2.7/distutils/util.pyt get_platformsZ     " cCstjdkr|S|s|S|ddkr=td|n|ddkr]td|ntj|d}xd|kr|jdqrW|stjStjj|S(sReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. R ispath '%s' cannot be absoluteispath '%s' cannot end with '/'t.( Rtsept ValueErrorRtsplittremovetcurdirtpathtjoin(tpathnametpaths((s&/usr/lib64/python2.7/distutils/util.pyt convert_pathns cCstjdkrNtjj|s4tjj||Stjj||dSntjdkrtjj|\}}|ddkr|d}ntjj||Stjdkrtjj|\}}|dtjkr|d}ntjj||StdtjdS( s Return 'pathname' with 'new_root' prepended. If 'pathname' is relative, this is equivalent to "os.path.join(new_root,pathname)". Otherwise, it requires making 'pathname' relative and then joining the two, which is tricky on DOS/Windows and Mac OS. R iRis\tos2s!nothing known about platform '%s'N(RRREtisabsRFt splitdriveR@R(tnew_rootRGtdriveRE((s&/usr/lib64/python2.7/distutils/util.pyt change_roots   icCstr dStjdkrudtjkruy0ddl}|jtjdtjd(RS((s&/usr/lib64/python2.7/distutils/util.pyt check_environs  $cCsQt|d}ytjd||SWn tk rL}td|nXdS(sPerform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. cSs8|jd}||kr)t||Stj|SdS(Ni(R,tstrRR$(R+t local_varstvar_name((s&/usr/lib64/python2.7/distutils/util.pyt_substs s\$([a-zA-Z_][a-zA-Z_0-9]*)sinvalid variable '$%s'N(RXR)tsubRWRA(tsRZR\tvar((s&/usr/lib64/python2.7/distutils/util.pyt subst_varss  serror: cCs|t|S(N(RY(texcR2((s&/usr/lib64/python2.7/distutils/util.pytgrok_environment_errorscCs8tjdtjatjdatjdadS(Ns [^\\\'\"%s ]*s'(?:[^'\\]|\\.)*'s"(?:[^"\\]|\\.)*"(R)R*Rt whitespacet _wordchars_ret _squote_ret _dquote_re(((s&/usr/lib64/python2.7/distutils/util.pyt _init_regexscCstd krtntj|}g}d}x|rtj||}|j}|t|kr|j|| Pn||tj kr|j|| tj ||}d}n||dkr|| ||d}|d}n||dkrt j||}n6||dkr<t j||}nt d|||d krmtd||n|j\}}|| ||d|d!||}|jd}|t|kr4|j|Pq4q4W|S( sSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. is\it't"s!this can't happen (bad char '%c')s"bad string (mismatched %s quotes?)iN(RdtNoneRgRtstripR+tendR"tappendRctlstripReRft RuntimeErrorRAtspan(R^twordstposR<Rltbeg((s&/usr/lib64/python2.7/distutils/util.pyt split_quotedsD      % cCsj|dkrFd|j|f}|ddkrF|dd!d}qFntj||sf||ndS(sPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. s%s%ris,)iRN(Rjt__name__Rtinfo(tfunctargstmsgtverbosetdry_run((s&/usr/lib64/python2.7/distutils/util.pytexecute*s  cCsCtj|}|dkrdS|dkr/dStd|fdS(sConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. tytyesttttruetont1itntnotftfalsetofft0isinvalid truth value %rN(R}R~RRRR(RRRRRR(RR#RA(tval((s&/usr/lib64/python2.7/distutils/util.pyt strtobool=s   icCstjrtdn|dkr9to3|dk}n|sy&ddlm}|d\} } Wn4tk rddlm} d| d} } nXt j d| |sB| dk rt j | d} nt | d} | jd | jtjtt|d d | jd |||||f| jntj| g} |d krp| jd dn|dkr| jd dnt| d|tt j| fd| d|n(ddlm}x|D] }|ddkrqn|trdpd}|}|rV|t| |krCtd||fn|t|}n|rtt jj||}nt jj|}|r|st||rt j d|||s||||qqt j d||qqWdS(sByte-compile a collection of Python source files to either .pyc or .pyo files in the same directory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize (generate .pyc) 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. sbyte-compiling is disabled.ii(tmkstemps.py(tmktemps$writing byte-compilation script '%s'tws2from distutils.util import byte_compile files = [ s, s] s byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) is-Ois-OOR{s removing %s(R*itctos1invalid prefix: filename %r doesn't start with %rsbyte-compiling %s to %ss%skipping byte-compilation of %s to %sN(!Rtdont_write_bytecodeRRjt __debug__ttempfileRRVRRRvRtfdopentopentwriteRRFtmaptreprtcloset executabletinsertRR|RCt py_compileR*R"RAREtbasenameRtdebug(tpy_filestoptimizetforceR2tbase_dirRzR{tdirectRt script_fdt script_nameRtscripttcmdR*tfiletcfiletdfilet cfile_base((s&/usr/lib64/python2.7/distutils/util.pyt byte_compileMsh"    &      cCs,tj|d}tj|dd}|S(sReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline. s iRs (RRBRF(theadertlines((s&/usr/lib64/python2.7/distutils/util.pyt rfc822_escapes( t__doc__t __revision__RRRR)tdistutils.errorsRtdistutils.dep_utilRtdistutils.spawnRR=RRR>RIRORRRXR`RbRjRdReRfRgRtR|RRR(((s&/usr/lib64/python2.7/distutils/util.pyts00 ^       ?  PKvr]8AAcmd.pyonu[ {fc@sdZdZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z ddlm Z dfdYZd efd YZdS( stdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. s$Id$iN(tDistutilsOptionError(tutiltdir_utilt file_utilt archive_utiltdep_util(tlogtCommandcBsyeZdZgZdZdZdZdZdZd#ddZ dZ d d Z d Z d#d Zd#d ZdZd#dZdZdZdZdZd dZddZdZdZdZd#d dZddZd d d#d dZd d dd dZd dZd d d Z d#d#d#d#d!Z!d#d#d d"Z"RS($s}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsddlm}t||s+tdn|jtkrFtdn||_|jd|_ |j |_ d|_ d|_ d|_dS(sCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. i(t Distributions$dist must be a Distribution instancesCommand is an abstract classiN(tdistutils.distRt isinstancet TypeErrort __class__Rt RuntimeErrort distributiontinitialize_optionstNonet_dry_runtverbosetforcethelpt finalized(tselftdistR((s%/usr/lib64/python2.7/distutils/cmd.pyt__init__1s       cCsO|dkrBt|d|}|dkr;t|j|S|Sn t|dS(Ntdry_runt_(tgetattrRRtAttributeError(Rtattrtmyval((s%/usr/lib64/python2.7/distutils/cmd.pyt __getattr__as   cCs#|js|jnd|_dS(Ni(Rtfinalize_options(R((s%/usr/lib64/python2.7/distutils/cmd.pytensure_finalizedks  cCstd|jdS(sSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. s,abstract method -- subclass %s must overrideN(R R (R((s%/usr/lib64/python2.7/distutils/cmd.pyR}s cCstd|jdS(sSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. s,abstract method -- subclass %s must overrideN(R R (R((s%/usr/lib64/python2.7/distutils/cmd.pyR s tcCsddlm}|dkr/d|j}n|j||dtj|d}xy|jD]n\}}}|j|}|ddkr|d }nt ||}|j|d||fdtjq]WdS(Ni(t longopt_xlatescommand options for '%s':tlevels t=s%s = %s( tdistutils.fancy_getoptR#Rtget_command_nametannounceRtINFOt user_optionst translateR(RtheadertindentR#toptionRtvalue((s%/usr/lib64/python2.7/distutils/cmd.pyt dump_optionss   cCstd|jdS(sA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. s,abstract method -- subclass %s must overrideN(R R (R((s%/usr/lib64/python2.7/distutils/cmd.pytruns icCstj||dS(smIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N(R(RtmsgR$((s%/usr/lib64/python2.7/distutils/cmd.pyR(scCs/ddlm}|r+|GHtjjndS(s~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. i(tDEBUGN(tdistutils.debugR3tsyststdouttflush(RR2R3((s%/usr/lib64/python2.7/distutils/cmd.pyt debug_printscCs[t||}|dkr/t||||St|tsWtd|||fn|S(Ns'%s' must be a %s (got `%s`)(RRtsetattrR tstrR(RR.twhattdefaulttval((s%/usr/lib64/python2.7/distutils/cmd.pyt_ensure_stringlikes cCs|j|d|dS(sWEnsure that 'option' is a string; if not defined, set it to 'default'. tstringN(R>(RR.R<((s%/usr/lib64/python2.7/distutils/cmd.pyt ensure_stringscCst||}|dkrdSt|trMt||tjd|ndt|trd}x0|D]}t|tsid}PqiqiWnd}|std||fndS(sEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Ns,\s*|\s+iis''%s' must be a list of strings (got %r)( RRR R:R9tretsplittlistR(RR.R=toktelement((s%/usr/lib64/python2.7/distutils/cmd.pytensure_string_lists    cCsL|j|||}|dk rH|| rHtd|||fndS(Nserror in '%s' option: (R>RR(RR.ttesterR;t error_fmtR<R=((s%/usr/lib64/python2.7/distutils/cmd.pyt_ensure_tested_stringscCs |j|tjjdddS(s5Ensure that 'option' is the name of an existing file.tfilenames$'%s' does not exist or is not a fileN(RItostpathtisfile(RR.((s%/usr/lib64/python2.7/distutils/cmd.pytensure_filenamescCs |j|tjjdddS(Nsdirectory names)'%s' does not exist or is not a directory(RIRKRLtisdir(RR.((s%/usr/lib64/python2.7/distutils/cmd.pytensure_dirname scCs$t|dr|jS|jjSdS(Nt command_name(thasattrRQR t__name__(R((s%/usr/lib64/python2.7/distutils/cmd.pyR'scGsh|jj|}|jxE|D]=\}}t||dkr#t||t||q#q#WdS(s>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N(Rtget_command_objR!RRR9(Rtsrc_cmdt option_pairst src_cmd_objt src_optiont dst_option((s%/usr/lib64/python2.7/distutils/cmd.pytset_undefined_optionss   cCs#|jj||}|j|S(sWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. (RRTR!(Rtcommandtcreatetcmd_obj((s%/usr/lib64/python2.7/distutils/cmd.pytget_finalized_command1s icCs|jj||S(N(Rtreinitialize_command(RR[treinit_subcommands((s%/usr/lib64/python2.7/distutils/cmd.pyR_=s cCs|jj|dS(sRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N(Rt run_command(RR[((s%/usr/lib64/python2.7/distutils/cmd.pyRaAscCsLg}x?|jD]4\}}|dks4||r|j|qqW|S(skDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N(t sub_commandsRtappend(Rtcommandstcmd_nametmethod((s%/usr/lib64/python2.7/distutils/cmd.pytget_sub_commandsHs cCs!tjd|j|fdS(Nswarning: %s: %s (RtwarnR'(RR2((s%/usr/lib64/python2.7/distutils/cmd.pyRhXs cCs tj|||d|jdS(NR(RtexecuteR(RtfunctargsR2R$((s%/usr/lib64/python2.7/distutils/cmd.pyRi\sicCstj||d|jdS(NR(RtmkpathR(Rtnametmode((s%/usr/lib64/python2.7/distutils/cmd.pyRl_sc Cs)tj|||||j |d|jS(sCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)R(Rt copy_fileRR(Rtinfiletoutfilet preserve_modetpreserve_timestlinkR$((s%/usr/lib64/python2.7/distutils/cmd.pyRobs c Cs)tj||||||j d|jS(s\Copy an entire directory tree respecting verbose, dry-run, and force flags. R(Rt copy_treeRR(RRpRqRrRstpreserve_symlinksR$((s%/usr/lib64/python2.7/distutils/cmd.pyRuos   cCstj||d|jS(s$Move a file respecting dry-run flag.R(Rt move_fileR(RtsrctdstR$((s%/usr/lib64/python2.7/distutils/cmd.pyRw{scCs*ddlm}|||d|jdS(s2Spawn an external command respecting dry-run flag.i(tspawnRN(tdistutils.spawnRzR(Rtcmdt search_pathR$Rz((s%/usr/lib64/python2.7/distutils/cmd.pyRzsc Cs+tj||||d|jd|d|S(NRtownertgroup(Rt make_archiveR(Rt base_nametformattroot_dirtbase_dirR~R((s%/usr/lib64/python2.7/distutils/cmd.pyRscCs|dkrd|}nt|tr4|f}n!t|ttfsUtdn|dkr}d|dj|f}n|jstj ||r|j ||||n t j |dS(sSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. sskipping %s (inputs unchanged)s9'infiles' must be a string, or a list or tuple of stringssgenerating %s from %ss, N( RR R:RCttupleR tjoinRRt newer_groupRiRtdebug(RtinfilesRqRjRktexec_msgtskip_msgR$((s%/usr/lib64/python2.7/distutils/cmd.pyt make_files     N(#RSt __module__t__doc__RbRRR!RR RR0R1R(R8R>R@RFRIRNRPR'RZR^R_RaRgRhRiRlRoRuRwRzRR(((s%/usr/lib64/python2.7/distutils/cmd.pyRsD 0                  t install_misccBs;eZdZdgZdZdZdZdZRS( s{Common base class for installing some files in a subdirectory. Currently used by install_data and install_scripts. s install-dir=tds!directory to install the files tocCsd|_g|_dS(N(Rt install_dirtoutfiles(R((s%/usr/lib64/python2.7/distutils/cmd.pyRs cCs|jd|dfdS(NtinstallR(RZ(Rtdirname((s%/usr/lib64/python2.7/distutils/cmd.pyt_install_dir_fromscCsmg|_|sdS|j|jxC|D];}|j||j|jjtjj|j|q*WdS(N(RRlRRoRcRKRLR(Rtfilelisttf((s%/usr/lib64/python2.7/distutils/cmd.pyt _copy_filess  cCs|jS(N(R(R((s%/usr/lib64/python2.7/distutils/cmd.pyt get_outputss(s install-dir=Rs!directory to install the files to(RSRRR*RRRR(((s%/usr/lib64/python2.7/distutils/cmd.pyRs     (Rt __revision__R5RKRAtdistutils.errorsRt distutilsRRRRRRRR(((s%/usr/lib64/python2.7/distutils/cmd.pyts$(PKvr]\4\4 sysconfig.pycnu[ fc@sdZdZddlZddlZddlZddlZddlmZejj ej Z ejj ej Z ejrejjejjejZn ejZejdkrdedjkrejjejjeejjZnejdkrVded jkrVejjejjeejjejjZnejdkrd ed jkrejjejjeejjejjZnd ejkrejj ejd Znd ZeZdZdddZddddZdZdZdZ ddZ!ej"dZ#ej"dZ$ej"dZ%ddZ&dZ'da(dZ)dZ*dZ+dZ,dZ-dS( sProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: s$Id$iN(tDistutilsPlatformErrortnttpcbuildis\pc\vis\pcbuild\amd64it_PYTHON_PROJECT_BASEcCs=x6dD].}tjjtjjtd|rtSqWtS(Ns Setup.dists Setup.localtModules(s Setup.dists Setup.local(tostpathtisfiletjoint project_basetTruetFalse(tfn((s+/usr/lib64/python2.7/distutils/sysconfig.pyt _python_build7s $cCs tjd S(sReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. i(tsystversion(((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_python_version?sicCs=|d kr!|rtpt}ntjdkrtrtjrWtjj tj}n tj }|rr|}n<tjj tjj |t d}tjj |d}|Stjj |ddttjrdpdStjdkrtjj |dStjd kr&tjj |dStd tjd S( sReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. tposixtsrcdirtIncludetincludetpythons-debugtRtos2sFI don't know where Python installs its C header files on platform '%s'N(tNonet EXEC_PREFIXtPREFIXRtnamet python_buildRt executableRtdirnametgetcwdtabspathRtget_config_varRtpydebugR(t plat_specifictprefixtbuildirtinc_dirR((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_python_incGs,    !cCs6|d kr!|rtpt}ntjdkr|s<|rEd}nd}tjj||dt}|rt|Stjj|dSntjdkr|rtjj|dStdkr|Stjj|ddSnTtjd kr|rtjj|dStjj|ddSntd tjd S( sIReturn the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. Rtlib64tlibRs site-packagesRtLibs2.2Rs?I don't know where Python installs its library on platform '%s'N( RRRRRRRRR(R#t standard_libR$R)t libpython((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_python_libss0    cCs|jdkrtjdkrStdsSddl}|jtdtdRFtcctcxxtcflagstccsharedtldsharedtso_exttartar_flagstnewcctcppRCtcc_cmd((s+/usr/lib64/python2.7/distutils/sysconfig.pyRGs^     !    cCsvtr6tjdkr-tjjtd}qEt}ntdd}tdkr]d}nd}tjj||S(s2Return full pathname of installed pyconfig.h file.RtPCR#is2.2sconfig.hs pyconfig-64.h(RRRRRR R'R(R&tconfig_h((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_config_h_filenames  cCsWtrtjjtdStdddd}tjj|dtjrLdpOddS(sAReturn full pathname of installed Makefile from the Python build.tMakefileR#iR+tconfigs-debugR(RRRRR R-RR"(tlib_dir((s+/usr/lib64/python2.7/distutils/sysconfig.pytget_makefile_filenamescCs|dkri}ntjd}tjd}x|j}|sLPn|j|}|r|jdd\}}yt|}Wntk rnX||| sR     $ %*%%   ,3 J    S    &PKvr]!Q config.pyonu[ {fc@sRdZddlZddlmZddlmZdZdefdYZdS(sdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. iN(t ConfigParser(tCommandsE[distutils] index-servers = pypi [pypi] username:%s password:%s t PyPIRCCommandcBsueZdZdZdZd Zd ZdddefdgZdgZ dZ d Z d Z d Z d ZRS(s;Base command that knows how to handle the .pypirc file shttps://upload.pypi.org/legacy/tpypis repository=trsurl of repository [default: %s]s show-responses&display full response text from servercCstjjtjjddS(sReturns rc file path.t~s.pypirc(tostpathtjoint expanduser(tself((s(/usr/lib64/python2.7/distutils/config.pyt _get_rc_file&scCsd|j}tjtj|tjtjBdd}z|jt||fWd|jXdS(sCreates a default .pypirc file.itwN( R RtfdopentopentO_CREATtO_WRONLYtwritetDEFAULT_PYPIRCtclose(R tusernametpasswordtrctf((s(/usr/lib64/python2.7/distutils/config.pyt _store_pypirc*s  +c Cs3|j}tjj|r/|jd||jp>|j}t}|j||j }d|kr|j dd}g|j dD]$}|j dkr|j ^q}|gkrd|krdg}qiSnxC|D]}i|d6}|j |d|ds   PKvr]R log.pyonu[ {fc@sdZdZdZdZdZdZddlZdd d YZeZej Z ej Z ej Z ej Z ej Z ejZd Zd ZdS( s,A simple log mechanism styled after PEP 282.iiiiiiNtLogcBsSeZedZdZdZdZdZdZdZ dZ RS(cCs ||_dS(N(t threshold(tselfR((s%/usr/lib64/python2.7/distutils/log.pyt__init__scCs|tttttfkr4tdt|n||jkr|rV||}n|tttfkrwtj }n tj }|j d||j ndS(Ns%s wrong log levels%s ( tDEBUGtINFOtWARNtERRORtFATALt ValueErrortstrRtsyststderrtstdouttwritetflush(Rtleveltmsgtargststream((s%/usr/lib64/python2.7/distutils/log.pyt_logs   cGs|j|||dS(N(R(RRRR((s%/usr/lib64/python2.7/distutils/log.pytlog!scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytdebug$scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytinfo'scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytwarn*scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pyterror-scGs|jt||dS(N(RR(RRR((s%/usr/lib64/python2.7/distutils/log.pytfatal0s( t__name__t __module__RRRRRRRRR(((s%/usr/lib64/python2.7/distutils/log.pyRs       cCstj}|t_|S(N(t _global_logR(Rtold((s%/usr/lib64/python2.7/distutils/log.pyt set_threshold;s  cCsO|dkrttn2|dkr2ttn|dkrKttndS(Niii(RRRR(tv((s%/usr/lib64/python2.7/distutils/log.pyt set_verbosityAs      ((t__doc__RRRRRR RRRRRRRRRR!(((s%/usr/lib64/python2.7/distutils/log.pyts  %        PKvr]e|% % unixccompiler.pyonu[ {fc@sdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZmZmZmZdd lmZejd krddlZnd e fd YZdS( s9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' s$Id$iN(t StringTypetNoneType(t sysconfig(tnewer(t CCompilertgen_preprocess_optionstgen_lib_options(tDistutilsExecErrort CompileErrortLibErrort LinkError(tlogtdarwint UnixCCompilerc Bs|eZdZid(d6dgd6dgd6dgd6ddgd6dgd6d d gd 6d(d 6Zejd dkrd ged    N(t__name__t __module__t compiler_typeR$t executablesR8R9tsrc_extensionst obj_extensiontstatic_lib_extensiontshared_lib_extensiontdylib_lib_extensiontxcode_stub_lib_extensiontstatic_lib_formattshared_lib_formattdylib_lib_formattxcode_stub_lib_formatt exe_extensionRR7R@RJRYR[R^RcReRz(((s//usr/lib64/python2.7/distutils/unixccompiler.pyR 0sF            6    (t__doc__t __revision__R)R8RmttypesRRt distutilsRtdistutils.dep_utilRtdistutils.ccompilerRRRtdistutils.errorsRRR R R R9R:R (((s//usr/lib64/python2.7/distutils/unixccompiler.pyts$"PKvr]b{++emxccompiler.pycnu[ {fc@sdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZd e fd YZd Zd Zd ZdZdZdS(sdistutils.emxccompiler Provides the EMXCCompiler class, a subclass of UnixCCompiler that handles the EMX port of the GNU C compiler to OS/2. s$Id$iN(tgen_preprocess_optionstgen_lib_options(t UnixCCompiler(t write_file(tDistutilsExecErrort CompileErrortUnknownFileError(tlogt EMXCCompilerc BseZdZdZdZdZdZdZdZdZ ddddZ d Z ddddddddddd Z dd d Zdd ZRS(temxs.objs.libs.dlls%s%ss.ress.exeic Cstj||||t\}}|jd||f|tk rd|jdd|dnt\|_|_|j|j d|j|jf|j ddddd d d d d g|_ dS(Ns%Python's GCC status: %s (details: %s)s<Python's pyconfig.h doesn't seem to support your compiler. s Reason: %s.s<Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s tcompilers5gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wallt compiler_sot linker_exesgcc -Zomf -Zmt -Zcrtdllt linker_sosgcc -Zomf -Zmt -Zcrtdll -Zdlltgcc( Rt__init__tcheck_config_ht debug_printt CONFIG_H_OKtwarnt get_versionst gcc_versiont ld_versiont compiler_typetset_executablest dll_libraries(tselftverbosetdry_runtforcetstatustdetails((s./usr/lib64/python2.7/distutils/emxccompiler.pyR*s"    cCs|dkrHy|jdd|gWqtk rD}t|qXnHy)|j|j||d|g|Wntk r}t|nXdS(Ns.rctrcs-rs-o(tspawnRRR (Rtobjtsrctexttcc_argstextra_postargstpp_optstmsg((s./usr/lib64/python2.7/distutils/emxccompiler.pyt_compileMs  cCstj| pg} tj|p$g}tj|p9g}|j|j|dk r;||jkr;tjj|d}tjjtjj |\}}tjj ||d}dtjjtjj |dddg}x|D]}|j d|qW|j t ||fd||j |n| sQ| j dntj||||||||d| | | | | dS( Nis.defs$LIBRARY %s INITINSTANCE TERMINSTANCEsDATA MULTIPLE NONSHAREDtEXPORTSs "%s"s writing %ss-s(tcopytextendRtNonet EXECUTABLEtostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(Rt target_desctobjectstoutput_filenamet output_dirt librariest library_dirstruntime_library_dirstexport_symbolstdebugt extra_preargsR&t build_tempt target_langttemp_dirtdll_namet dll_extensiontdef_filetcontentstsym((s./usr/lib64/python2.7/distutils/emxccompiler.pyR7[sF         tcCs|dkrd}ng}x|D]}tjjtjj|\}}||jdgkrxtd||fn|rtjj|}n|dkr|jtjj |||j q"|jtjj |||j q"W|S(NRJs.rcs"unknown file type '%s' (from '%s')( R-R/R0R2tnormcasetsrc_extensionsRR3R5R4t res_extensiont obj_extension(Rtsource_filenamest strip_dirR;t obj_namestsrc_nametbaseR$((s./usr/lib64/python2.7/distutils/emxccompiler.pytobject_filenamess"  $ c Csd|}d|}ytjdjd}Wntk rGg}nXxh||D]\}tjj||}tjj||} tjj|r|Stjj| rS| SqSWdS(Ns%s.libs lib%s.libt LIBRARY_PATHt;(R/tenvirontsplittKeyErrorR0R4texistsR-( RtdirstlibR@tshortlibtlonglibtemx_dirstdirt shortlibptlonglibp((s./usr/lib64/python2.7/distutils/emxccompiler.pytfind_library_files    N(t__name__t __module__RRNtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatRMt exe_extensionRR)R-R7RTRc(((s./usr/lib64/python2.7/distutils/emxccompiler.pyRs2  P toksnot okt uncertaincCsddlm}ddl}|jtjddkrAtdfS|j}y.t|}z|j }Wd|j XWn't k r}t d||j ffSX|j|ddkrtd |fStd |fSdS( sCheck if the current Python installation (specifically, pyconfig.h) appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: CONFIG_H_OK all is well, go ahead and compile CONFIG_H_NOTOK doesn't look good CONFIG_H_UNCERTAIN not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". i(t sysconfigNtGCCissys.version mentions 'GCC'scouldn't read '%s': %st__GNUC__s'%s' mentions '__GNUC__'s '%s' does not mention '__GNUC__'(t distutilsRmtstringtfindtsystversionRtget_config_h_filenametopentreadtclosetIOErrortCONFIG_H_UNCERTAINtstrerrortCONFIG_H_NOTOK(RmRqtfntftstexc((s./usr/lib64/python2.7/distutils/emxccompiler.pyRs     c Csddlm}ddlm}ddl}|d}|rtj|dd}z|j}Wd|jX|j d|}|r||j d }qd}nd}d}||fS( sa Try to find out the versions of gcc and ld. If not possible it returns None for it. i(t StrictVersion(tfind_executableNRs -dumpversiontrs(\d+\.\d+\.\d+)i( tdistutils.versionRtdistutils.spawnRtreR/tpopenRwRxtsearchtgroupR-( RRRtgcc_exetoutt out_stringtresultRR((s./usr/lib64/python2.7/distutils/emxccompiler.pyR&s     (t__doc__t __revision__R/RsR+tdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRRpRRRR|RzRR(((s./usr/lib64/python2.7/distutils/emxccompiler.pyts$ 4PKvr]^ spawn.pycnu[ {fc@sdZdZddlZddlZddlmZmZddlmZddl m Z dddd Z d Z dddd Z dddd Zejd krddl mZdadanddddZddZdS(sdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. s$Id$iN(tDistutilsPlatformErrortDistutilsExecError(tDEBUG(tlogiicCst|}tjdkr1t||d|nZtjdkrVt||d|n5tjdkr{t||d|ntdtjdS(sRun another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. cmd[0] is the program to run and cmd[1:] are the rest of its arguments. There is no way to run a program with a name different from that of its executable. If 'search_path' is true (the default), the system's executable search path will be used to find the program; otherwise, cmd[0] must be the exact path to the executable. If 'dry_run' is true, the command will not actually be run. Raise DistutilsExecError if running the program fails in any way; just return on success. tposixtdry_runtnttos2s1don't know how to spawn programs on platform '%s'N(tlisttostnamet _spawn_posixt _spawn_ntt _spawn_os2R(tcmdt search_pathtverboseR((s'/usr/lib64/python2.7/distutils/spawn.pytspawns cCs>x7t|D])\}}d|kr d|||tj}qGntj} | dkry0|dkr~|||n||||WnLtk r} ts|}ntjjd|| jftjd nXts|}ntjjd |tjd nJxGytj| d\} } Wn]tk r} d dl}| j|jkrfqntsu|}ntd || d fnXtj | rts|}ntd |tj!| fqtj"| r tj#| }|dkrdSts |}ntd||fqtj$| r5qqtsD|}ntd|| fqWdS(NRiR"tMACOSX_DEPLOYMENT_TARGETtt.sF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configuresunable to execute %r: %s is(unable to execute %r for unknown reasonsiscommand %r failed: %ss"command %r terminated by signal %ds%command %r failed with exit status %ds1unknown error executing %r: termination status %d(%RRRR texecvptexecvtNonetsystplatformt _cfg_targetR#tget_config_vartsplittintt_cfg_target_splittenvirontgetRtdicttexecvpetexecvetforkRRtstderrtwritetstrerrort_exittwaitpidterrnotEINTRRt WIFSIGNALEDtWTERMSIGt WIFEXITEDt WEXITSTATUSt WIFSTOPPED(RRRRRtexec_fntenvtxt cur_targettmy_msgtpidtetstatusR R<t exit_status((s'/usr/lib64/python2.7/distutils/spawn.pyR ts  ..               cCs|dkr'tjjdtj}n|jtj}tjj|\}}t j dksotj dkr|dkr|d}ntjj |sx9|D]1}tjj ||}tjj |r|SqWdS|SdS(sTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. tPATHtwin32Rs.exeN(R)R R1R2tdefpathR.tpathseptpathtsplitextR*R+R tisfileR(RRPtpathstbasetexttptf((s'/usr/lib64/python2.7/distutils/spawn.pyRs *  (t__doc__t __revision__R*R tdistutils.errorsRRtdistutils.debugRt distutilsRRRR R R+R#R)R,R0R R(((s'/usr/lib64/python2.7/distutils/spawn.pyts     XPKvr]BAUSSmsvc9compiler.pyonu[ {fc@sdZdZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"d%kZ#e#r'd Z$d Z%d Z&dZ'ndZ$dZ%dZ&dZ'idd6dd6dd6Z(dd&dYZ)dd'dYZ*dZ+dZ,dZ-dZ.dd Z/e+Z0e0d!kred"e0nd#e fd$YZ1dS((s distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. s$Id$iN(tDistutilsExecErrortDistutilsPlatformErrort CompileErrortLibErrort LinkError(t CCompilertgen_lib_options(tlog(t get_platformtwin32ii s1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fs.Software\Wow6432Node\Microsoft\VCExpress\%0.1fs5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowss,Software\Wow6432Node\Microsoft\.NETFrameworks%Software\Microsoft\VisualStudio\%0.1fs"Software\Microsoft\VCExpress\%0.1fs)Software\Microsoft\Microsoft SDKs\Windowss Software\Microsoft\.NETFrameworktx86tamd64s win-amd64tia64swin-ia64tRegcBsbeZdZdZeeZdZeeZdZeeZdZeeZRS(s2Helper class to read values from the registry cCsMx:tD]2}|j||}|r||kr||SqWt|dS(N(tHKEYSt read_valuestKeyError(tclstpathtkeytbasetd((s//usr/lib64/python2.7/distutils/msvc9compiler.pyt get_valueDs   cCsyt||}Wntk r'dSXg}d}xItryt||}Wntk rdPnX|j||d7}q7W|S(sReturn list of registry keys.iiN(t RegOpenKeyExtRegErrortNonetTruet RegEnumKeytappend(RRRthandletLtitk((s//usr/lib64/python2.7/distutils/msvc9compiler.pyt read_keysLs    c Csyt||}Wntk r'dSXi}d}xmtryt||\}}}Wntk rmPnX|j}|j|||j|<|d7}q7W|S(s`Return dict of registry keys and values. All names are converted to lowercase. iiN(RRRRt RegEnumValuetlowert convert_mbcs( RRRRRRtnametvaluettype((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR^s    cCsIt|dd}|dk rEy|d}WqEtk rAqEXn|S(Ntdecodetmbcs(tgetattrRt UnicodeError(tstdec((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR$ts  ( t__name__t __module__t__doc__Rt classmethodR!RR$t staticmethod(((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR @s       t MacroExpandercBs,eZdZdZdZdZRS(cCs'i|_t||_|j|dS(N(tmacrostVS_BASEtvsbaset load_macros(tselftversion((s//usr/lib64/python2.7/distutils/msvc9compiler.pyt__init__s  cCs!tj|||jd|s%Unable to find productdir in registrysVS%0.f0COMNTOOLStVCs%s is not a valid directorys Env var %s is not set or invalidsNo productdir founds vcvarsall.batsUnable to find vcvarsall.batN(R5R RRRtVSEXPRESS_BASERtdebugRYRtisdirtenvirontgetR`tpardirtabspathtisfile(R9R6R>ttoolskeyttoolsdirt vcvarsall((s//usr/lib64/python2.7/distutils/msvc9compiler.pytfind_vcvarsalls@           !  c Cst|}td}i}|dkr9tdntjd||tjd||fdtjd tj}z|j \}}|j d krt|j d n|j d }x|j d D]}t j|}d |krqn|j}|j d d\} } | j} | |kr| jtjrW| d } nt| || |dkrd}ng}x|D]}tjj|\}}tjj|d}|tjj|}||jkrtd|n|rtjj|}n||j kr|j tjj |||j q"||j kr|j tjj |||j q"|j tjj |||jq"W|S(NRisDon't know how to compile %s(RRYRtsplitextt splitdrivetisabstsrc_extensionsRtbasenamet_rc_extensionsRR`t res_extensiont_mc_extensionst obj_extension(R8tsource_filenamest strip_dirt output_dirt obj_namestsrc_nameRtext((s//usr/lib64/python2.7/distutils/msvc9compiler.pytobject_filenamess(  c Cs|js|jn|j||||||} | \}} }} } |pRg} | jd|r{| j|jn| j|jxV| D]N}y| |\}}Wntk rqnX|rtj j |}n||j krd|}n||j krd|}nq||j kr|}d|}y)|j|jg| |g|gWqtk r}t|qXqn||jkrqtj j|}tj j|}y|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqtk rj}t|qXqntd||fd |}y-|j|jg| | ||g|Wqtk r}t|qXqW| S( Ns/cs/Tcs/Tps/fos-hs-rs.rcs"Don't know how to compile %s to %ss/Fo(RRt_setup_compileRtextendRRRRYRRmt _c_extensionst_cpp_extensionsRtspawnRRRRtdirnameRRRR`R(R8tsourcesRR4t include_dirsRht extra_preargstextra_postargstdependst compile_infotobjectstpp_optstbuildt compile_optstobjtsrcRt input_optt output_opttmsgth_dirtrc_dirRRtrc_file((s//usr/lib64/python2.7/distutils/msvc9compiler.pytcompilesj         # $$#  c Cs|js|jn|j||\}}|j|d|}|j||r|d|g}|rony|j|jg|Wqtk r}t|qXnt j d|dS(NRs/OUT:sskipping %s (up-to-date)( RRt_fix_object_argstlibrary_filenamet _need_linkRRtRRRRh( R8Rtoutput_libnameRRht target_langtoutput_filenametlib_argsR((s//usr/lib64/python2.7/distutils/msvc9compiler.pytcreate_static_lib)s    cCs|js|jn|j||\}}|j|||}|\}}}|rr|jdt|nt||||}|dk rtj j ||}n|j ||r|t j kr| r|jd}q |jd}n| r|j}n |j}g}x%|pgD]}|jd|q W||||d|g}tj j|d} |dk rtj jtj j|\}}tj j | |j|}|jd|n|j|| || r| |d*n| r |j| n|jtj j|y|j|jg|Wntk ra}t|nX|j||}|dk r|\}}d||f}y |jdd d ||gWqtk r}t|qXqntjd |dS( Ns5I don't know what to do with 'runtime_library_dirs': is/EXPORT:s/OUT:is/IMPLIB:s-outputresource:%s;%ssmt.exes-nologos -manifestsskipping %s (up-to-date)(RRRt _fix_lib_argstwarnRRRRYRR`RRt EXECUTABLERRRRRRRtmanifest_setup_ldargsRtmkpathRRRRtmanifest_get_embed_infoRRh(R8t target_descRRRt librariest library_dirstruntime_library_dirstexport_symbolsRhRRt build_tempRt fixed_argstlib_optstldflagst export_optstsymtld_argstdll_nametdll_extt implib_fileRtmfinfot mffilenametmfidtout_arg((s//usr/lib64/python2.7/distutils/msvc9compiler.pytlinkBsl               cCs:tjj|tjj|d}|jd|dS(Ns .manifests/MANIFESTFILE:(RYRR`RR(R8RRRt temp_manifest((s//usr/lib64/python2.7/distutils/msvc9compiler.pyRs cCsx;|D]/}|jdr|jddd}PqqWdS|tjkrVd}nd}|j|}|dkr{dS||fS(Ns/MANIFESTFILE:t:ii(t startswithRRRRRt_remove_visual_c_ref(R8RRtargRR((s//usr/lib64/python2.7/distutils/msvc9compiler.pyRs   cCsyt|}z|j}Wd|jXtjdtj}tj|d|}d}tj|d|}tjdtj}tj||dkrdSt|d}z|j ||SWd|jXWnt k rnXdS(NsU|)Rs*\s*sI|)tw( topentreadRtreRtDOTALLRMtsearchRtwritetIOError(R8t manifest_filet manifest_ft manifest_buftpattern((s//usr/lib64/python2.7/distutils/msvc9compiler.pyRs.      cCsd|S(Ns /LIBPATH:((R8tdir((s//usr/lib64/python2.7/distutils/msvc9compiler.pytlibrary_dir_optionscCstddS(Ns<don't know how to set runtime library search path for MSVC++(R(R8R ((s//usr/lib64/python2.7/distutils/msvc9compiler.pytruntime_library_dir_optionscCs |j|S(N(R(R8Rt((s//usr/lib64/python2.7/distutils/msvc9compiler.pytlibrary_optionscCs|r|d|g}n |g}xW|D]K}xB|D]:}tjj||j|}tjj|r6|Sq6Wq)WdSdS(Nt_d(RYRR`RtexistsR(R8tdirsRtRht try_namesR R%tlibfile((s//usr/lib64/python2.7/distutils/msvc9compiler.pytfind_library_files    cCsxH|jD]=}tjjtjj||}tjj|r |Sq WxUtjdjdD]=}tjjtjj||}tjj|rb|SqbW|S(sReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. tPathR(RRYRR`RmRnRjRR(R8texeRHtfn((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR s !!N( R.R/R0t compiler_typet executablesRRRRRRRtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR:RRRRRRRRRR RRRR(((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR5sR     Y  V  R  +    I(((2R0t __revision__RYRzRORtdistutils.errorsRRRRRtdistutils.ccompilerRRt distutilsRtdistutils.utilRt_winregt OpenKeyExRtEnumKeyRt EnumValueR"terrorRt HKEY_USERStHKEY_CURRENT_USERtHKEY_LOCAL_MACHINEtHKEY_CLASSES_ROOTRtplatformtmaxsizet NATIVE_WIN64R5RgRGRFRR R3RXR^ReRrRRR(((s//usr/lib64/python2.7/distutils/msvc9compiler.pytsV    (        >.   , )  PKvr]Y*(( version.pyonu[ {fc@sqdZddlZddlZddlmZdd dYZdefdYZdefd YZdS( sProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * __cmp__ compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) iN(t StringTypetVersioncBs#eZdZddZdZRS(sAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes. cCs|r|j|ndS(N(tparse(tselftvstring((s)/usr/lib64/python2.7/distutils/version.pyt__init__&scCsd|jjt|fS(Ns %s ('%s')(t __class__t__name__tstr(R((s)/usr/lib64/python2.7/distutils/version.pyt__repr__*sN(Rt __module__t__doc__tNoneRR (((s)/usr/lib64/python2.7/distutils/version.pyR s t StrictVersioncBs>eZdZejdejZdZdZdZ RS(s?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. s)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|s(td|n|jddddd\}}}}}|rtttj|||g|_n(tttj||gdg|_|r|dtj|f|_ n d|_ dS(Nsinvalid version number '%s'iiiiii( t version_retmatcht ValueErrortgroupttupletmaptstringtatoitversiont prereleaseR (RRRtmajortminortpatchRtprerelease_num((s)/usr/lib64/python2.7/distutils/version.pyRhs*'(cCs|jddkr;tjtt|jdd!d}ntjtt|jd}|jr||jdt|jd}n|S(Niit.i(RRtjoinRRR(RR((s)/usr/lib64/python2.7/distutils/version.pyt__str__{s ( %cCst|trt|}nt|j|j}|dkr|j rW|j rWdS|jrn|j rndS|j r|jrdS|jr|jrt|j|jSn|SdS(Niii(t isinstanceRR tcmpRR(Rtothertcompare((s)/usr/lib64/python2.7/distutils/version.pyt__cmp__s ( RR R tretcompiletVERBOSERRRR#(((s)/usr/lib64/python2.7/distutils/version.pyR ?s #    t LooseVersioncBsSeZdZejdejZddZdZ dZ dZ dZ RS(sVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). s(\d+ | [a-z]+ | \.)cCs|r|j|ndS(N(R(RR((s)/usr/lib64/python2.7/distutils/version.pyRscCs}||_td|jj|}xFtt|D]2}yt||||t( Rtfiltert component_retsplittrangetlentintRR(RRt componentsti((s)/usr/lib64/python2.7/distutils/version.pyR s   cCs|jS(N(R(R((s)/usr/lib64/python2.7/distutils/version.pyRscCsdt|S(NsLooseVersion ('%s')(R(R((s)/usr/lib64/python2.7/distutils/version.pyR scCs1t|trt|}nt|j|jS(N(RRR'R R(RR!((s)/usr/lib64/python2.7/distutils/version.pyR#$sN( RR R R$R%R&R,R RRRR R#(((s)/usr/lib64/python2.7/distutils/version.pyR's    ((R RR$ttypesRRR R'(((s)/usr/lib64/python2.7/distutils/version.pyts PKvr]ϩڜSSmsvc9compiler.pycnu[ {fc@sdZdZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"d%kZ#e#r'd Z$d Z%d Z&dZ'ndZ$dZ%dZ&dZ'idd6dd6dd6Z(dd&dYZ)dd'dYZ*dZ+dZ,dZ-dZ.dd Z/e+Z0e0d!kred"e0nd#e fd$YZ1dS((s distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. s$Id$iN(tDistutilsExecErrortDistutilsPlatformErrort CompileErrortLibErrort LinkError(t CCompilertgen_lib_options(tlog(t get_platformtwin32ii s1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fs.Software\Wow6432Node\Microsoft\VCExpress\%0.1fs5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowss,Software\Wow6432Node\Microsoft\.NETFrameworks%Software\Microsoft\VisualStudio\%0.1fs"Software\Microsoft\VCExpress\%0.1fs)Software\Microsoft\Microsoft SDKs\Windowss Software\Microsoft\.NETFrameworktx86tamd64s win-amd64tia64swin-ia64tRegcBsbeZdZdZeeZdZeeZdZeeZdZeeZRS(s2Helper class to read values from the registry cCsMx:tD]2}|j||}|r||kr||SqWt|dS(N(tHKEYSt read_valuestKeyError(tclstpathtkeytbasetd((s//usr/lib64/python2.7/distutils/msvc9compiler.pyt get_valueDs   cCsyt||}Wntk r'dSXg}d}xItryt||}Wntk rdPnX|j||d7}q7W|S(sReturn list of registry keys.iiN(t RegOpenKeyExtRegErrortNonetTruet RegEnumKeytappend(RRRthandletLtitk((s//usr/lib64/python2.7/distutils/msvc9compiler.pyt read_keysLs    c Csyt||}Wntk r'dSXi}d}xmtryt||\}}}Wntk rmPnX|j}|j|||j|<|d7}q7W|S(s`Return dict of registry keys and values. All names are converted to lowercase. iiN(RRRRt RegEnumValuetlowert convert_mbcs( RRRRRRtnametvaluettype((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR^s    cCsIt|dd}|dk rEy|d}WqEtk rAqEXn|S(Ntdecodetmbcs(tgetattrRt UnicodeError(tstdec((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR$ts  ( t__name__t __module__t__doc__Rt classmethodR!RR$t staticmethod(((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR @s       t MacroExpandercBs,eZdZdZdZdZRS(cCs'i|_t||_|j|dS(N(tmacrostVS_BASEtvsbaset load_macros(tselftversion((s//usr/lib64/python2.7/distutils/msvc9compiler.pyt__init__s  cCs!tj|||jd|s%Unable to find productdir in registrysVS%0.f0COMNTOOLStVCs%s is not a valid directorys Env var %s is not set or invalidsNo productdir founds vcvarsall.batsUnable to find vcvarsall.batN(R5R RRRtVSEXPRESS_BASERtdebugRYRtisdirtenvirontgetR`tpardirtabspathtisfile(R9R6R>ttoolskeyttoolsdirt vcvarsall((s//usr/lib64/python2.7/distutils/msvc9compiler.pytfind_vcvarsalls@           !  c Cst|}td}i}|dkr9tdntjd||tjd||fdtjd tj}z|j \}}|j d krt|j d n|j d }x|j d D]}t j|}d |krqn|j}|j d d\} } | j} | |kr| jtjrW| d } nt| || |dkrd}ng}x|D]}tjj|\}}tjj|d}|tjj|}||jkrtd|n|rtjj|}n||j kr|j tjj |||j q"||j kr|j tjj |||j q"|j tjj |||jq"W|S(NRisDon't know how to compile %s(RRYRtsplitextt splitdrivetisabstsrc_extensionsRtbasenamet_rc_extensionsRR`t res_extensiont_mc_extensionst obj_extension(R8tsource_filenamest strip_dirt output_dirt obj_namestsrc_nameRtext((s//usr/lib64/python2.7/distutils/msvc9compiler.pytobject_filenamess(  c Cs|js|jn|j||||||} | \}} }} } |pRg} | jd|r{| j|jn| j|jxV| D]N}y| |\}}Wntk rqnX|rtj j |}n||j krd|}n||j krd|}nq||j kr|}d|}y)|j|jg| |g|gWqtk r}t|qXqn||jkrqtj j|}tj j|}y|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd|g|gWqtk rj}t|qXqntd||fd |}y-|j|jg| | ||g|Wqtk r}t|qXqW| S( Ns/cs/Tcs/Tps/fos-hs-rs.rcs"Don't know how to compile %s to %ss/Fo(RRt_setup_compileRtextendRRRRYRRmt _c_extensionst_cpp_extensionsRtspawnRRRRtdirnameRRRR`R(R8tsourcesRR4t include_dirsRht extra_preargstextra_postargstdependst compile_infotobjectstpp_optstbuildt compile_optstobjtsrcRt input_optt output_opttmsgth_dirtrc_dirRRtrc_file((s//usr/lib64/python2.7/distutils/msvc9compiler.pytcompilesj         # $$#  c Cs|js|jn|j||\}}|j|d|}|j||r|d|g}|rony|j|jg|Wqtk r}t|qXnt j d|dS(NRs/OUT:sskipping %s (up-to-date)( RRt_fix_object_argstlibrary_filenamet _need_linkRRtRRRRh( R8Rtoutput_libnameRRht target_langtoutput_filenametlib_argsR((s//usr/lib64/python2.7/distutils/msvc9compiler.pytcreate_static_lib)s    cCs|js|jn|j||\}}|j|||}|\}}}|rr|jdt|nt||||}|dk rtj j ||}n|j ||r|t j kr| r|jd}q |jd}n| r|j}n |j}g}x%|pgD]}|jd|q W||||d|g}tj j|d} |dk rtj jtj j|\}}tj j | |j|}|jd|n|j|| || r| |d*n| r |j| n|jtj j|y|j|jg|Wntk ra}t|nX|j||}|dk r|\}}d||f}y |jdd d ||gWqtk r}t|qXqntjd |dS( Ns5I don't know what to do with 'runtime_library_dirs': is/EXPORT:s/OUT:is/IMPLIB:s-outputresource:%s;%ssmt.exes-nologos -manifestsskipping %s (up-to-date)(RRRt _fix_lib_argstwarnRRRRYRR`RRt EXECUTABLERRRRRRRtmanifest_setup_ldargsRtmkpathRRRRtmanifest_get_embed_infoRRh(R8t target_descRRRt librariest library_dirstruntime_library_dirstexport_symbolsRhRRt build_tempRt fixed_argstlib_optstldflagst export_optstsymtld_argstdll_nametdll_extt implib_fileRtmfinfot mffilenametmfidtout_arg((s//usr/lib64/python2.7/distutils/msvc9compiler.pytlinkBsl               cCs:tjj|tjj|d}|jd|dS(Ns .manifests/MANIFESTFILE:(RYRR`RR(R8RRRt temp_manifest((s//usr/lib64/python2.7/distutils/msvc9compiler.pyRs cCsx;|D]/}|jdr|jddd}PqqWdS|tjkrVd}nd}|j|}|dkr{dS||fS(Ns/MANIFESTFILE:t:ii(t startswithRRRRRt_remove_visual_c_ref(R8RRtargRR((s//usr/lib64/python2.7/distutils/msvc9compiler.pyRs   cCsyt|}z|j}Wd|jXtjdtj}tj|d|}d}tj|d|}tjdtj}tj||dkrdSt|d}z|j ||SWd|jXWnt k rnXdS(NsU|)Rs*\s*sI|)tw( topentreadRtreRtDOTALLRMtsearchRtwritetIOError(R8t manifest_filet manifest_ft manifest_buftpattern((s//usr/lib64/python2.7/distutils/msvc9compiler.pyRs.      cCsd|S(Ns /LIBPATH:((R8tdir((s//usr/lib64/python2.7/distutils/msvc9compiler.pytlibrary_dir_optionscCstddS(Ns<don't know how to set runtime library search path for MSVC++(R(R8R ((s//usr/lib64/python2.7/distutils/msvc9compiler.pytruntime_library_dir_optionscCs |j|S(N(R(R8Rt((s//usr/lib64/python2.7/distutils/msvc9compiler.pytlibrary_optionscCs|r|d|g}n |g}xW|D]K}xB|D]:}tjj||j|}tjj|r6|Sq6Wq)WdSdS(Nt_d(RYRR`RtexistsR(R8tdirsRtRht try_namesR R%tlibfile((s//usr/lib64/python2.7/distutils/msvc9compiler.pytfind_library_files    cCsxH|jD]=}tjjtjj||}tjj|r |Sq WxUtjdjdD]=}tjjtjj||}tjj|rb|SqbW|S(sReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. tPathR(RRYRR`RmRnRjRR(R8texeRHtfn((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR s !!N( R.R/R0t compiler_typet executablesRRRRRRRtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR:RRRRRRRRRRRRRR(((s//usr/lib64/python2.7/distutils/msvc9compiler.pyR5sR     Y  V  R  +    I(((2R0t __revision__RYRzRORtdistutils.errorsRRRRRtdistutils.ccompilerRRt distutilsRtdistutils.utilRt_winregt OpenKeyExRtEnumKeyRt EnumValueR"terrorRt HKEY_USERStHKEY_CURRENT_USERtHKEY_LOCAL_MACHINEtHKEY_CLASSES_ROOTRtplatformtmaxsizet NATIVE_WIN64R5RgRGRFRR R3RXR^ReRrRRR(((s//usr/lib64/python2.7/distutils/msvc9compiler.pytsV    (        >.   , )  PKvr]s q ccompiler.pyonu[ {fc@sdZdZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z ddl mZddlmZddlmZdd lmZmZdd lmZdd lmZd fd YZddfddfddfddffZeedZidddfd6dddfd6dddfd6dd d!fd"6d#d$d%fd&6d'd(d)fd6Zd*Zeed+d+d+d,Z d-Z!d.Z"dS(/sdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.s$Id$iN(t CompileErrort LinkErrortUnknownFileErrortDistutilsPlatformErrortDistutilsModuleError(tspawn(t move_file(tmkpath(t newer_group(t split_quotedtexecute(tlog(tcustomize_compilert CCompilerc BseZdZdAZdAZdAZdAZdAZdAZ dAZ dAZ idd6dd6dd6dd6dd6Z dddgZ d d d d Zd Zd Zd ZdZdAdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%dAdAdAdAdAd"Z&dAdAdAd dAdAdAd#Z'd$Z(dAd dAd%Z)d&Z*d'Z+d(Z,dAdAdAdAdAd dAdAdAdAd) Z-dAdAdAdAdAd dAdAdAdAd* Z.dAdAdAdAdAd dAdAdAdAd+ Z/dAdAdAdAd dAdAdAd,Z0d-Z1d.Z2d/Z3dAdAdAdAd0Z4d d1Z5d d2d3Z6d d2d4Z7d d2d5Z8d6d d2d7Z9d8d9Z:d:Z;d;Z<dAd8d<Z=d=Z>d>Z?d?d@Z@RS(BsAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. tcs.csc++s.ccs.cpps.cxxtobjcs.micCs||_||_||_d|_g|_g|_g|_g|_g|_ g|_ x.|j j D]}|j ||j |qjWdS(N(tdry_runtforcetverbosetNonet output_dirtmacrost include_dirst librariest library_dirstruntime_library_dirstobjectst executablestkeystset_executable(tselfRRRtkey((s+/usr/lib64/python2.7/distutils/ccompiler.pyt__init__]s          cKsZxS|jD]E}||jkr>td||jjfn|j|||q WdS(sDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) s$unknown executable '%s' for class %sN(RRt ValueErrort __class__t__name__R(RtargsR((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_executabless cCs<t|tr(t||t|nt|||dS(N(t isinstancet basestringtsetattrR (RRtvalue((s+/usr/lib64/python2.7/distutils/ccompiler.pyRscCs<d}x/|jD]$}|d|kr*|S|d}qWdS(Nii(RR(Rtnametitdefn((s+/usr/lib64/python2.7/distutils/ccompiler.pyt _find_macros cCsx|D]}t|tost|dksct|dkost|dtsc|ddkost|dtstd|ddqqWdS(sEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. iiisinvalid macro definition '%s': s.must be tuple (string,), (string, string), or s(string, None)N(R&ttupletlentstrRt TypeError(Rt definitionsR,((s+/usr/lib64/python2.7/distutils/ccompiler.pyt_check_macro_definitionss # cCsH|j|}|dk r(|j|=n||f}|jj|dS(s_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N(R-RRtappend(RR*R)R+R,((s+/usr/lib64/python2.7/distutils/ccompiler.pyt define_macros    cCsE|j|}|dk r(|j|=n|f}|jj|dS(sUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N(R-RRR4(RR*R+tundefn((s+/usr/lib64/python2.7/distutils/ccompiler.pytundefine_macros    cCs|jj|dS(sAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N(RR4(Rtdir((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_include_dirscCs||_dS(sySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N(R(Rtdirs((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_include_dirsscCs|jj|dS(sAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N(RR4(Rtlibname((s+/usr/lib64/python2.7/distutils/ccompiler.pyt add_libraryscCs||_dS(sSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N(R(Rtlibnames((s+/usr/lib64/python2.7/distutils/ccompiler.pyt set_librariesscCs|jj|dS(s'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N(RR4(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_library_dirscCs||_dS(sSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N(R(RR:((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_library_dirsscCs|jj|dS(slAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N(RR4(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_runtime_library_dirscCs||_dS(sSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N(R(RR:((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_runtime_library_dirs%scCs|jj|dS(sAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N(RR4(Rtobject((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_link_object-scCs||_dS(sSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N(R(RR((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_link_objects5scCs|dkr|j}nt|ts3tdn|dkrK|j}n.t|trp||jpig}n td|dkr|j}n:t|ttfrt||jpg}n td|dkrg}n|j |ddd|}t ||}i} xmt t |D]Y} || } || } t jj| d} |jt jj| | | f| | t|ttfrt||jpg}n tdd|||fS(s;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. s3'libraries' (if supplied) must be a list of stringss6'library_dirs' (if supplied) must be a list of stringss%'runtime_library_dirs' (if supplied) smust be a list of stringsN(RRR&RHR.R1RR(RRRR((s+/usr/lib64/python2.7/distutils/ccompiler.pyt _fix_lib_argss*       cCsE|jr dS|jr.t||dd}nt||}|SdS(sjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. itmissingtnewerN(RRR(RRt output_fileRc((s+/usr/lib64/python2.7/distutils/ccompiler.pyt _need_links   c Cst|ts|g}nd}t|j}x}|D]u}tjj|\}}|jj |}y1|jj |}||kr|}|}nWq7t k rq7Xq7W|S(s|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N( R&RHRR/tlanguage_orderRLRMRNt language_maptgettindexR!( RRRtlangRitsourcetbaseRYtextlangtextindex((s+/usr/lib64/python2.7/distutils/ccompiler.pytdetect_languages     cCsdS(sPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. N((RRkRdRRt extra_preargstextra_postargs((s+/usr/lib64/python2.7/distutils/ccompiler.pyt preprocesss c Cs|j||||||\}} }} } |j| ||} xU| D]M} y| | \}}Wntk ryqInX|j| ||| || qIW| S(sK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. (RZR^tKeyErrort_compile(RRRRRRR[RpRqRSRRURVR]RXRWRY((s+/usr/lib64/python2.7/distutils/ccompiler.pytcompiles7   cCsdS(sCompile 'src' to product 'obj'.N((RRXRWRYR]RqRU((s+/usr/lib64/python2.7/distutils/ccompiler.pyRtCscCsdS(s&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. N((RRtoutput_libnameRR[t target_lang((s+/usr/lib64/python2.7/distutils/ccompiler.pytcreate_static_libJst shared_objecttshared_libraryt executablecCs tdS(suLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N(tNotImplementedError(Rt target_descRtoutput_filenameRRRRtexport_symbolsR[RpRqt build_tempRw((s+/usr/lib64/python2.7/distutils/ccompiler.pytlinkis/c CsG|jtj||j|dd||||||| | | | dS(Ntlib_typetshared(RR tSHARED_LIBRARYtlibrary_filename( RRRvRRRRRR[RpRqRRw((s+/usr/lib64/python2.7/distutils/ccompiler.pytlink_shared_libs  c Cs8|jtj||||||||| | | | dS(N(RR t SHARED_OBJECT( RRR~RRRRRR[RpRqRRw((s+/usr/lib64/python2.7/distutils/ccompiler.pytlink_shared_objects  c CsA|jtj||j|||||d||| d| dS(N(RR t EXECUTABLEtexecutable_filenameR( RRtoutput_prognameRRRRR[RpRqRw((s+/usr/lib64/python2.7/distutils/ccompiler.pytlink_executables cCs tdS(skReturn the compiler option to add 'dir' to the list of directories searched for libraries. N(R|(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytlibrary_dir_optionscCs tdS(ssReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N(R|(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytruntime_library_dir_optionscCs tdS(sReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N(R|(Rtlib((s+/usr/lib64/python2.7/distutils/ccompiler.pytlibrary_optionsc CsEddl}|dkr!g}n|dkr6g}n|dkrKg}n|dkr`g}n|jd|dt\}}tj|d} z7x|D]} | jd| qW| jd|Wd| jXy|j|gd|} Wnt k rt SXy |j | d d |d |Wnt t fk r@t SXtS( sReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. iNs.cttexttws#include "%s" s=int main (int argc, char **argv) { %s(); return 0; } Rsa.outRR(ttempfileRtmkstemptTrueRLtfdopentwritetcloseRuRtFalseRRR1( RtfuncnametincludesRRRRtfdtfnametftinclR((s+/usr/lib64/python2.7/distutils/ccompiler.pyt has_functions8             cCs tdS(sHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N(R|(RR:RR[((s+/usr/lib64/python2.7/distutils/ccompiler.pytfind_library_filestcCs|dkrd}ng}x|D]}tjj|\}}tjj|d}|tjj|}||jkrtd||fn|rtjj|}n|j tjj |||j q"W|S(NRis"unknown file type '%s' (from '%s')( RRLRMRNt splitdrivetisabstsrc_extensionsRtbasenameR4tjoint obj_extension(Rtsource_filenamesRGRt obj_namestsrc_nameRlRY((s+/usr/lib64/python2.7/distutils/ccompiler.pyRI.s   cCs5|rtjj|}ntjj|||jS(N(RLRMRRtshared_lib_extension(RRRGR((s+/usr/lib64/python2.7/distutils/ccompiler.pytshared_object_filename?scCs;|rtjj|}ntjj|||jp6dS(NR(RLRMRRt exe_extension(RRRGR((s+/usr/lib64/python2.7/distutils/ccompiler.pyREststaticc Cs|d krtdnt||d}t||d}tjj|\}}|||f} |rud}ntjj||| S( NRRtdylibt xcode_stubs@'lib_type' must be "static", "shared", "dylib", or "xcode_stub".t _lib_formatt_lib_extensionR(RRRR(R!tgetattrRLRMtsplitR( RR<RRGRtfmtRYR8Rltfilename((s+/usr/lib64/python2.7/distutils/ccompiler.pyRKs   icCstj|dS(N(R R[(Rtmsgtlevel((s+/usr/lib64/python2.7/distutils/ccompiler.pytannounce^scCs"ddlm}|r|GHndS(Ni(tDEBUG(tdistutils.debugR(RRR((s+/usr/lib64/python2.7/distutils/ccompiler.pyt debug_printascCstjjd|dS(Ns warning: %s (tsyststderrR(RR((s+/usr/lib64/python2.7/distutils/ccompiler.pytwarnfscCst||||jdS(N(R R(RtfuncR$RR((s+/usr/lib64/python2.7/distutils/ccompiler.pyR iscCst|d|jdS(NR(RR(Rtcmd((s+/usr/lib64/python2.7/distutils/ccompiler.pyRlscCst||d|jS(NR(RR(RRWtdst((s+/usr/lib64/python2.7/distutils/ccompiler.pyRosicCst||d|jdS(NR(RR(RR*tmode((s+/usr/lib64/python2.7/distutils/ccompiler.pyRrsN(AR#t __module__t__doc__Rt compiler_typeRRtstatic_lib_extensionRtstatic_lib_formattshared_lib_formatRRgRfR R%RR-R3R5R7R9R;R=R?R@RARBRCRERFRZR^R_R`RaReRoRrRuRtRxRRRRRRRRRRRRRIRRRRRRR RRR(((s+/usr/lib64/python2.7/distutils/ccompiler.pyR s    $ !              ,  #   C   1       , +     scygwin.*tunixtos2emxtemxtposixtnttmsvccCs|dkrtj}n|dkr0tj}nxHtD]@\}}tj||dk sstj||dk r7|Sq7WdS(sr Determine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. RN(RRLR*Rtplatformt_default_compilerstretmatch(tosnameRtpatterntcompiler((s+/usr/lib64/python2.7/distutils/ccompiler.pytget_default_compilers    t unixccompilert UnixCCompilersstandard UNIX-style compilert msvccompilert MSVCCompilersMicrosoft Visual C++tcygwinccompilertCygwinCCompilers'Cygwin port of GNU C Compiler for Win32tcygwintMingw32CCompilers(Mingw32 port of GNU C Compiler for Win32tmingw32t bcppcompilert BCPPCompilersBorland C++ Compilertbcppt emxccompilert EMXCCompilers#EMX port of GNU C Compiler for OS/2cCsvddlm}g}x6tjD](}|jd|dt|dfq#W|j||}|jddS(syPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). i(t FancyGetopts compiler=isList of available compilers:N(tdistutils.fancy_getoptRtcompiler_classRR4Rtsortt print_help(Rt compilersRtpretty_printer((s+/usr/lib64/python2.7/distutils/ccompiler.pytshow_compilerss  ic Cs|dkrtj}ny2|dkr6t|}nt|\}}}WnAtk rd|}|dk r|d|}nt|nXy5d|}t|tj |} t | |} WnEt k rt d|n(tk r t dd||fnX| d||S(s[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. s5don't know how to compile C/C++ code on platform '%s's with '%s' compilers distutils.s4can't compile C/C++ code: unable to load module '%s's4can't compile C/C++ code: unable to find class '%s' sin module '%s'N( RRLR*RRRsRt __import__Rtmodulestvarst ImportErrorR( tplatRRRRt module_namet class_nametlong_descriptionRtmoduletklass((s+/usr/lib64/python2.7/distutils/ccompiler.pyt new_compilers2             cCsg}x|D]}t|toAdt|ko?dknsXtdd|nt|dkr|jd|dq t|dkr |dd kr|jd|dq|jd|q q Wx|D]}|jd |qW|S( sGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. iisbad macro definition '%s': s5each element of 'macros' list must be a 1- or 2-tuples-U%sis-D%ss-D%s=%ss-I%sN(R&R.R/R1R4R(RRRUtmacroR8((s+/usr/lib64/python2.7/distutils/ccompiler.pyRJs" "  c Cs g}x$|D]}|j|j|q WxI|D]A}|j|}t|trh|j|q4|j|q4Wx|D]}tjj|\}} |dkr|j |g| } | dk r|j| q|j d|q|j|j |qW|S(sgGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). Rs6no library file corresponding to '%s' found (skipping)N( R4RRR&RHtextendRLRMRRRRR( RRRRtlib_optsR8toptRtlib_dirtlib_nametlib_file((s+/usr/lib64/python2.7/distutils/ccompiler.pytgen_lib_options"s$        (#Rt __revision__RRLRtdistutils.errorsRRRRRtdistutils.spawnRtdistutils.file_utilRtdistutils.dir_utilRtdistutils.dep_utilRtdistutils.utilR R t distutilsR tdistutils.sysconfigR R RRRRRRRJR(((s+/usr/lib64/python2.7/distutils/ccompiler.pytsJ   (o           - 1PKvr])ca&a&cygwinccompiler.pyonu[ {fc@sdZdZddlZddlZddlZddlmZmZddlm Z ddl m Z ddl m Z mZmZddlmZd Zd e fd YZd efd YZdZdZdZdZdZdZdS(sdistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). s$Id$iN(tgen_preprocess_optionstgen_lib_options(t UnixCCompiler(t write_file(tDistutilsExecErrort CompileErrortUnknownFileError(tlogcCstjjd}|dkrtj|d|d!}|dkrIdgS|dkr\dgS|d krod gS|d krd gStd |ndS(saInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. sMSC v.iii t1300tmsvcr70t1310tmsvcr71t1400tmsvcr80t1500tmsvcr90sUnknown MS Compiler version %s N(tsystversiontfindt ValueError(tmsc_postmsc_ver((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyt get_msvcr;s     tCygwinCCompilerc BseZdZdZdZdZdZdZdZddddZ d Z d d d d d dd d d d d Z dd d Z RS(tcygwins.os.as.dllslib%s%ss%s%ss.exeic CsStj||||t\}}|jd||f|tk r\|jd|nt\|_|_|_ |j|j d|j|j|j f|jdkrd|_ n d|_ |jdkrd}nd }|j d d d d dddddd|j |f|jdkrCdg|_ |jdn t|_ dS(Ns%Python's GCC status: %s (details: %s)sPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.s: gcc %s, ld %s, dllwrap %s s2.10.90tgcctdllwraps2.13s-shareds -mdll -statictcompilersgcc -mcygwin -O -Wallt compiler_sosgcc -mcygwin -mdll -O -Wallt compiler_cxxsg++ -mcygwin -O -Wallt linker_exes gcc -mcygwint linker_sos%s -mcygwin %ss2.91.57tmsvcrts,Consider upgrading to a newer version of gcc(Rt__init__tcheck_config_ht debug_printt CONFIG_H_OKtwarnt get_versionst gcc_versiont ld_versiontdllwrap_versiont compiler_typet linker_dlltset_executablest dll_librariesR(tselftverbosetdry_runtforcetstatustdetailst shared_option((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR!\s<        cCs|dks|dkrZy |jdd|d|gWqtk rV}t|qXnHy)|j|j||d|g|Wntk r}t|nXdS(Ns.rcs.restwindress-is-o(tspawnRRR(R.tobjtsrctexttcc_argstextra_postargstpp_optstmsg((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyt_compiles  cCstj| pg} tj|p$g}tj|p9g}|j|j|dk r||jksy|jdkrtjj|d}tjj tjj |\}}tjj ||d}tjj |d|d}dtjj |dg}x|D]}|j |q W|j t||fd||jd krx| jd |g| jd |gq|j |n| s| j d ntj||||||||d| | | | | dS( NRis.deftlibs.as LIBRARY %stEXPORTSs writing %sRs --output-libs--defs-s(tcopytextendR-tNonet EXECUTABLER+tostpathtdirnametsplitexttbasenametjointappendtexecuteRRtlink(R.t target_desctobjectstoutput_filenamet output_dirt librariest library_dirstruntime_library_dirstexport_symbolstdebugt extra_preargsR;t build_tempt target_langttemp_dirtdll_namet dll_extensiontdef_filetlib_filetcontentstsym((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRMsJ        tcCs|dkrd}ng}x|D]}tjjtjj|\}}||jddgkr{td||fn|rtjj|}n|dks|dkr|jtjj ||||j q"|jtjj |||j q"W|S(NRas.rcs.ress"unknown file type '%s' (from '%s')( RCRERFRHtnormcasetsrc_extensionsRRIRKRJt obj_extension(R.tsource_filenamest strip_dirRQt obj_namestsrc_nametbaseR9((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pytobject_filenames s"  $N(t__name__t __module__R*Rdtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR!R>RCRMRj(((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRRs*>  XtMingw32CCompilercBs eZdZddddZRS(tmingw32icCstj|||||jdkr.d}nd}|jdkrLd}nd}|jdksjtrsd}nd}|jd d |d d |d d|dd|dd|j|||fg|_t|_dS(Ns2.13s-shareds -mdll -statics2.91.57s--entry _DllMain@12Rat4s -mno-cygwinRsgcc%s -O -WallRsgcc%s -mdll -O -WallRsg++%s -O -WallRsgcc%sRs %s%s %s %s( RR!R(R't is_cygwingccR,R+R-R(R.R/R0R1R4t entry_pointt no_cygwin((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR!-s&        (RkRlR*R!(((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRr)stoksnot okt uncertaincCsddlm}ddl}|jtjddkrAtdfS|j}y.t|}z|j }Wd|j XWn't k r}t d||j ffSX|j|ddkrtd |fStd |fSdS( sCheck if the current Python installation (specifically, pyconfig.h) appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: CONFIG_H_OK all is well, go ahead and compile CONFIG_H_NOTOK doesn't look good CONFIG_H_UNCERTAIN not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". i(t sysconfigNtGCCissys.version mentions 'GCC'scouldn't read '%s': %st__GNUC__s'%s' mentions '__GNUC__'s '%s' does not mention '__GNUC__'(t distutilsRztstringRRRR$tget_config_h_filenametopentreadtclosetIOErrortCONFIG_H_UNCERTAINtstrerrortCONFIG_H_NOTOK(RzR~tfntftstexc((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR"es     c Csddlm}ddlm}ddl}|d}|rtj|dd}|j}|j|j d|}|r||j d }qd}nd}|d }|r tj|d d}|j}|j|j d|}|r||j d } q&d} nd} |d } | rtj| d d}|j}|j|j d|}|r||j d } qd} nd} || | fS(sj Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. i(t LooseVersion(tfind_executableNRs -dumpversiontrs(\d+\.\d+(\.\d+)*)itlds -vRs --versions (\d+\.\d+(\.\d+)*)( tdistutils.versionRtdistutils.spawnRtreREtpopenRRtsearchtgroupRC( RRRtgcc_exetoutt out_stringtresultR'tld_exeR(t dllwrap_exeR)((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyR&sD             cCs;tjdd}|j}|j|jjdS(s>Try to determine if the gcc that would be used is from cygwin.sgcc -dumpmachineRR(RERRRtstriptendswith(RR((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyRus  (t__doc__t __revision__RERRAtdistutils.ccompilerRRtdistutils.unixccompilerRtdistutils.file_utilRtdistutils.errorsRRRR}RRRRrR$RRR"R&Ru(((s1/usr/lib64/python2.7/distutils/cygwinccompiler.pyts +$ 8 5 .PKvr]!Q config.pycnu[ {fc@sRdZddlZddlmZddlmZdZdefdYZdS(sdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. iN(t ConfigParser(tCommandsE[distutils] index-servers = pypi [pypi] username:%s password:%s t PyPIRCCommandcBsueZdZdZdZd Zd ZdddefdgZdgZ dZ d Z d Z d Z d ZRS(s;Base command that knows how to handle the .pypirc file shttps://upload.pypi.org/legacy/tpypis repository=trsurl of repository [default: %s]s show-responses&display full response text from servercCstjjtjjddS(sReturns rc file path.t~s.pypirc(tostpathtjoint expanduser(tself((s(/usr/lib64/python2.7/distutils/config.pyt _get_rc_file&scCsd|j}tjtj|tjtjBdd}z|jt||fWd|jXdS(sCreates a default .pypirc file.itwN( R RtfdopentopentO_CREATtO_WRONLYtwritetDEFAULT_PYPIRCtclose(R tusernametpasswordtrctf((s(/usr/lib64/python2.7/distutils/config.pyt _store_pypirc*s  +c Cs3|j}tjj|r/|jd||jp>|j}t}|j||j }d|kr|j dd}g|j dD]$}|j dkr|j ^q}|gkrd|krdg}qiSnxC|D]}i|d6}|j |d|ds   PKvr] `ppcore.pyonu[ {fc@sdZdZddlZddlZddlmZddlmZmZm Z m Z ddl m Z ddl mZddlmZdd lmZd Zd Zdadad2Zd3Zd/Zdd0d1ZdS(4s#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. s$Id$iN(tDEBUG(tDistutilsSetupErrortDistutilsArgErrortDistutilsErrortCCompilerError(t Distribution(tCommand(t PyPIRCCommand(t Extensionsusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCs!tjj|}ti|d6S(Ntscript(tostpathtbasenametUSAGE(t script_nameR ((s&/usr/lib64/python2.7/distutils/core.pyt gen_usage#st distclassRt script_argstoptionstnametversiontauthort author_emailt maintainertmaintainer_emailturltlicenset descriptiontlong_descriptiontkeywordst platformst classifierst download_urltrequirestprovidest obsoletestsourcest include_dirst define_macrost undef_macrost library_dirst librariestruntime_library_dirst extra_objectstextra_compile_argstextra_link_argst swig_optstexport_symbolstdependstlanguagecKs5|jd}|r|d=nt}d|krQtjjtjd|ds4  "   oPKvr]Ucڍ errors.pycnu[ {fc@sdZdZdefdYZdefdYZdefdYZdefd YZd efd YZd efd YZdefdYZ defdYZ defdYZ defdYZ defdYZ defdYZdefdYZdefdYZdefdYZd efd!YZd"efd#YZd$efd%YZd&efd'YZd(S()sdistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".s$Id$tDistutilsErrorcBseZdZRS(sThe root of all Distutils evil.(t__name__t __module__t__doc__(((s(/usr/lib64/python2.7/distutils/errors.pyR stDistutilsModuleErrorcBseZdZRS(sUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsClassErrorcBseZdZRS(sSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsGetoptErrorcBseZdZRS(s7The option table provided to 'fancy_getopt()' is bogus.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsArgErrorcBseZdZRS(saRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsFileErrorcBseZdZRS(sAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before IOError or OSError could be raised.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR!stDistutilsOptionErrorcBseZdZRS(sSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR &stDistutilsSetupErrorcBseZdZRS(sqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR .stDistutilsPlatformErrorcBseZdZRS(sWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR 2stDistutilsExecErrorcBseZdZRS(s`Any problems executing an external program (such as the C compiler, when compiling C files).(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR 7stDistutilsInternalErrorcBseZdZRS(soInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR ;stDistutilsTemplateErrorcBseZdZRS(s%Syntax error in a file list template.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR?stDistutilsByteCompileErrorcBseZdZRS(sByte compile error.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRBstCCompilerErrorcBseZdZRS(s#Some compile/link operation failed.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRFstPreprocessErrorcBseZdZRS(s.Failure to preprocess one or more C/C++ files.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRIst CompileErrorcBseZdZRS(s2Failure to compile one or more C/C++ source files.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRLstLibErrorcBseZdZRS(sKFailure to create a static library from one or more C/C++ object files.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyROst LinkErrorcBseZdZRS(s]Failure to link one or more C/C++ object files into an executable or shared library file.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRSstUnknownFileErrorcBseZdZRS(s(Attempt to process an unknown file type.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRWsN(Rt __revision__t ExceptionRRRRRRR R R R R RRRRRRRR(((s(/usr/lib64/python2.7/distutils/errors.pyt s(PKvr]5㑂 dir_util.pyonu[ {fc@sdZdZddlZddlZddlmZmZddlmZia dddd Z dddd Z ddddddd Z d Z ddd ZdZdS(sWdistutils.dir_util Utility functions for manipulating directories and directory trees.s$Id$iN(tDistutilsFileErrortDistutilsInternalError(tlogiiic Cst|ts"td|fntjj|}g}tjj|sX|dkr\|Stjtjj |r{|Stjj |\}}|g}xK|r|rtjj| rtjj |\}}|j d|qWx|D]}tjj ||}tjj |} tj| r3qn|dkrRt jd|n|sytj||WnWtk r} | jtjkotjj|std|| jdfqnX|j|ndt|  "  $!c Csi}x3|D]+}d|tjj|tjj|tjk r\} } |rwg} qtd|| fnX|st|d|ng} x1| D])} tjj || }tjj || }| j drqn|rktjj |rktj |}|dkrBt jd||n|s[tj||n| j|qtjj|r| jt||||||d|d |q||||||d|d || j|qW| S( sCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. i(t copy_files&cannot copy tree '%s': not a directoryserror listing files in '%s': %sRs.nfsislinking %s -> %sR(tdistutils.file_utilR-RRR RtlistdirterrorR"Rt startswithtislinktreadlinkRRtsymlinkRtextendt copy_tree(tsrctdstt preserve_modetpreserve_timestpreserve_symlinkstupdateRRR-tnamesRterrstrtoutputstntsrc_nametdst_namet link_dest((s*/usr/lib64/python2.7/distutils/dir_util.pyR6gsH       cCsxwtj|D]f}tjj||}tjj|r`tjj| r`t||q|jtj|fqW|jtj |fdS(sHelper for remove_tree().N( RR/RRR R2t_build_cmdtupleRtremovetrmdir(Rt cmdtuplestftreal_f((s*/usr/lib64/python2.7/distutils/dir_util.pyRDs %cCs|dkrtjd|n|r)dSg}t||x|D]w}yB|d|dtjj|d}|tkrt|=nWqCttfk r}tj d||qCXqCWdS(sRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). is'removing '%s' (and everything under it)Niserror removing %s: %s( RRRDRRR R tIOErrorRtwarn(t directoryRRRGtcmdR R!((s*/usr/lib64/python2.7/distutils/dir_util.pyt remove_trees    cCsCtjj|\}}|dd!tjkr?||d}n|S(sTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). ii(RRt splitdrivetsep(Rtdrive((s*/usr/lib64/python2.7/distutils/dir_util.pytensure_relatives(t__doc__t __revision__RRtdistutils.errorsRRt distutilsRR R"R,R6RDRNRR(((s*/usr/lib64/python2.7/distutils/dir_util.pyts  ?D PKvr]#˱archive_util.pycnu[ {fc@sdZdZddlZddlmZddlZddlmZddlm Z ddl m Z ddl m Z ydd lmZWnek rdZnXydd lmZWnek rdZnXd Zd Zd dddddZdddZiedgdfd6ed gdfd6ed!gdfd6ed"gdfd6egdfd6ZdZdddddddZdS(#sodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).s$Id$iN(twarn(tDistutilsExecError(tspawn(tmkpath(tlog(tgetpwnam(tgetgrnamcCs^tdks|dkrdSyt|}Wntk rEd}nX|dk rZ|dSdS(s"Returns a gid, given a group name.iN(RtNonetKeyError(tnametresult((s./usr/lib64/python2.7/distutils/archive_util.pyt_get_gids   cCs^tdks|dkrdSyt|}Wntk rEd}nX|dk rZ|dSdS(s"Returns an uid, given a user name.iN(RRR(R R ((s./usr/lib64/python2.7/distutils/archive_util.pyt_get_uid's   tgzipicsidd6dd6dd6dd6}idd6dd6d d6}|dk rg||jkrgtd n|d } |dkr| |j|d7} nttjj| d |d dl} t j dt t fd} |sC| j | d||} z| j|d| Wd| jXn|dkrtdt| ||} tjdkr|| | g}n|d| g}t|d || S| S(s-Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "compress", "bzip2", or None. (compress will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2" or ".Z"). Returns the output filename. tgzR tbz2tbzip2ttcompresss.gzs.bz2s.ZsEbad value for 'compress': must be None, 'gzip', 'bzip2' or 'compress's.tartdry_runiNsCreating tar archivecsFdk r!|_|_ndk rB|_|_n|S(N(Rtgidtgnametuidtuname(ttarinfo(RtgrouptownerR(s./usr/lib64/python2.7/distutils/archive_util.pyt _set_uid_gid[s      sw|%stfilters'compress' will be deprecated.twin32s-f(Rtkeyst ValueErrortgetRtostpathtdirnamettarfileRtinfoR R topentaddtcloseRtPendingDeprecationWarningtsystplatformR(t base_nametbase_dirRtverboseRRRttar_compressiont compress_extt archive_nameR$Rttartcompressed_nametcmd((RRRRs./usr/lib64/python2.7/distutils/archive_util.pyt make_tarball3s8"          c Cs-yddl}Wntk r)d}nX|d}ttjj|d||dkr|rkd}nd}y td|||gd|Wq)tk rtd|q)Xntt j d |||s)|j |d d |j }|tj kr<tjjtjj|d }|j||t j d |nxtj|D]\} } } xR| D]J} tjjtjj| | d }|j||t j d |qbWxe| D]]} tjjtjj| | }tjj|r|j||t j d |qqWqLW|jn|S(svCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. iNs.zipRs-rs-rqtzipskunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilitys#creating '%s' and adding '%s' to ittwt compressionRs adding '%s'(tzipfilet ImportErrorRRR!R"R#RRRR%tZipFilet ZIP_DEFLATEDtcurdirtnormpathtjointwritetwalktisfileR(( R,R-R.RR9t zip_filenamet zipoptionsR6R"tdirpathtdirnamest filenamesR ((s./usr/lib64/python2.7/distutils/archive_util.pyt make_zipfileysL           ! $ ! Rsgzip'ed tar-filetgztarRsbzip2'ed tar-filetbztarscompressed tar filetztarsuncompressed tar fileR2sZIP fileR6cCs%x|D]}|tkr|SqWdS(sqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N(tARCHIVE_FORMATSR(tformatstformat((s./usr/lib64/python2.7/distutils/archive_util.pytcheck_archive_formatss  cCsCtj}|d k rStjd|tjj|}|sStj|qSn|d krktj}ni|d6} yt |} Wnt k rt d|nX| d} x"| dD]\} } | | | tjd |tj|nX|S( sCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "ztar", or "gztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. schanging into '%s'Rsunknown archive format '%s'iiR6RRNschanging back to '%s'( R!tgetcwdRRtdebugR"tabspathtchdirR=RLRR(R,RNtroot_dirR-R.RRRtsave_cwdtkwargst format_infotfunctargtvaltfilename((s./usr/lib64/python2.7/distutils/archive_util.pyt make_archives2           (RR (RR(RR(RN(t__doc__t __revision__R!twarningsRR*tdistutils.errorsRtdistutils.spawnRtdistutils.dir_utilRt distutilsRtpwdRR:RtgrpRR R R5RHRLROR\(((s./usr/lib64/python2.7/distutils/archive_util.pyts<       E> PKvr]|dkrd}ng}x|D]}tjj|\}}tjj|d}|tjj|}||jkrtd|n|rtjj|}n||j kr|j tjj |||j q"||j kr|j tjj |||j q"|j tjj |||jq"W|S(NRwisDon't know how to compile %s(R RNR*tsplitextt splitdrivetisabstsrc_extensionsRtbasenamet_rc_extensionsR Rnt res_extensiont_mc_extensionst obj_extension(R%tsource_filenamest strip_dirt output_dirt obj_namestsrc_nameR text((s./usr/lib64/python2.7/distutils/msvccompiler.pytobject_filenames<s(  c Cs|js|jn|j||||||\}} }} } |pLg} | jd|ru| j|jn| j|jxM| D]E} y| | \}}Wntk rqnX|rtj j |}n||j krd|}n||j krd|}nk||j kr}|}d| }y)|j|jg| |g|gWqtk rv}t|qXqn||jkretj j|}tj j| }y|j|jgd|d|g|gtj jtj j|\}}tj j||d}|j|jgd| g|gWqtk r^}t|qXqntd|| fd | }y-|j|jg| | ||g|Wqtk r}t|qXqW| S( Ns/cs/Tcs/Tps/fos-hs-rs.rcs"Don't know how to compile %s to %ss/Fo(R\Rvt_setup_compileR textendRqRpR3RNR*tabspatht _c_extensionst_cpp_extensionsR}tspawnRjRRRtdirnameRkRxR|RnRh(R%tsourcesRR#t include_dirstdebugt extra_preargstextra_postargstdependstobjectstpp_optstbuildt compile_optstobjtsrcRt input_optt output_opttmsgth_dirtrc_dirR t_trc_file((s./usr/lib64/python2.7/distutils/msvccompiler.pytcompile]sj        # $$#   c Cs|js|jn|j||\}}|j|d|}|j||r|d|g}|rony|j|jg|Wqtk r}t|qXnt j d|dS(NRs/OUT:sskipping %s (up-to-date)( R\Rvt_fix_object_argstlibrary_filenamet _need_linkRRbRRRR( R%Rtoutput_libnameRRt target_langtoutput_filenametlib_argsR((s./usr/lib64/python2.7/distutils/msvccompiler.pytcreate_static_libs cCsW|js|jn|j||\}}|j|||\}}}|rl|jdt|nt||||}|dk rtj j ||}n|j ||rC|t j kr| r|jd}q|jd}n| r|j}n |j}g}x%|pgD]}|jd|qW||||d|g}|dk rtj jtj j|\}}tj j tj j|d|j|}|jd|n| r| |d*n| r|j| n|jtj j|y|j|jg|WqStk r?}t|qSXntjd|dS(Ns5I don't know what to do with 'runtime_library_dirs': is/EXPORT:s/OUT:is/IMPLIB:sskipping %s (up-to-date)(R\RvRt _fix_lib_argstwarntstrRR RNR*RnRRt EXECUTABLERsRrR RxR|RRRtmkpathRRiRRRR(R%t target_descRRRt librariest library_dirstruntime_library_dirstexport_symbolsRRRt build_tempRtlib_optstldflagst export_optstsymtld_argstdll_nametdll_extt implib_fileR((s./usr/lib64/python2.7/distutils/msvccompiler.pytlinksR          cCsd|S(Ns /LIBPATH:((R%tdir((s./usr/lib64/python2.7/distutils/msvccompiler.pytlibrary_dir_option$scCs tddS(Ns<don't know how to set runtime library search path for MSVC++(R(R%R((s./usr/lib64/python2.7/distutils/msvccompiler.pytruntime_library_dir_option'scCs |j|S(N(R(R%Rb((s./usr/lib64/python2.7/distutils/msvccompiler.pytlibrary_option+scCs|r|d|g}n |g}xW|D]K}xB|D]:}tjj||j|}tjj|r6|Sq6Wq)WdSdS(Nt_d(RNR*RnRtexistsR (R%tdirsRbRt try_namesRRtlibfile((s./usr/lib64/python2.7/distutils/msvccompiler.pytfind_library_file/s    cCsxH|jD]=}tjjtjj||}tjj|r |Sq WxXtjtjddD]=}tjjtjj||}tjj|re|SqeW|S(sReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. tPathRd( ReRNR*RnRtisfileR9RCRf(R%texeR6tfn((s./usr/lib64/python2.7/distutils/msvccompiler.pyRgCs ! !tx86cCsts gS|d}|jdkr<d|j|jf}nd|j|f}xitD]a}t||}|rV|jdkrtj|jj||dStj||dSqVqVW|jdkr x>tD]3}t|d|jd k r|j dPqqWngS( sGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. s dirsis6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriess?%s\6.0\Build System\Components\Platforms\Win32 (%s)\DirectoriesRdis%s\6.0sIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.N( t _can_read_regRVRXR(RR9RCRYR<R R(R%R*tplatformRR R((s./usr/lib64/python2.7/distutils/msvccompiler.pyRlZs(      cCsS|dkr|jd}n|j|}|rOtj|dtj|t__doc__t compiler_typet executablesRRR}RR{R~Rtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR'RvRR RRRRRRRRgRlRm(((s./usr/lib64/python2.7/distutils/msvccompiler.pyRTsP     B  Z  G      %g @s3Importing new compiler from distutils.msvc9compiler(RT(R"(/Rt __revision__RARNR9tdistutils.errorsRRRRRtdistutils.ccompilerRRt distutilsRRt_winregthkey_modt OpenKeyExRtEnumKeyR t EnumValueRterrorR t ImportErrortwin32apitwin32continfot HKEY_USERStHKEY_CURRENT_USERtHKEY_LOCAL_MACHINEtHKEY_CLASSES_ROOTR(RRRR"RIRMRSRTRtOldMSVCCompilertdistutils.msvc9compiler(((s./usr/lib64/python2.7/distutils/msvccompiler.pyts`   (                 .   PKvr]k..emxccompiler.pynu["""distutils.emxccompiler Provides the EMXCCompiler class, a subclass of UnixCCompiler that handles the EMX port of the GNU C compiler to OS/2. """ # issues: # # * OS/2 insists that DLLs can have names no longer than 8 characters # We put export_symbols in a def-file, as though the DLL can have # an arbitrary length name, but truncate the output filename. # # * only use OMF objects and use LINK386 as the linker (-Zomf) # # * always build for multithreading (-Zmt) as the accompanying OS/2 port # of Python is only distributed with threads enabled. # # tested configurations: # # * EMX gcc 2.81/EMX 0.9d fix03 __revision__ = "$Id$" import os,sys,copy from distutils.ccompiler import gen_preprocess_options, gen_lib_options from distutils.unixccompiler import UnixCCompiler from distutils.file_util import write_file from distutils.errors import DistutilsExecError, CompileError, UnknownFileError from distutils import log class EMXCCompiler (UnixCCompiler): compiler_type = 'emx' obj_extension = ".obj" static_lib_extension = ".lib" shared_lib_extension = ".dll" static_lib_format = "%s%s" shared_lib_format = "%s%s" res_extension = ".res" # compiled resource file exe_extension = ".exe" def __init__ (self, verbose=0, dry_run=0, force=0): UnixCCompiler.__init__ (self, verbose, dry_run, force) (status, details) = check_config_h() self.debug_print("Python's GCC status: %s (details: %s)" % (status, details)) if status is not CONFIG_H_OK: self.warn( "Python's pyconfig.h doesn't seem to support your compiler. " + ("Reason: %s." % details) + "Compiling may fail because of undefined preprocessor macros.") (self.gcc_version, self.ld_version) = \ get_versions() self.debug_print(self.compiler_type + ": gcc %s, ld %s\n" % (self.gcc_version, self.ld_version) ) # Hard-code GCC because that's what this is all about. # XXX optimization, warnings etc. should be customizable. self.set_executables(compiler='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', compiler_so='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', linker_exe='gcc -Zomf -Zmt -Zcrtdll', linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll') # want the gcc library statically linked (so that we don't have # to distribute a version dependent on the compiler we have) self.dll_libraries=["gcc"] # __init__ () def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): if ext == '.rc': # gcc requires '.rc' compiled to binary ('.res') files !!! try: self.spawn(["rc", "-r", src]) except DistutilsExecError, msg: raise CompileError, msg else: # for other files use the C-compiler try: self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + extra_postargs) except DistutilsExecError, msg: raise CompileError, msg def link (self, target_desc, objects, output_filename, output_dir=None, libraries=None, library_dirs=None, runtime_library_dirs=None, export_symbols=None, debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, target_lang=None): # use separate copies, so we can modify the lists extra_preargs = copy.copy(extra_preargs or []) libraries = copy.copy(libraries or []) objects = copy.copy(objects or []) # Additional libraries libraries.extend(self.dll_libraries) # handle export symbols by creating a def-file # with executables this only works with gcc/ld as linker if ((export_symbols is not None) and (target_desc != self.EXECUTABLE)): # (The linker doesn't do anything if output is up-to-date. # So it would probably better to check if we really need this, # but for this we had to insert some unchanged parts of # UnixCCompiler, and this is not what we want.) # we want to put some files in the same directory as the # object files are, build_temp doesn't help much # where are the object files temp_dir = os.path.dirname(objects[0]) # name of dll to give the helper files the same base name (dll_name, dll_extension) = os.path.splitext( os.path.basename(output_filename)) # generate the filenames for these files def_file = os.path.join(temp_dir, dll_name + ".def") # Generate .def file contents = [ "LIBRARY %s INITINSTANCE TERMINSTANCE" % \ os.path.splitext(os.path.basename(output_filename))[0], "DATA MULTIPLE NONSHARED", "EXPORTS"] for sym in export_symbols: contents.append(' "%s"' % sym) self.execute(write_file, (def_file, contents), "writing %s" % def_file) # next add options for def-file and to creating import libraries # for gcc/ld the def-file is specified as any other object files objects.append(def_file) #end: if ((export_symbols is not None) and # (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): # who wants symbols and a many times larger output file # should explicitly switch the debug mode on # otherwise we let dllwrap/ld strip the output file # (On my machine: 10KB < stripped_file < ??100KB # unstripped_file = stripped_file + XXX KB # ( XXX=254 for a typical python extension)) if not debug: extra_preargs.append("-s") UnixCCompiler.link(self, target_desc, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, None, # export_symbols, we do this in our def-file debug, extra_preargs, extra_postargs, build_temp, target_lang) # link () # -- Miscellaneous methods ----------------------------------------- # override the object_filenames method from CCompiler to # support rc and res-files def object_filenames (self, source_filenames, strip_dir=0, output_dir=''): if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: # use normcase to make sure '.rc' is really '.rc' and not '.RC' (base, ext) = os.path.splitext (os.path.normcase(src_name)) if ext not in (self.src_extensions + ['.rc']): raise UnknownFileError, \ "unknown file type '%s' (from '%s')" % \ (ext, src_name) if strip_dir: base = os.path.basename (base) if ext == '.rc': # these need to be compiled to object files obj_names.append (os.path.join (output_dir, base + self.res_extension)) else: obj_names.append (os.path.join (output_dir, base + self.obj_extension)) return obj_names # object_filenames () # override the find_library_file method from UnixCCompiler # to deal with file naming/searching differences def find_library_file(self, dirs, lib, debug=0): shortlib = '%s.lib' % lib longlib = 'lib%s.lib' % lib # this form very rare # get EMX's default library directory search path try: emx_dirs = os.environ['LIBRARY_PATH'].split(';') except KeyError: emx_dirs = [] for dir in dirs + emx_dirs: shortlibp = os.path.join(dir, shortlib) longlibp = os.path.join(dir, longlib) if os.path.exists(shortlibp): return shortlibp elif os.path.exists(longlibp): return longlibp # Oops, didn't find it in *any* of 'dirs' return None # class EMXCCompiler # Because these compilers aren't configured in Python's pyconfig.h file by # default, we should at least warn the user if he is using a unmodified # version. CONFIG_H_OK = "ok" CONFIG_H_NOTOK = "not ok" CONFIG_H_UNCERTAIN = "uncertain" def check_config_h(): """Check if the current Python installation (specifically, pyconfig.h) appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: CONFIG_H_OK all is well, go ahead and compile CONFIG_H_NOTOK doesn't look good CONFIG_H_UNCERTAIN not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". """ # XXX since this function also checks sys.version, it's not strictly a # "pyconfig.h" check -- should probably be renamed... from distutils import sysconfig import string # if sys.version contains GCC then python was compiled with # GCC, and the pyconfig.h file should be OK if string.find(sys.version,"GCC") >= 0: return (CONFIG_H_OK, "sys.version mentions 'GCC'") fn = sysconfig.get_config_h_filename() try: # It would probably better to read single lines to search. # But we do this only once, and it is fast enough f = open(fn) try: s = f.read() finally: f.close() except IOError, exc: # if we can't read this file, we cannot say it is wrong # the compiler will complain later about this file as missing return (CONFIG_H_UNCERTAIN, "couldn't read '%s': %s" % (fn, exc.strerror)) else: # "pyconfig.h" contains an "#ifdef __GNUC__" or something similar if string.find(s,"__GNUC__") >= 0: return (CONFIG_H_OK, "'%s' mentions '__GNUC__'" % fn) else: return (CONFIG_H_NOTOK, "'%s' does not mention '__GNUC__'" % fn) def get_versions(): """ Try to find out the versions of gcc and ld. If not possible it returns None for it. """ from distutils.version import StrictVersion from distutils.spawn import find_executable import re gcc_exe = find_executable('gcc') if gcc_exe: out = os.popen(gcc_exe + ' -dumpversion','r') try: out_string = out.read() finally: out.close() result = re.search('(\d+\.\d+\.\d+)',out_string) if result: gcc_version = StrictVersion(result.group(1)) else: gcc_version = None else: gcc_version = None # EMX ld has no way of reporting version number, and we use GCC # anyway - so we can link OMF DLLs ld_version = None return (gcc_version, ld_version) PKvr]sL^^ file_util.pycnu[ {fc@sdZdZddlZddlmZddlmZidd6dd6d d 6Zdd Z dddddddZ dddZ dZ dS(sFdistutils.file_util Utility functions for operating on single files. s$Id$iN(tDistutilsFileError(tlogtcopyings hard linkingthardssymbolically linkingtsymiicCsd}d}zyt|d}Wn2tjk rV\}}td||fnXtjj|rytj|Wqtjk r\}}td||fqXnyt|d}Wn2tjk r\}}td||fnXxy|j|}Wn2tjk rD\}}td||fnX|sOPny|j |Wqtjk r\}}td||fqXqWWd|r|j n|r|j nXdS( s5Copy the file 'src' to 'dst'. Both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. trbscould not open '%s': %sscould not delete '%s': %stwbscould not create '%s': %sscould not read from '%s': %sscould not write to '%s': %sN( tNonetopentosterrorRtpathtexiststunlinktreadtwritetclose(tsrctdstt buffer_sizetfsrctfdstterrnoterrstrtbuf((s+/usr/lib64/python2.7/distutils/file_util.pyt_copy_file_contentssF  iicCsddlm}ddlm} m} m} m} tjj |sWt d|ntjj |r|} tjj |tjj |}ntjj|} |r||| r|dkrtjd|n|dfSyt|}Wn!tk rtd|nX|dkrxtjj |tjj |kr_tjd ||| qxtjd |||n|r|dfS|d krtjj|otjj||sCytj|||dfSWqtk rqXqCnP|d krCtjj|o#tjj||sCtj|||dfSnt|||s\|rtj|}|rtj||| || fn|rtj|| || qn|dfS( sCopy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is copied there with the same name; otherwise, it must be a filename. (If the file exists, it will be ruthlessly clobbered.) If 'preserve_mode' is true (the default), the file's mode (type and permission bits, or whatever is analogous on the current platform) is copied. If 'preserve_times' is true (the default), the last-modified and last-access times are copied as well. If 'update' is true, 'src' will only be copied if 'dst' does not exist, or if 'dst' does exist but is older than 'src'. 'link' allows you to make hard links (os.link) or symbolic links (os.symlink) instead of copying: set it to "hard" or "sym"; if it is None (the default), files are copied. Don't set 'link' on systems that don't support it: 'copy_file()' doesn't check if hard or symbolic linking is available. If hardlink fails, falls back to _copy_file_contents(). Under Mac OS, uses the native file copy function in macostools; on other systems, uses '_copy_file_contents()' to copy file contents. Return a tuple (dest_name, copied): 'dest_name' is the actual name of the output file, and 'copied' is true if the file was copied (or would have been copied, if 'dry_run' true). i(tnewer(tST_ATIMEtST_MTIMEtST_MODEtS_IMODEs4can't copy '%s': doesn't exist or not a regular fileis"not copying %s (output up-to-date)is&invalid value '%s' for 'link' arguments %s %s -> %sRR(tdistutils.dep_utilRtstatRRRRR R tisfileRtisdirtjointbasenametdirnameRtdebugt _copy_actiontKeyErrort ValueErrortinfoR tsamefiletlinktOSErrortsymlinkRtutimetchmod(RRt preserve_modetpreserve_timestupdateR,tverbosetdry_runRRRRRtdirtactiontst((s+/usr/lib64/python2.7/distutils/file_util.pyt copy_fileGsT""$    $  '   '   ! c Csddlm}m}m}m}m}ddl} |dkrVtjd||n|r`|S||st d|n||rt j j |||}n%||rt d||fn|||st d||fnd } yt j ||WnMt jk rb\} } | | jkrFd} qct d ||| fnX| rt||d |yt j|Wqt jk r\} } yt j|Wnt jk rnXt d d |||| fqXn|S(s)Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? i(R R!R"R$R%Nismoving %s -> %ss#can't move '%s': not a regular files0can't move '%s': destination '%s' already existss2can't move '%s': destination '%s' not a valid pathiscouldn't move '%s' to '%s': %sR4s+couldn't move '%s' to '%s' by copy/delete: sdelete '%s' failed: %s(tos.pathR R!R"R$R%RRR*RR R R#trenameR tEXDEVR9R ( RRR4R5R R!R"R$R%Rtcopy_ittnumtmsg((s+/usr/lib64/python2.7/distutils/file_util.pyt move_filesP (      cCsGt|d}z&x|D]}|j|dqWWd|jXdS(s{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. tws N(RRR(tfilenametcontentstftline((s+/usr/lib64/python2.7/distutils/file_util.pyt write_files  i@( t__doc__t __revision__R tdistutils.errorsRt distutilsRRR'RR9R@RF(((s+/usr/lib64/python2.7/distutils/file_util.pyts    5 b(RS((s&/usr/lib64/python2.7/distutils/util.pyt check_environs  $cCsQt|d}ytjd||SWn tk rL}td|nXdS(sPerform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. cSs8|jd}||kr)t||Stj|SdS(Ni(R,tstrRR$(R+t local_varstvar_name((s&/usr/lib64/python2.7/distutils/util.pyt_substs s\$([a-zA-Z_][a-zA-Z_0-9]*)sinvalid variable '$%s'N(RXR)tsubRWRA(tsRZR\tvar((s&/usr/lib64/python2.7/distutils/util.pyt subst_varss  serror: cCs|t|S(N(RY(texcR2((s&/usr/lib64/python2.7/distutils/util.pytgrok_environment_errorscCs8tjdtjatjdatjdadS(Ns [^\\\'\"%s ]*s'(?:[^'\\]|\\.)*'s"(?:[^"\\]|\\.)*"(R)R*Rt whitespacet _wordchars_ret _squote_ret _dquote_re(((s&/usr/lib64/python2.7/distutils/util.pyt _init_regexscCstd krtntj|}g}d}x|rtj||}|j}|t|kr|j|| Pn||tj kr|j|| tj ||}d}n||dkr|| ||d}|d}n||dkrt j||}n6||dkr<t j||}nt d|||d krmtd||n|j\}}|| ||d|d!||}|jd}|t|kr4|j|Pq4q4W|S( sSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. is\it't"s!this can't happen (bad char '%c')s"bad string (mismatched %s quotes?)iN(RdtNoneRgRtstripR+tendR"tappendRctlstripReRft RuntimeErrorRAtspan(R^twordstposR<Rltbeg((s&/usr/lib64/python2.7/distutils/util.pyt split_quotedsD      % cCsj|dkrFd|j|f}|ddkrF|dd!d}qFntj||sf||ndS(sPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. s%s%ris,)iRN(Rjt__name__Rtinfo(tfunctargstmsgtverbosetdry_run((s&/usr/lib64/python2.7/distutils/util.pytexecute*s  cCsCtj|}|dkrdS|dkr/dStd|fdS(sConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. tytyesttttruetont1itntnotftfalsetofft0isinvalid truth value %rN(R}R~RRRR(RRRRRR(RR#RA(tval((s&/usr/lib64/python2.7/distutils/util.pyt strtobool=s   icCstjrtdn|dkr9to3|dk}n|sy&ddlm}|d\} } Wn4tk rddlm} d| d} } nXt j d| |sB| dk rt j | d} nt | d} | jd | jtjtt|d d | jd |||||f| jntj| g} |d krp| jd dn|dkr| jd dnt| d|tt j| fd| d|n(ddlm}x|D] }|ddkrqn|trdpd}|}|rV|t| |krCtd||fn|t|}n|rtt jj||}nt jj|}|r|st||rt j d|||s||||qqt j d||qqWdS(sByte-compile a collection of Python source files to either .pyc or .pyo files in the same directory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize (generate .pyc) 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. sbyte-compiling is disabled.ii(tmkstemps.py(tmktemps$writing byte-compilation script '%s'tws2from distutils.util import byte_compile files = [ s, s] s byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) is-Ois-OOR{s removing %s(R*itctos1invalid prefix: filename %r doesn't start with %rsbyte-compiling %s to %ss%skipping byte-compilation of %s to %sN(!Rtdont_write_bytecodeRRjt __debug__ttempfileRRVRRRvRtfdopentopentwriteRRFtmaptreprtcloset executabletinsertRR|RCt py_compileR*R"RAREtbasenameRtdebug(tpy_filestoptimizetforceR2tbase_dirRzR{tdirectRt script_fdt script_nameRtscripttcmdR*tfiletcfiletdfilet cfile_base((s&/usr/lib64/python2.7/distutils/util.pyt byte_compileMsh"    &      cCs,tj|d}tj|dd}|S(sReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline. s iRs (RRBRF(theadertlines((s&/usr/lib64/python2.7/distutils/util.pyt rfc822_escapes( t__doc__t __revision__RRRR)tdistutils.errorsRtdistutils.dep_utilRtdistutils.spawnRR=RRR>RIRORRRXR`RbRjRdReRfRgRtR|RRR(((s&/usr/lib64/python2.7/distutils/util.pyts00 ^       ?  PKvr]pversionpredicate.pyonu[ {fc@sdZddlZddlZddlZejdZejdZejdZdZ iej d6ej d6ej d 6ej d 6ejd 6ejd 6Zd ddYZdadZdS(sBModule for parsing and testing package version predicate strings. iNs'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)s^\s*\((.*)\)\s*$s%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCsPtj|}|s(td|n|j\}}|tjj|fS(sVParse a single version comparison. Return (comparison string, StrictVersion) s"bad package restriction syntax: %r(tre_splitComparisontmatcht ValueErrortgroupst distutilstversiont StrictVersion(tpredtrestcomptverStr((s2/usr/lib64/python2.7/distutils/versionpredicate.pytsplitUps ts>=s!=tVersionPredicatecBs)eZdZdZdZdZRS(sParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print v pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|j}|s!tdntj|}|sItd|n|j\|_}|j}|rtj|}|std|n|jd}g|jdD]}t|^q|_ |j std|qn g|_ dS(s*Parse a version predicate string. sempty package restrictionsbad package name in %rsexpected parenthesized list: %rit,sempty parenthesized list in %rN( tstripRtre_validPackageRRtnametre_parentsplitR R(tselftversionPredicateStrRtparentstrtaPred((s2/usr/lib64/python2.7/distutils/versionpredicate.pyt__init___s$  + cCs`|jrUg|jD] \}}|dt|^q}|jddj|dS|jSdS(Nt s (s, t)(RRRtjoin(Rtcondtvertseq((s2/usr/lib64/python2.7/distutils/versionpredicate.pyt__str__zs 0cCs5x.|jD]#\}}t|||s tSq WtS(sTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. (RtcompmaptFalsetTrue(RRRR((s2/usr/lib64/python2.7/distutils/versionpredicate.pyt satisfied_bys(t__name__t __module__t__doc__RR!R%(((s2/usr/lib64/python2.7/distutils/versionpredicate.pyRs?  cCstdkrtjdan|j}tj|}|sRtd|n|jdpdd}|rtj j |}n|jd|fS(s9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) s=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$s"illegal provides specification: %riiN( t _provision_rxtNonetretcompileRRRtgroupRRR(tvaluetmR((s2/usr/lib64/python2.7/distutils/versionpredicate.pytsplit_provisions   ((R(R+tdistutils.versionRtoperatorR,RRRR tlttleteqtgttgetneR"RR*R)R0(((s2/usr/lib64/python2.7/distutils/versionpredicate.pyts    !!nPKvr]%z+$+$ text_file.pycnu[ {fc@s/dZdZddlZdddYZdS(stext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.s$Id$iNtTextFilecBseZdZidd6dd6dd6dd6dd6dd6Zddd Zd Zd Zdd Zdd Z ddZ dZ dZ dZ RS(s Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using the 'open()' builtin. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.itstrip_commentst skip_blanksit lstrip_wst rstrip_wst join_linest collapse_joincKs|dkr$|dkr$tdnxQ|jjD]@}||kr]t||||q4t|||j|q4Wx3|jD]%}||jkrtd|qqW|dkr|j|n||_||_d|_ g|_ dS(sConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.s7you must supply either or both of 'filename' and 'file'sinvalid TextFile option '%s'iN( tNonet RuntimeErrortdefault_optionstkeystsetattrtKeyErrortopentfilenametfilet current_linetlinebuf(tselfRRtoptionstopt((s+/usr/lib64/python2.7/distutils/text_file.pyt__init__Ns       cCs+||_t|jd|_d|_dS(syOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.triN(RR RR(RR((s+/usr/lib64/python2.7/distutils/text_file.pyR ss cCs2|j}d|_d|_d|_|jdS(siClose the current file and forget everything we know about it (filename, current line number).N(RRRRtclose(RR((s+/usr/lib64/python2.7/distutils/text_file.pyR|s     cCsg}|dkr|j}n|j|jdt|ttfra|jdt|n|jd||jt|dj|S(Ns, s lines %d-%d: s line %d: t( RRtappendRt isinstancetlistttupletstrtjoin(Rtmsgtlinetoutmsg((s+/usr/lib64/python2.7/distutils/text_file.pyt gen_errors  cCstd|j||dS(Nserror: (t ValueErrorR"(RRR ((s+/usr/lib64/python2.7/distutils/text_file.pyterrorscCs(tjjd|j||ddS(sPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.s warning: s N(tsyststderrtwriteR"(RRR ((s+/usr/lib64/python2.7/distutils/text_file.pytwarnscCs|jr$|jd}|jd=|Sd}x~|jj}|dkrQd }n|jr|r|jd}|dkr~q|dks||ddkr|ddkrdpd}|d|!|}|jdkrq-qq|jdd}n|jr|r|d kr'|j d |S|j r?|j }n||}t |j trv|j dd|j ds PKvr]O** filelist.pyonu[ {fc@sdZdZddlZddlZddlZddlmZddlmZm Z ddl m Z dddYZ ej d Zd Zd dd d ZdS(ssdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. s$Id$iN(t convert_path(tDistutilsTemplateErrortDistutilsInternalError(tlogtFileListcBseZdZdddZdZejdZdZ dZ dZ dZ dZ d Zd Zd dd d Zd dd dZRS(sA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) cCsd|_g|_dS(N(tNonetallfilestfiles(tselftwarnt debug_print((s*/usr/lib64/python2.7/distutils/filelist.pyt__init__s cCs ||_dS(N(R(RR((s*/usr/lib64/python2.7/distutils/filelist.pyt set_allfiles$scCst||_dS(N(tfindallR(Rtdir((s*/usr/lib64/python2.7/distutils/filelist.pyR 'scCs"ddlm}|r|GHndS(s~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. i(tDEBUGN(tdistutils.debugR(RtmsgR((s*/usr/lib64/python2.7/distutils/filelist.pyR *scCs|jj|dS(N(Rtappend(Rtitem((s*/usr/lib64/python2.7/distutils/filelist.pyR4scCs|jj|dS(N(Rtextend(Rtitems((s*/usr/lib64/python2.7/distutils/filelist.pyR7scCs\ttjj|j}|jg|_x*|D]"}|jjtjj|q2WdS(N(tmaptostpathtsplitRtsortRtjoin(Rtsortable_filest sort_tuple((s*/usr/lib64/python2.7/distutils/filelist.pyR:s    cCsYxRtt|jdddD]1}|j||j|dkr |j|=q q WdS(Niii(trangetlenR(Rti((s*/usr/lib64/python2.7/distutils/filelist.pytremove_duplicatesEs&cCs|j}|d}d}}}|dkrht|dkrRtd|ntt|d}n|dkrt|d krtd |nt|d}tt|d}nN|dkrt|dkrtd|nt|d}n td|||||fS(Nitincludetexcludesglobal-includesglobal-excludeis&'%s' expects ...isrecursive-includesrecursive-excludeis,'%s' expects ...tgrafttprunes#'%s' expects a single sunknown action '%s'(R"R#sglobal-includesglobal-exclude(srecursive-includesrecursive-exclude(R$R%(RRRRRR(RtlinetwordstactiontpatternsRt dir_pattern((s*/usr/lib64/python2.7/distutils/filelist.pyt_parse_template_lineNs,         cCs&|j|\}}}}|dkr}|jddj|x|D].}|j|ddsHtjd|qHqHWn|dkr|jddj|x||D].}|j|ddstjd |qqWnC|d krE|jd dj|x|D]2}|j|dd s tjd d|q q Wn|dkr|jddj|x|D].}|j|dd srtjd|qrqrWn{|dkr|jd|dj|fxL|D]5}|j|d|stjd d||qqWn |dkr|jd|dj|fx|D]1}|j|d|sItjd||qIqIWn|dkr|jd||jdd|s"tjd|q"nY|dkr|jd||jdd|s"tjdd|q"n td |dS(!NR"sinclude t tanchoris%warning: no files found matching '%s'R#sexclude s9warning: no previously-included files found matching '%s'sglobal-includesglobal-include is&warning: no files found matching '%s' sanywhere in distributionsglobal-excludesglobal-exclude sRwarning: no previously-included files matching '%s' found anywhere in distributionsrecursive-includesrecursive-include %s %stprefixsunder directory '%s'srecursive-excludesrecursive-exclude %s %ssNwarning: no previously-included files matching '%s' found under directory '%s'R$sgraft s+warning: no directories found matching '%s'R%sprune s)no previously-included directories found s matching '%s's'this cannot happen: invalid action '%s'( R+R Rtinclude_patternRR texclude_patternRR(RR&R(R)RR*tpattern((s*/usr/lib64/python2.7/distutils/filelist.pytprocess_template_linepsh                         iicCsd}t||||}|jd|j|jdkrK|jnxJ|jD]?}|j|rU|jd||jj|d}qUqUW|S(sSelect strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform-dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return 1 if files are found. is%include_pattern: applying regex r'%s's adding iN( ttranslate_patternR R1RRR tsearchRR(RR1R-R.tis_regext files_foundt pattern_retname((s*/usr/lib64/python2.7/distutils/filelist.pyR/s    cCsd}t||||}|jd|jxhtt|jdddD]G}|j|j|rO|jd|j||j|=d}qOqOW|S(sRemove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return 1 if files are found. is%exclude_pattern: applying regex r'%s'iis removing (R3R R1RRRR4(RR1R-R.R5R6R7R ((s*/usr/lib64/python2.7/distutils/filelist.pyR0s  &  N(t__name__t __module__t__doc__RR R RtcurdirR R RRRR!R+R2R/R0(((s*/usr/lib64/python2.7/distutils/filelist.pyRs     " K-cCsddlm}m}m}m}g}|g}|j}|j}x|r|}tj|} x| D]} |tj krtj j || } n| } tj| } | |} || r|j| qk|| rk||  rk|| qkqkWqFW|S(s^Find all files under 'dir' and return the list of full filenames (relative to 'dir'). i(tST_MODEtS_ISREGtS_ISDIRtS_ISLNK( tstatR=R>R?R@tpopRRtlistdirR<RR(RR=R>R?R@tlisttstackRBtpushtnamesR8tfullnameRAtmode((s*/usr/lib64/python2.7/distutils/filelist.pyR s&"        cCsStj|}tj}tjdkr0d}nd|}tjd||}|S(sTranslate a shell-like glob pattern to a regular expression. Return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). s\s\\\\s\1[^%s]s((?t|}nd}|dk rtd}t|t| }tj}tjdkrd}nd|j |d|f}n|rd|}ntj|S(sTranslate a shell-like wildcard pattern to a compiled regular expression. Return the compiled regex. If 'is_regex' true, then 'pattern' is directly compiled to a regex (if it's a string) or just returned as-is (assumes it's a regex object). ts\s\\t^s.*N( t isinstancetstrRMtcompileRPRRRRLR(R1R-R.R5R7t empty_patternt prefix_reRL((s*/usr/lib64/python2.7/distutils/filelist.pyR38s"       ((R;t __revision__RRMRJtdistutils.utilRtdistutils.errorsRRt distutilsRRR<R RPRR3(((s*/usr/lib64/python2.7/distutils/filelist.pyts  PKvr]?g ccompiler.pycnu[ {fc@sdZdZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z ddl mZddlmZddlmZdd lmZmZdd lmZdd lmZd fd YZddfddfddfddffZeedZidddfd6dddfd6dddfd6dd d!fd"6d#d$d%fd&6d'd(d)fd6Zd*Zeed+d+d+d,Z d-Z!d.Z"dS(/sdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.s$Id$iN(t CompileErrort LinkErrortUnknownFileErrortDistutilsPlatformErrortDistutilsModuleError(tspawn(t move_file(tmkpath(t newer_group(t split_quotedtexecute(tlog(tcustomize_compilert CCompilerc BseZdZdAZdAZdAZdAZdAZdAZ dAZ dAZ idd6dd6dd6dd6dd6Z dddgZ d d d d Zd Zd Zd ZdZdAdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%dAdAdAdAdAd"Z&dAdAdAd dAdAdAd#Z'd$Z(dAd dAd%Z)d&Z*d'Z+d(Z,dAdAdAdAdAd dAdAdAdAd) Z-dAdAdAdAdAd dAdAdAdAd* Z.dAdAdAdAdAd dAdAdAdAd+ Z/dAdAdAdAd dAdAdAd,Z0d-Z1d.Z2d/Z3dAdAdAdAd0Z4d d1Z5d d2d3Z6d d2d4Z7d d2d5Z8d6d d2d7Z9d8d9Z:d:Z;d;Z<dAd8d<Z=d=Z>d>Z?d?d@Z@RS(BsAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. tcs.csc++s.ccs.cpps.cxxtobjcs.micCs||_||_||_d|_g|_g|_g|_g|_g|_ g|_ x.|j j D]}|j ||j |qjWdS(N(tdry_runtforcetverbosetNonet output_dirtmacrost include_dirst librariest library_dirstruntime_library_dirstobjectst executablestkeystset_executable(tselfRRRtkey((s+/usr/lib64/python2.7/distutils/ccompiler.pyt__init__]s          cKsZxS|jD]E}||jkr>td||jjfn|j|||q WdS(sDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) s$unknown executable '%s' for class %sN(RRt ValueErrort __class__t__name__R(RtargsR((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_executabless cCs<t|tr(t||t|nt|||dS(N(t isinstancet basestringtsetattrR (RRtvalue((s+/usr/lib64/python2.7/distutils/ccompiler.pyRscCs<d}x/|jD]$}|d|kr*|S|d}qWdS(Nii(RR(Rtnametitdefn((s+/usr/lib64/python2.7/distutils/ccompiler.pyt _find_macros cCsx|D]}t|tost|dksct|dkost|dtsc|ddkost|dtstd|ddqqWdS(sEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. iiisinvalid macro definition '%s': s.must be tuple (string,), (string, string), or s(string, None)N(R&ttupletlentstrRt TypeError(Rt definitionsR,((s+/usr/lib64/python2.7/distutils/ccompiler.pyt_check_macro_definitionss # cCsH|j|}|dk r(|j|=n||f}|jj|dS(s_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N(R-RRtappend(RR*R)R+R,((s+/usr/lib64/python2.7/distutils/ccompiler.pyt define_macros    cCsE|j|}|dk r(|j|=n|f}|jj|dS(sUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N(R-RRR4(RR*R+tundefn((s+/usr/lib64/python2.7/distutils/ccompiler.pytundefine_macros    cCs|jj|dS(sAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N(RR4(Rtdir((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_include_dirscCs||_dS(sySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N(R(Rtdirs((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_include_dirsscCs|jj|dS(sAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N(RR4(Rtlibname((s+/usr/lib64/python2.7/distutils/ccompiler.pyt add_libraryscCs||_dS(sSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N(R(Rtlibnames((s+/usr/lib64/python2.7/distutils/ccompiler.pyt set_librariesscCs|jj|dS(s'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N(RR4(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_library_dirscCs||_dS(sSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N(R(RR:((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_library_dirsscCs|jj|dS(slAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N(RR4(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_runtime_library_dirscCs||_dS(sSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N(R(RR:((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_runtime_library_dirs%scCs|jj|dS(sAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N(RR4(Rtobject((s+/usr/lib64/python2.7/distutils/ccompiler.pytadd_link_object-scCs||_dS(sSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N(R(RR((s+/usr/lib64/python2.7/distutils/ccompiler.pytset_link_objects5scCs|dkr|j}nt|ts3tdn|dkrK|j}n.t|trp||jpig}n td|dkr|j}n:t|ttfrt||jpg}n td|dkrg}n|j |ddd|}t |t |kst t ||}i} xmt t |D]Y} || } || } tjj| d} |jtjj| | | f| | t|ttfrt||jpg}n tdd|||fS(s;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. s3'libraries' (if supplied) must be a list of stringss6'library_dirs' (if supplied) must be a list of stringss%'runtime_library_dirs' (if supplied) smust be a list of stringsN(RRR&RHR.R1RR(RRRR((s+/usr/lib64/python2.7/distutils/ccompiler.pyt _fix_lib_argss*       cCsE|jr dS|jr.t||dd}nt||}|SdS(sjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. itmissingtnewerN(RRR(RRt output_fileRd((s+/usr/lib64/python2.7/distutils/ccompiler.pyt _need_links   c Cst|ts|g}nd}t|j}x}|D]u}tjj|\}}|jj |}y1|jj |}||kr|}|}nWq7t k rq7Xq7W|S(s|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N( R&RHRR/tlanguage_orderRMRNROt language_maptgettindexR!( RRStlangRjtsourcetbaseRZtextlangtextindex((s+/usr/lib64/python2.7/distutils/ccompiler.pytdetect_languages     cCsdS(sPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. N((RRlReRRt extra_preargstextra_postargs((s+/usr/lib64/python2.7/distutils/ccompiler.pyt preprocesss c Cs|j||||||\}} }} } |j| ||} xU| D]M} y| | \}}Wntk ryqInX|j| ||| || qIW| S(sK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. (R[R_tKeyErrort_compile(RRSRRRR\RqRrRTRRVRWR^RYRXRZ((s+/usr/lib64/python2.7/distutils/ccompiler.pytcompiles7   cCsdS(sCompile 'src' to product 'obj'.N((RRYRXRZR^RrRV((s+/usr/lib64/python2.7/distutils/ccompiler.pyRuCscCsdS(s&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. N((RRtoutput_libnameRR\t target_lang((s+/usr/lib64/python2.7/distutils/ccompiler.pytcreate_static_libJst shared_objecttshared_libraryt executablecCs tdS(suLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N(tNotImplementedError(Rt target_descRtoutput_filenameRRRRtexport_symbolsR\RqRrt build_tempRx((s+/usr/lib64/python2.7/distutils/ccompiler.pytlinkis/c CsG|jtj||j|dd||||||| | | | dS(Ntlib_typetshared(RR tSHARED_LIBRARYtlibrary_filename( RRRwRRRRRR\RqRrRRx((s+/usr/lib64/python2.7/distutils/ccompiler.pytlink_shared_libs  c Cs8|jtj||||||||| | | | dS(N(RR t SHARED_OBJECT( RRRRRRRRR\RqRrRRx((s+/usr/lib64/python2.7/distutils/ccompiler.pytlink_shared_objects  c CsA|jtj||j|||||d||| d| dS(N(RR t EXECUTABLEtexecutable_filenameR( RRtoutput_prognameRRRRR\RqRrRx((s+/usr/lib64/python2.7/distutils/ccompiler.pytlink_executables cCs tdS(skReturn the compiler option to add 'dir' to the list of directories searched for libraries. N(R}(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytlibrary_dir_optionscCs tdS(ssReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N(R}(RR8((s+/usr/lib64/python2.7/distutils/ccompiler.pytruntime_library_dir_optionscCs tdS(sReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N(R}(Rtlib((s+/usr/lib64/python2.7/distutils/ccompiler.pytlibrary_optionsc CsEddl}|dkr!g}n|dkr6g}n|dkrKg}n|dkr`g}n|jd|dt\}}tj|d} z7x|D]} | jd| qW| jd|Wd| jXy|j|gd|} Wnt k rt SXy |j | d d |d |Wnt t fk r@t SXtS( sReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. iNs.cttexttws#include "%s" s=int main (int argc, char **argv) { %s(); return 0; } Rsa.outRR(ttempfileRtmkstemptTrueRMtfdopentwritetcloseRvRtFalseRRR1( RtfuncnametincludesRRRRtfdtfnametftinclR((s+/usr/lib64/python2.7/distutils/ccompiler.pyt has_functions8             cCs tdS(sHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N(R}(RR:RR\((s+/usr/lib64/python2.7/distutils/ccompiler.pytfind_library_filestcCs|dkrd}ng}x|D]}tjj|\}}tjj|d}|tjj|}||jkrtd||fn|rtjj|}n|j tjj |||j q"W|S(NRis"unknown file type '%s' (from '%s')( RRMRNROt splitdrivetisabstsrc_extensionsRtbasenameR4tjoint obj_extension(Rtsource_filenamesRGRt obj_namestsrc_nameRmRZ((s+/usr/lib64/python2.7/distutils/ccompiler.pyRI.s   cCsG|dk st|r-tjj|}ntjj|||jS(N(RRJRMRNRRtshared_lib_extension(RRRGR((s+/usr/lib64/python2.7/distutils/ccompiler.pytshared_object_filename?scCsM|dk st|r-tjj|}ntjj|||jpHdS(NR(RRJRMRNRRt exe_extension(RRRGR((s+/usr/lib64/python2.7/distutils/ccompiler.pyREststaticc Cs|dk st|d kr*tdnt||d}t||d}tjj|\}}|||f} |rd}ntjj||| S( NRRtdylibt xcode_stubs@'lib_type' must be "static", "shared", "dylib", or "xcode_stub".t _lib_formatt_lib_extensionR(RRRR(RRJR!tgetattrRMRNtsplitR( RR<RRGRtfmtRZR8Rmtfilename((s+/usr/lib64/python2.7/distutils/ccompiler.pyRKs   icCstj|dS(N(R R\(Rtmsgtlevel((s+/usr/lib64/python2.7/distutils/ccompiler.pytannounce^scCs"ddlm}|r|GHndS(Ni(tDEBUG(tdistutils.debugR(RRR((s+/usr/lib64/python2.7/distutils/ccompiler.pyt debug_printascCstjjd|dS(Ns warning: %s (tsyststderrR(RR((s+/usr/lib64/python2.7/distutils/ccompiler.pytwarnfscCst||||jdS(N(R R(RtfuncR$RR((s+/usr/lib64/python2.7/distutils/ccompiler.pyR iscCst|d|jdS(NR(RR(Rtcmd((s+/usr/lib64/python2.7/distutils/ccompiler.pyRlscCst||d|jS(NR(RR(RRXtdst((s+/usr/lib64/python2.7/distutils/ccompiler.pyRosicCst||d|jdS(NR(RR(RR*tmode((s+/usr/lib64/python2.7/distutils/ccompiler.pyRrsN(AR#t __module__t__doc__Rt compiler_typeRRtstatic_lib_extensionRtstatic_lib_formattshared_lib_formatRRhRgR R%RR-R3R5R7R9R;R=R?R@RARBRCRERFR[R_R`RaRbRfRpRsRvRuRyRRRRRRRRRRRRRIRRRRRRR RRR(((s+/usr/lib64/python2.7/distutils/ccompiler.pyR s    $ !              ,  #   C   1       , +     scygwin.*tunixtos2emxtemxtposixtnttmsvccCs|dkrtj}n|dkr0tj}nxHtD]@\}}tj||dk sstj||dk r7|Sq7WdS(sr Determine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. RN(RRMR*Rtplatformt_default_compilerstretmatch(tosnameRtpatterntcompiler((s+/usr/lib64/python2.7/distutils/ccompiler.pytget_default_compilers    t unixccompilert UnixCCompilersstandard UNIX-style compilert msvccompilert MSVCCompilersMicrosoft Visual C++tcygwinccompilertCygwinCCompilers'Cygwin port of GNU C Compiler for Win32tcygwintMingw32CCompilers(Mingw32 port of GNU C Compiler for Win32tmingw32t bcppcompilert BCPPCompilersBorland C++ Compilertbcppt emxccompilert EMXCCompilers#EMX port of GNU C Compiler for OS/2cCsvddlm}g}x6tjD](}|jd|dt|dfq#W|j||}|jddS(syPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). i(t FancyGetopts compiler=isList of available compilers:N(tdistutils.fancy_getoptRtcompiler_classRR4Rtsortt print_help(Rt compilersRtpretty_printer((s+/usr/lib64/python2.7/distutils/ccompiler.pytshow_compilerss  ic Cs|dkrtj}ny2|dkr6t|}nt|\}}}WnAtk rd|}|dk r|d|}nt|nXy5d|}t|tj |} t | |} WnEt k rt d|n(tk r t dd||fnX| d||S(s[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. s5don't know how to compile C/C++ code on platform '%s's with '%s' compilers distutils.s4can't compile C/C++ code: unable to load module '%s's4can't compile C/C++ code: unable to find class '%s' sin module '%s'N( RRMR*RRRtRt __import__Rtmodulestvarst ImportErrorR( tplatRRRRt module_namet class_nametlong_descriptionRtmoduletklass((s+/usr/lib64/python2.7/distutils/ccompiler.pyt new_compilers2             cCsg}x|D]}t|toAdt|ko?dknsXtdd|nt|dkr|jd|dq t|dkr |dd kr|jd|dq|jd|q q Wx|D]}|jd |qW|S( sGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. iisbad macro definition '%s': s5each element of 'macros' list must be a 1- or 2-tuples-U%sis-D%ss-D%s=%ss-I%sN(R&R.R/R1R4R(RRRVtmacroR8((s+/usr/lib64/python2.7/distutils/ccompiler.pyRKs" "  c Cs g}x$|D]}|j|j|q WxI|D]A}|j|}t|trh|j|q4|j|q4Wx|D]}tjj|\}} |dkr|j |g| } | dk r|j| q|j d|q|j|j |qW|S(sgGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). Rs6no library file corresponding to '%s' found (skipping)N( R4RRR&RHtextendRMRNRRRRR( RRRRtlib_optsR8toptRtlib_dirtlib_nametlib_file((s+/usr/lib64/python2.7/distutils/ccompiler.pytgen_lib_options"s$        (#Rt __revision__RRMRtdistutils.errorsRRRRRtdistutils.spawnRtdistutils.file_utilRtdistutils.dir_utilRtdistutils.dep_utilRtdistutils.utilR R t distutilsR tdistutils.sysconfigR R RRRRRRRKR(((s+/usr/lib64/python2.7/distutils/ccompiler.pytsJ   (o           - 1PKvr]F5f#bcppcompiler.pyonu[ {fc@sdZdZddlZddlmZmZmZmZmZddl m Z m Z ddl m Z ddlmZddlmZd e fd YZdS( sdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. s$Id$iN(tDistutilsExecErrort CompileErrortLibErrort LinkErrortUnknownFileError(t CCompilertgen_preprocess_options(t write_file(tnewer(tlogt BCPPCompilerc BseZdZdZiZdgZdddgZeeZdZdZ dZ d Z Z d Z d d d d Zdddd dddd Zdd ddZdddddd ddddd Zd dZd ddZddddddZRS(sConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. tbcpps.cs.ccs.cpps.cxxs.objs.libs.dlls%s%ss.exeicCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_ d d dd g|_ g|_ d dd g|_ d dd d g|_ dS( Ns bcc32.exes ilink32.exestlib.exes/tWMs/O2s/qs/g0s/Ods/Tpds/Gns/xs/r(Rt__init__tcctlinkertlibtNonetpreprocess_optionstcompile_optionstcompile_options_debugtldflags_sharedtldflags_shared_debugtldflags_statict ldflags_exetldflags_exe_debug(tselftverbosetdry_runtforce((s./usr/lib64/python2.7/distutils/bcppcompiler.pyR 5s     c Cs|j||||||\}} }} } |p6g} | jd|r_| j|jn| j|jxi| D]a} y| | \}}Wntk rqvnXtjj|}tjj| } |j tjj | |dkrqvn|dkrDy|j dd| |gWqvt k r=}t |qvXqvn||jkr\d}n||jkrtd}nd}d| }y4|j |jg| | ||g||gWqvt k r}t |qvXqvW| S( Ns-cs.ress.rctbrcc32s-fots-Ps-o(t_setup_compiletappendtextendRRtKeyErrortostpathtnormpathtmkpathtdirnametspawnRRt _c_extensionst_cpp_extensionsR (Rtsourcest output_dirtmacrost include_dirstdebugt extra_preargstextra_postargstdependstobjectstpp_optstbuildt compile_optstobjtsrctexttmsgt input_optt output_opt((s./usr/lib64/python2.7/distutils/bcppcompiler.pytcompileQsF          .c Cs|j||\}}|j|d|}|j||r|dg|}|rXny|j|jg|Wqtk r}t|qXntjd|dS(NR,s/usskipping %s (up-to-date)( t_fix_object_argstlibrary_filenamet _need_linkR(RRRR R/( RR3toutput_libnameR,R/t target_langtoutput_filenametlib_argsR:((s./usr/lib64/python2.7/distutils/bcppcompiler.pytcreate_static_libsc Cs|j||\}}|j|||\}}}|rUtjdt|n|dk rytjj||}n|j ||r|t j krd}| r|j }q|j }n#d}| r|j}n |j}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x+|plgD]}|jd||fqmW|jt||fd |ttjj|}|g}g}x[|D]S}tjjtjj|\}}|d kr|j|q|j|qWx+|D]#}|jd tjj|q4W|jd |j||jd |g|jdxL|D]D}|j||| }|dkr|j|q|j|qW|jd|jd|jd |g|jd |j|| r>| |d*n| rT|j| n|jtjj|y|j|jg|Wqtk r}t|qXntj d|dS(Ns7I don't know what to do with 'runtime_library_dirs': %stc0w32tc0d32Ris%s.deftEXPORTSs %s=_%ss writing %ss.ress/L%ss/L.t,s,,timport32tcw32mtsskipping %s (up-to-date)(!R>t _fix_lib_argsR twarntstrRR#R$tjoinR@Rt EXECUTABLERRRRtsplittsplitextR'R texecuteRtmapR%tnormcaseR!tfind_library_fileR&R(RRRR/( Rt target_descR3RCR,t librariest library_dirstruntime_library_dirstexport_symbolsR/R0R1t build_tempRBt startup_objtld_argstdef_filetheadttailtmodnameR9ttemp_dirtcontentstsymtobjects2t resourcestfiletbasetlRtlibfileR:((s./usr/lib64/python2.7/distutils/bcppcompiler.pytlinks|            $  !          c Cs|r-|d}|d|d||f}n|d|f}xW|D]K}xB|D]:}tjj||j|}tjj|rQ|SqQWqDWdSdS(Nt_dt_bcpp(R#R$ROR?texistsR( RtdirsRR/tdlibt try_namestdirtnameRk((s./usr/lib64/python2.7/distutils/bcppcompiler.pyRV4s     RcCs|dkrd}ng}x|D]}tjjtjj|\}}||jddgkr{td||fn|rtjj|}n|dkr|jtjj |||q"|dkr|jtjj ||dq"|jtjj |||j q"W|S(NRs.rcs.ress"unknown file type '%s' (from '%s')( RR#R$RRRUtsrc_extensionsRtbasenameR ROt obj_extension(Rtsource_filenamest strip_dirR,t obj_namestsrc_nameRiR9((s./usr/lib64/python2.7/distutils/bcppcompiler.pytobject_filenamesNs$  $ # #c Cs|jd||\}}}t||}dg|} |dk rZ| jd|n|rm|| d*n|r| j|n| j||js|dkst||r|r|jtj j |ny|j | Wqt k r } | GHt | qXndS(Ns cpp32.exes-oi(t_fix_compile_argsRRR R!RRR&R#R$R'R(RR( Rtsourcet output_fileR-R.R0R1t_R4tpp_argsR:((s./usr/lib64/python2.7/distutils/bcppcompiler.pyt preprocessjs$     $N(t__name__t __module__t__doc__t compiler_typet executablesR)R*RuRwtstatic_lib_extensiontshared_lib_extensiontstatic_lib_formattshared_lib_formatt exe_extensionR RR=RERlRVR|R(((s./usr/lib64/python2.7/distutils/bcppcompiler.pyR sJ     B  |  (Rt __revision__R#tdistutils.errorsRRRRRtdistutils.ccompilerRRtdistutils.file_utilRtdistutils.dep_utilRt distutilsR R (((s./usr/lib64/python2.7/distutils/bcppcompiler.pyts  (PKvr]}Jdist.pyonu[ {fc@s&dZdZddlZddlZddlZddlmZyddlZWnek rie ZnXddl m Z m Z m Z mZddlmZmZddlmZmZmZddlmZdd lmZd Zejd Zd fd YZdfdYZdZdS(s}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. s$Id$iN(tmessage_from_file(tDistutilsOptionErrortDistutilsArgErrortDistutilsModuleErrortDistutilsClassError(t FancyGetoptttranslate_longopt(t check_environt strtoboolt rfc822_escape(tlog(tDEBUGsutf-8s^[a-zA-Z]([a-zA-Z0-9_]*)$t DistributioncBseZdZd]d^d_d`dbgZdZdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwgZed<eZidd6Z dad=Z d>Z dadad?d@Z dAZ dadBZdCZdDZdEZdFZddgdGZdHZdIZdJZdKZdLZdMZddNZdadOZdPdQZejdRZdSZ dTZ!dUZ"dVZ#dWZ$dXZ%dYZ&dZZ'd[Z(d\Z)RS(xsThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. tverbosetvsrun verbosely (default)itquiettqs!run quietly (turns verbosity off)sdry-runtnsdon't actually do anythingthelpthsshow detailed help messages no-user-cfgs-ignore pydistutils.cfg in your home directorysCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package s help-commandsslist all available commandstnamesprint package nametversiontVsprint package versiontfullnamesprint -tauthorsprint the author's names author-emails print the author's email addresst maintainersprint the maintainer's namesmaintainer-emails$print the maintainer's email addresstcontacts7print the maintainer's name if known, else the author'ss contact-emails@print the maintainer's email address if known, else the author'sturlsprint the URL for this packagetlicenses print the license of the packagetlicencesalias for --licenset descriptionsprint the package descriptionslong-descriptions"print the long package descriptiont platformssprint the list of platformst classifierssprint the list of classifierstkeywordssprint the list of keywordstprovidess+print the list of packages/modules providedtrequiress+print the list of packages/modules requiredt obsoletess0print the list of packages/modules made obsoletecCst|dS(Ni(R(tx((s&/usr/lib64/python2.7/distutils/dist.pytwtcCsid|_d|_d|_x!|jD]}t||dq%Wt|_x:|jjD],}d|}t||t|j|qXWi|_ d|_ d|_ d|_ i|_g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|jd}|dk r|d=xY|j D]H\}}|j!|}x*|j D]\} } d| f|| Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. iNis(no description available)( RR]RR3RiRIR~RRR( RXRtRRRRtrvRR((s&/usr/lib64/python2.7/distutils/dist.pytget_command_lists(      cCs|j}t|ts|dkr-d}ng|jdD]}|dkr=|j^q=}d|kr|jddn||_n|S(s9Return a list of packages from which commands are loaded.R'Rsdistutils.commandiN(R5RRR4RlRtinsert(RXtpkgstpkg((s&/usr/lib64/python2.7/distutils/dist.pytget_command_packagess   4  cCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk rvq)nXyt||}Wn'tk rt d|||fnX||j|<|SWt d|dS(soReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. s%s.%ss3invalid command '%s' (no class '%s' in module '%s')sinvalid command '%s'N( R3RIRt __import__RNRzt ImportErrorR2RR(RXR]Rtpkgnamet module_namet klass_nametmodule((s&/usr/lib64/python2.7/distutils/dist.pyRs(     cCs|jj|}| r|rtr9|jd|n|j|}||}|j|R(RX((s&/usr/lib64/python2.7/distutils/dist.pythas_c_librariesscCs|jp|jS(N(RR(RX((s&/usr/lib64/python2.7/distutils/dist.pyt has_modulesscCs|jot|jdkS(Ni(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pyt has_headersscCs|jot|jdkS(Ni(RDR(RX((s&/usr/lib64/python2.7/distutils/dist.pyt has_scriptsscCs|jot|jdkS(Ni(RER(RX((s&/usr/lib64/python2.7/distutils/dist.pythas_data_filesscCs$|jo#|j o#|j S(N(RRR(RX((s&/usr/lib64/python2.7/distutils/dist.pytis_pures  (R Rsrun verbosely (default)i(RRs!run quietly (turns verbosity off)(sdry-runRsdon't actually do anything(RRsshow detailed help messageN(s no-user-cfgNs-ignore pydistutils.cfg in your home directory(s help-commandsNslist all available commands(RNsprint package name(RRsprint package version(RNsprint -(RNsprint the author's name(s author-emailNs print the author's email address(RNsprint the maintainer's name(smaintainer-emailNs$print the maintainer's email address(RNs7print the maintainer's name if known, else the author's(s contact-emailNs@print the maintainer's email address if known, else the author's(RNsprint the URL for this package(RNs print the license of the package(RNsalias for --license(RNsprint the package description(slong-descriptionNs"print the long package description(RNsprint the list of platforms(R Nsprint the list of classifiers(R!Nsprint the list of keywords(R"Ns+print the list of packages/modules provided(R#Ns+print the list of packages/modules required(R$Ns0print the list of packages/modules made obsolete(*Rt __module__t__doc__R4RRRRR-RReRKRsRRRRRRWRRRRRRRRRRR tINFORkRRRRRRRRRR(((s&/usr/lib64/python2.7/distutils/dist.pyR "s         0 . C ]  1 (  ! # '  + )        R/cBs+eZdZd3Zd4dZdZdZdZdZ dZ dZ dZ dZ dZdZd Zd!Zd"Zd#Zd$Zd%Zd&ZeZd'Zd(Zd)Zd*Zd+Zd,Zd-Zd.Zd/Z d0Z!d1Z"d2Z#RS(5s]Dummy class to hold the distribution meta-data: name, version, author, and so forth. RRRt author_emailRtmaintainer_emailRRRtlong_descriptionR!RRRt contact_emailR t download_urlR"R#R$cCs|dk r"|jt|nd|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_dS(N(R4t read_pkg_filetopenRRRR RR RRRR R!RR RR"R#R$(RXRx((s&/usr/lib64/python2.7/distutils/dist.pyRes&                 cst|fd}fd}d}|d|_|d|_|d|_|d|_d|_|d|_d|_|d |_ |d |_ d kr|d |_ n d|_ |d |_ |d|_d kr|d j d|_n|d|_|d|_|dkru|d|_|d|_|d|_nd|_d|_d|_dS(s-Reads the metadata values from a file object.cs|}|dkrdS|S(NtUNKNOWN(R4(RR(Rb(s&/usr/lib64/python2.7/distutils/dist.pyt _read_fields  cs&j|d}|gkr"dS|S(N(tget_allR4(Rtvalues(Rb(s&/usr/lib64/python2.7/distutils/dist.pyt _read_list#s smetadata-versionRRtsummaryRs author-emails home-pageRs download-urlRR!Rtplatformt classifiers1.1R#R"R$N(RRRRRR4RR R RRRR RlR!RR R#R"R$(RXtfileRRtmetadata_version((Rbs&/usr/lib64/python2.7/distutils/dist.pyRs:          cCsAttjj|dd}z|j|Wd|jXdS(s7Write the PKG-INFO file into the release tree. sPKG-INFOtwN(RRwRxR|twrite_pkg_filetclose(RXtbase_dirtpkg_info((s&/usr/lib64/python2.7/distutils/dist.pytwrite_pkg_infoMscCsd}|js3|js3|js3|js3|jr<d}n|j|d||j|d|j|j|d|j|j|d|j|j|d|j |j|d|j |j|d |j |j|d |j |jr |j|d |jnt |j}|j|d |d j|j}|rv|j|d|n|j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS(s9Write the PKG-INFO format data to a file object. s1.0s1.1sMetadata-VersiontNametVersiontSummarys Home-pagetAuthors Author-emailtLicenses Download-URLt DescriptionRtKeywordstPlatformt ClassifiertRequirestProvidest ObsoletesN(R"R#R$R Rt _write_fieldtget_namet get_versiontget_descriptiontget_urlt get_contacttget_contact_emailt get_licenseR tget_long_descriptionR|t get_keywordst _write_listt get_platformstget_classifierst get_requirest get_providest get_obsoletes(RXRRt long_descR!((s&/usr/lib64/python2.7/distutils/dist.pyRVs0  cCs$|jd||j|fdS(Ns%s: %s (RPt _encode_field(RXRRR((s&/usr/lib64/python2.7/distutils/dist.pyR.xscCs(x!|D]}|j|||qWdS(N(R.(RXRRRR((s&/usr/lib64/python2.7/distutils/dist.pyR8{s cCs6|dkrdSt|tr,|jtSt|S(N(R4RtunicodetencodetPKG_INFO_ENCODINGR(RXR((s&/usr/lib64/python2.7/distutils/dist.pyR?s   cCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR/scCs |jp dS(Ns0.0.0(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR0scCsd|j|jfS(Ns%s-%s(R/R0(RX((s&/usr/lib64/python2.7/distutils/dist.pyt get_fullnamescCs|j|jpdS(NR(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pyt get_authorscCs |jp dS(NR(R (RX((s&/usr/lib64/python2.7/distutils/dist.pytget_author_emailscCs|j|jpdS(NR(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pytget_maintainerscCs |jp dS(NR(R (RX((s&/usr/lib64/python2.7/distutils/dist.pytget_maintainer_emailscCs(|j|jp'|j|jp'dS(NR(R?RR(RX((s&/usr/lib64/python2.7/distutils/dist.pyR3scCs|jp|jpdS(NR(R R (RX((s&/usr/lib64/python2.7/distutils/dist.pyR4scCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR2scCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR5scCs|j|jpdS(NR(R?R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR1scCs|j|jpdS(NR(R?R (RX((s&/usr/lib64/python2.7/distutils/dist.pyR6scCs |jp gS(N(R!(RX((s&/usr/lib64/python2.7/distutils/dist.pyR7scCs|jpdgS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pyR9scCs |jp gS(N(R (RX((s&/usr/lib64/python2.7/distutils/dist.pyR:scCs |jp dS(NR(R(RX((s&/usr/lib64/python2.7/distutils/dist.pytget_download_urlscCs |jp gS(N(R#(RX((s&/usr/lib64/python2.7/distutils/dist.pyR;scCs:ddl}x|D]}|jj|qW||_dS(Ni(tdistutils.versionpredicatetversionpredicatetVersionPredicateR#(RXRRtR((s&/usr/lib64/python2.7/distutils/dist.pyt set_requiress  cCs |jp gS(N(R"(RX((s&/usr/lib64/python2.7/distutils/dist.pyR<scCsYg|D]}|j^q}x*|D]"}ddl}|jj|q&W||_dS(Ni(RRIRJtsplit_provisionR"(RXRRRt((s&/usr/lib64/python2.7/distutils/dist.pyt set_providess   cCs |jp gS(N(R$(RX((s&/usr/lib64/python2.7/distutils/dist.pyR=scCs:ddl}x|D]}|jj|qW||_dS(Ni(RIRJRKR$(RXRRtR((s&/usr/lib64/python2.7/distutils/dist.pyt set_obsoletess  (RRRR RR RRRR R!RRRRRR RR"R#R$N($RRR R1R4ReRR!RR.R8R?R/R0RCRDRERFRGR3R4R2R5t get_licenceR1R6R7R9R:RHR;RLR<RNR=RO(((s&/usr/lib64/python2.7/distutils/dist.pyR/sN  4 "                        cCs/g}x"|D]}|j|dd!q W|S(sConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. ii(R~(R)t new_optionst help_tuple((s&/usr/lib64/python2.7/distutils/dist.pyRs ( R t __revision__RNRwtretemailRRLRR4tdistutils.errorsRRRRtdistutils.fancy_getoptRRtdistutils.utilRRR RtR tdistutils.debugR RBtcompileRR R/R(((s&/usr/lib64/python2.7/distutils/dist.pyts($  "PKvr]Ucڍ errors.pyonu[ {fc@sdZdZdefdYZdefdYZdefdYZdefd YZd efd YZd efd YZdefdYZ defdYZ defdYZ defdYZ defdYZ defdYZdefdYZdefdYZdefdYZd efd!YZd"efd#YZd$efd%YZd&efd'YZd(S()sdistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".s$Id$tDistutilsErrorcBseZdZRS(sThe root of all Distutils evil.(t__name__t __module__t__doc__(((s(/usr/lib64/python2.7/distutils/errors.pyR stDistutilsModuleErrorcBseZdZRS(sUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsClassErrorcBseZdZRS(sSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsGetoptErrorcBseZdZRS(s7The option table provided to 'fancy_getopt()' is bogus.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsArgErrorcBseZdZRS(saRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRstDistutilsFileErrorcBseZdZRS(sAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before IOError or OSError could be raised.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR!stDistutilsOptionErrorcBseZdZRS(sSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR &stDistutilsSetupErrorcBseZdZRS(sqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR .stDistutilsPlatformErrorcBseZdZRS(sWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR 2stDistutilsExecErrorcBseZdZRS(s`Any problems executing an external program (such as the C compiler, when compiling C files).(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR 7stDistutilsInternalErrorcBseZdZRS(soInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR ;stDistutilsTemplateErrorcBseZdZRS(s%Syntax error in a file list template.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyR?stDistutilsByteCompileErrorcBseZdZRS(sByte compile error.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRBstCCompilerErrorcBseZdZRS(s#Some compile/link operation failed.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRFstPreprocessErrorcBseZdZRS(s.Failure to preprocess one or more C/C++ files.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRIst CompileErrorcBseZdZRS(s2Failure to compile one or more C/C++ source files.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRLstLibErrorcBseZdZRS(sKFailure to create a static library from one or more C/C++ object files.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyROst LinkErrorcBseZdZRS(s]Failure to link one or more C/C++ object files into an executable or shared library file.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRSstUnknownFileErrorcBseZdZRS(s(Attempt to process an unknown file type.(RRR(((s(/usr/lib64/python2.7/distutils/errors.pyRWsN(Rt __revision__t ExceptionRRRRRRR R R R R RRRRRRRR(((s(/usr/lib64/python2.7/distutils/errors.pyt s(PK]VH9--.__pycache__/_msvccompiler.cpython-38.opt-2.pycnu[U e5dRN@sddlZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlmZddZd d Zd d d ddZddZddZdddZd ddddZGddde ZdS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc CsztjtjdtjtjBd}Wn tk r>tdYdSXd}d}|tD]}zt ||\}}}Wntk rYqYnX|rT|tj krTt j |rTztt|}Wnttfk rYqTYnX|dkrT||krT||}}qTW5QRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredNNr)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivZvc_dirZvtversionr //usr/lib64/python3.8/distutils/_msvccompiler.py _find_vc2015s2     r"c Csddl}tjdptjd}|s(dSz8tjtj|ddddd d d d d ddg ddd}Wntj t t fk r~YdSXtj|ddd}tj |rd|fSdS)NrzProgramFiles(x86)Z ProgramFilesr zMicrosoft Visual StudioZ Installerz vswhere.exez-latestz -prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyZinstallationPathz -products*mbcsstrict)encodingerrorsZVCZ AuxiliaryZBuild) jsonrenvironget subprocess check_outputrjoinstripCalledProcessErrorrUnicodeDecodeErrorr)r)rootrr r r! _find_vc2017:s2  r3x86Zx64ZarmZarm64)r4 x86_amd64x86_arm x86_arm64cCs\t\}}|st\}}|s*tddStj|d}tj|sTtd|dS|dfS)Nz$No suitable Visual C++ version foundr z vcvarsall.batz%s cannot be found)r3r"r rrrr.isfile) plat_spec_rr vcvarsallr r r!_find_vcvarsallcs     r<c CstdrddtjDSt|\}}|s6tdz&tjd||tj dj ddd }Wn@tj k r}z t |jtd |jW5d}~XYnXd dd d |DD}|S)NZDISTUTILS_USE_SDKcSsi|]\}}||qSr lower).0rvaluer r r! wsz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r'zError executing {}cSs$i|]\}}}|r|r||qSr r=)r?rr:r@r r r!rAs css|]}|dVqdS)=N) partition)r?liner r r! sz_get_vc_env..)rgetenvr*itemsr<rr,r-formatZSTDOUTdecoder0r erroroutputcmd splitlines)r9r;r:outexcenvr r r! _get_vc_envus0     rScCsN|stdtj}|D].}tjtj||}tj|r|Sq|SNr)rrHsplitpathseprr.abspathr8)Zexepathspfnr r r! _find_exes   r[r5r6r7)Zwin32z win-amd64z win-arm32z win-arm64c seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd'ddZd(ddZd)ddZd*ddZd+ddZd,ddZfddZdd Zd!d"Zd#d$Zd-d%d&ZZS). MSVCCompilerZmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer r r!r^szMSVCCompiler.__init__NcCs|dkrt}|tkr(tdttt|}t|}|sDtd|dd|_|jt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_|d dt j D]}|r||t jq|d dt j D]}|r||t jqd|_d dddddg|_d dddddg|_d ddg}d dddg}|d |_|d!|_|d"|_|d#|_||_||_tj df|jtj df|jtj df|jtj!df|jtj!df|jtj!df|jtj"df|jtj"df|jtj"df|ji |_#d|_$dS)$Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)re)re)rfrgrh)rfrgrh)%r PLAT_TO_VCVARSrrJtuplerSr+_pathsrUrrVr[cclinkerrdrcmcZmtZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionscompile_options_debugZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsr`)rar_r9Zvc_envrXdirldflagsZ ldflags_debugr r r! initializes           zMSVCCompiler.initializerccsTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }|jqSr ) obj_extensionr?extrar r!rA&sz1MSVCCompiler.object_filenames..csi|] }|jqSr ) res_extensionryr{r r!rA'srccstj|\}}r"tj|}n2tj|\}}|tjjtjjfrT|dd}ztj||WSt k rt d |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithrqaltsepr. LookupErrorrrJ)rYbaserzr:)ext_map output_dir strip_dirr r! make_out_path,s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)raZsource_filenamesrrrr )rrrarr!object_filenames!s zMSVCCompiler.object_filenamesc  Cs|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jd}| D]}z| |\}}Wntk rYqhYnX|rtj |}||j krd|}nD||j krd|}d}n*||j kr@|}d|}z||jg| ||gWqhtk r:}z t|W5d}~XYqhXqhn||jkrtj |}tj |}z\||jd|d||gtj tj |\}}tj ||d }||jd||gWqhtk r}z t|W5d}~XYqhXqhntd |||jg| | }|r"|d |||d |||z||Wqhtk r~}z t|W5d}~XYqhXqh| S) Nz/cFz/Tcz/TpTz/foz-hz-rr]z"Don't know how to compile {} to {}z/EHscz/Fo)r`rwZ_setup_compileappendextendrsrrKeyErrorrrrW _c_extensions_cpp_extensionsrspawnrnrrrdirnameror~rr.rJrl)raZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrzZ input_optZ output_optmsgZh_dirZrc_dirrr:Zrc_fileargsr r r!compileBsx               zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz,td|jd|| |jg|Wqt k r}z t |W5d}~XYqXn td|dS)N)r/OUT:Executing "%s" %s skipping %s (up-to-date)) r`rw_fix_object_argslibrary_filename _need_linkr rrdr.rrr) rarZoutput_libnamerr target_langoutput_filenameZlib_argsrr r r!create_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|j || f}dd|pgD}||||d|g}tj |d} |dk r tj tj|\}}tj | ||}|d|| r| |dd<| r.|| tj tj|}||z,td|jd |||jg|Wn,tk r}z t|W5d}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r )r?Zsymr r r! sz%MSVCCompiler.link..rrz/IMPLIB:rrr)r`rwrZ _fix_lib_argswarnstrrrrr.rrtrr~rrrrrWZmkpathr rrmrrr)raZ target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrvZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr r r!links`       zMSVCCompiler.linkc s8td}z|jtjd<t|WS|tjd<XdSrT)rrHr*rksuperr)rarNZold_path __class__r r!rs   zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r rarur r r!library_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)rrr r r!runtime_library_dir_option sz'MSVCCompiler.runtime_library_dir_optioncCs ||S)N)r)rardr r r!library_optionszMSVCCompiler.library_optioncCs\|r|d|g}n|g}|D]:}|D]0}tj|||}tj|r$|Sq$qdS)NZ_d)rrr.rr8)radirsrdrZ try_namesrunameZlibfiler r r!find_library_files zMSVCCompiler.find_library_file)rrr)N)rrc)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesrrrrrr|rxZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr^rwrrrrrrrrr __classcell__r r rr!r\sd   P " ]  E r\)N)rZshutilstatr,rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r"r3ZPLAT_SPEC_TO_RUNTIMEr<rSr[rir\r r r r!s2   # PK]0oa%__pycache__/dist.cpython-38.opt-1.pycnu[U e5d@sdZddlZddlZddlZddlmZz ddlZWnek rLdZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZed Zd d ZGd d d ZGdddZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escapelog)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$cCsLt|tr nd?Zd@dAZdBdCZdddDdEZdedFdGZdfdIdJZejfdKdLZdMdNZdOdPZ dQdRZ!dSdTZ"dUdVZ#dWdXZ$dYdZZ%d[d\Z&d]d^Z'd_d`Z(d!S)g DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. )verbosevzrun verbosely (default))quietqz!run quietly (turns verbosity off))zdry-runnzdon't actually do anything)helphzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package )z help-commandsNzlist all available commands)nameNzprint package name)versionVzprint package version)fullnameNzprint -)authorNzprint the author's name) author-emailNz print the author's email address) maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)contactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)urlNzprint the URL for this package)licenseNz print the license of the package)licenceNzalias for --license) descriptionNzprint the package description)zlong-descriptionNz"print the long package description) platformsNzprint the list of platforms) classifiersNzprint the list of classifiers)keywordsNzprint the list of keywords)providesNz+print the list of packages/modules provided)requiresNz+print the list of packages/modules required) obsoletesNz0print the list of packages/modules made obsoletecCsg|]}t|dqS)rr).0xrrr szDistribution.rrNcCs\d|_d|_d|_|jD]}t||dqt|_|jjD] }d|}t||t|j|q:i|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|d}|dk r8|d=|D]4\}}| |}|D]\} } d| f|| <qqd|kr~|d|d <|d=d } t!dk rnt!"| nt#j$%| d |D]\} } t&|jd | rt|jd | | nNt&|j| rt|j| | n0t&|| rt|| | nd t'| } t!"| qd|_(|j dk rP|j D].} | )ds6qP| dkr d|_(qPq |*dS)a0Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. rrget_Noptionsz setup scriptr+r*z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+rdry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfattrsattrbasenameZ method_namer9commandZ cmd_optionsopt_dictoptvalrkeyargrrr__init__s~                   zDistribution.__init__cCs&|j|}|dkr"i}|j|<|S)zGet the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. N)rGrQ)r^rbdictrrrrS&s zDistribution.get_option_dictr8c Csddlm}|dkr"t|j}|dk r@||||d}|sV||ddS|D]h}|j|}|dkr||d|qZ||d|||}|dD]}||d|qqZdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:r:)ZpprintrjsortedrGkeysannouncerQsplit) r^headercommandsindentrjZcmd_namercoutlinerrrdump_option_dicts1s*  zDistribution.dump_option_dictscCsg}ttjtjdj}tj|d}tj|rB| |tj dkrRd}nd}|j rtjtj d|}tj|r| |d}tj|r| |t r|dd ||S) aFind as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerVmodules__file__joinisfileappendr!r[ expanduserr rm)r^filesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerrrfind_config_filesMs&       zDistribution.find_config_filesc Csddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|}trb|d|}|D]}tr|d|| || D]V}| |}| |}|D]8} | dkr| |kr| || } | dd} || f|| <qq|qld|jkr|jdD]\} \} } |j | } zF| rDt|| t|  n(| dkr`t|| t| n t|| | Wn,tk r} z t| W5d} ~ XYnXqdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %srr;_global)rr<)Z configparserrrVr base_prefix frozensetrr rmreadZsectionsr9rSrQreplacerhrGrR negative_optr>r ValueErrorDistutilsOptionError)r^ filenamesrZignore_optionsparserfilenameZsectionr9rcrdresrcaliasrrrrparse_config_files}s^             zDistribution.parse_config_filescCs|}g|_t||j}||j|ddi|j|j|d}| }t |j | |rhdS|r|||}|dkrhdSqh|jr|j|t|jdk|jddS|jstddS) aParse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). r+r*)argsobjectNrdisplay_optionsrpzno commands suppliedT)_get_toplevel_optionsrprrset_negative_aliasesrZ set_aliasesgetoptrFZget_option_orderr Z set_verbosityrhandle_display_options_parse_command_optsr _show_helplenDistutilsArgError)r^Ztoplevel_optionsrr option_orderrrrparse_command_lines.      zDistribution.parse_command_linecCs |jdgS)zReturn the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. )zcommand-packages=Nz0list of packages that provide distutils commands)global_optionsr^rrrrsz"Distribution._get_toplevel_optionsc Csddlm}|d}t|s*td||j|z||}Wn*tk rn}z t |W5d}~XYnXt ||st d|t |drt |jtsd}t |||j}t |dr|}||jt |d rt |jtrt|j}ng}||j|j|||||d d\}} t | d rV| jrV|j|d|gd dSt |d rt |jtrd} |jD]F\} } } }t | || rzd } t|r|nt d || fqz| rdS||}t| D]\}}d|f||<q|S)aParse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. rCommandzinvalid command name '%s'Nz&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrrrzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrprget_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrYr rrrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablerSvarsrR)r^rrrrbZ cmd_classrrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncrcr!rrrrrsr                  z Distribution._parse_command_optscCsPdD]F}t|j|}|dkrqt|trdd|dD}t|j||qdS)zSet final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. r/r-NcSsg|] }|qSrstrip)r4Zelmrrrr6jsz1Distribution.finalize_options..,)rBr@r rrnr>)r^r`rrrrr]`s  zDistribution.finalize_optionsrc Csddlm}ddlm}|rR|r*|}n|j}||||jdt d|rt||j |dt d|j D]z}t |t rt||r|} n ||} t| drt | jtr|| jt| jn || j|d| jt dqzt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r gen_usagerz Global options:r8zKInformation display options (just display information, ignore any commands)rzOptions for '%s' command:N)distutils.corerrrrrrZ print_help common_usageprintrrpr rrrrYrrrrrrE) r^rrrrprrr9rbklassrrrrms:           zDistribution._show_helpc Csddlm}|jr4|tdt||jdSd}i}|jD]}d||d<qB|D]l\}}|rX||rXt|}t |j d|}|dkrtd |n |dkrtd |nt|d}qX|S) zIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. rrr8rr7rr)r.r0r1r2r:) rrZ help_commandsprint_commandsrrErrQrrBr@r}) r^rrZany_display_optionsZis_display_optionoptionrdrerrrrrs*   z#Distribution.handle_display_optionsc Csjt|d|D]T}|j|}|s.||}z |j}Wntk rPd}YnXtd|||fqdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :(no description available)z %-*s %sN)rrCrQrr,AttributeError)r^rpro max_lengthcmdrr,rrrprint_command_lists     zDistribution.print_command_listcCsddl}|jj}i}|D] }d||<qg}|jD]}||s4||q4d}||D]}t||krZt|}qZ||d||rt ||d|dS)anPrint out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrzStandard commandszExtra commands) distutils.commandrb__all__rCrlrQrrrr)r^ru std_commandsis_stdrextra_commandsrrrrrs.      zDistribution.print_commandsc Csddl}|jj}i}|D] }d||<qg}|jD]}||s4||q4g}||D]P}|j|}|sx||}z |j}Wnt k rd}YnX|||fqZ|S)a>Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrr) rrbrrCrlrQrrr,r) r^rurrrrrvrr,rrrget_command_lists(         zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|dD}d|krD|dd||_|S)z9Return a list of packages from which commands are loaded.Nr8cSsg|]}|dkr|qS)r8r)r4Zpkgrrrr6!sz5Distribution.get_command_packages..rzdistutils.commandr)rDr rrninsert)r^Zpkgsrrrget_command_packagess  z!Distribution.get_command_packagesc Cs|j|}|r|S|D]}d||f}|}zt|tj|}Wntk r^YqYnXzt||}Wn&tk rt d|||fYnX||j|<|St d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) rCrQr __import__rVr{ ImportErrorrBrr)r^rbrZpkgnameZ module_nameZ klass_namemodulerrrr's,      zDistribution.get_command_classcCsl|j|}|sh|rhtr&|d|||}||}|j|<d|j|<|j|}|rh||||S)aReturn the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. z.z1error in %s: command '%s' has no such option '%s')get_command_namerSr rmrRZboolean_optionsrrr rr>rrYrr) r^rOZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringrrrrrhsF           z!Distribution._set_command_optionsrcCs|ddlm}t||s&|}||}n|}|js8|S|d|_d|j|<|||rx| D]}| ||qf|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. rr) rrr rrZ finalizedZinitialize_optionsrPrZget_sub_commandsreinitialize_command)r^rbZreinit_subcommandsrrsubrrrrs      z!Distribution.reinitialize_commandcCst||dSNr )r^rlevelrrrrmszDistribution.announcecCs|jD]}||qdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)rp run_command)r^rrrr run_commandss zDistribution.run_commandscCsD|j|rdStd|||}||d|j|<dS)aDo whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). Nz running %sr)rPrQr inforZensure_finalizedrun)r^rbrrrrrs   zDistribution.run_commandcCst|jp|jpgdkSNr)rrHrIrrrrhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkSr)rLrrrrrhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkSr)rJrrrrrhas_c_librariesszDistribution.has_c_librariescCs|p|Sr)rrrrrr has_modulesszDistribution.has_modulescCs|jot|jdkSr)rKrrrrr has_headersszDistribution.has_headerscCs|jot|jdkSr)rMrrrrr has_scriptsszDistribution.has_scriptscCs|jot|jdkSr)rNrrrrrhas_data_filesszDistribution.has_data_filescCs|o| o| Sr)rrrrrrris_pures zDistribution.is_pure)N)NNr8)N)r)N)r))r __module__ __qualname____doc__rrrr=rrhrSrtrrrrrr]rrrrrrrrrrr INFOrmrrrrrrrrrrrrrrr,s  ,  0 :C [  2(!" &  , ) rc@seZdZdZdZdBddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#ZeZd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#d@dAZ$dS)Cr?z]Dummy class to hold the distribution meta-data: name, version, author, and so forth. )r!r"r% author_emailr'maintainer_emailr)r*r,long_descriptionr/r-r$r(Z contact_emailr. download_urlr0r1r2NcCs|dk r|t|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dSr) read_pkg_fileopenr!r"r%rr'rr)r*r,rr/r-r.rr0r1r2)r^ryrrrrh s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ nd |_ |d|_ |d|_dkr|d d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|SNZUNKNOWNr)r!rrrr _read_field(sz7DistributionMetadata.read_pkg_file.._read_fieldcs|d}|gkrdS|Sr)Zget_all)r!valuesrrr _read_list.s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionr!r"Zsummaryr%Nr&z home-pager*z download-urlr,r/rplatformZ classifier1.1r1r0r2)rr!r"r,r%r'rrr)r*rrrnr/r-r.r1r0r2)r^filerrZmetadata_versionrrrr$s:                 z"DistributionMetadata.read_pkg_filec Cs2ttj|dddd}||W5QRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwzUTF-8)encodingN)rrxryr}write_pkg_file)r^Zbase_dirZpkg_inforrrwrite_pkg_infoXs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|d||d||d||d||d| |d| |d | |d | |jr|d |jt |}|d |d |}|r|d|||d|||d|||d|||d|||d|dS)z9Write the PKG-INFO format data to a file object. z1.0rzMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r0r1r2r.rrXget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr} get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)r^rr"Z long_descr/rrrr_s6 z#DistributionMetadata.write_pkg_filecCs |D]}|d||fqdS)Nz%s: %s )rX)r^rr!rrrrrrsz DistributionMetadata._write_listcCs |jpdSr)r!rrrrrszDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r"rrrrrsz DistributionMetadata.get_versioncCsd||fS)Nz%s-%s)rrrrrr get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdSr)r%rrrr get_authorszDistributionMetadata.get_authorcCs |jpdSr)rrrrrget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdSr)r'rrrrget_maintainersz#DistributionMetadata.get_maintainercCs |jpdSr)rrrrrget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdSr)r'r%rrrrr sz DistributionMetadata.get_contactcCs|jp|jpdSr)rrrrrrr sz&DistributionMetadata.get_contact_emailcCs |jpdSr)r)rrrrrszDistributionMetadata.get_urlcCs |jpdSr)r*rrrrr sz DistributionMetadata.get_licensecCs |jpdSr)r,rrrrrsz$DistributionMetadata.get_descriptioncCs |jpdSr)rrrrrr sz)DistributionMetadata.get_long_descriptioncCs |jpgSr)r/rrrrr sz!DistributionMetadata.get_keywordscCst|d|_dS)Nr/)rr/r^rrrr set_keywordssz!DistributionMetadata.set_keywordscCs |jp dgSr)r-rrrrrsz"DistributionMetadata.get_platformscCst|d|_dS)Nr-)rr-rrrr set_platformssz"DistributionMetadata.set_platformscCs |jpgSr)r.rrrrrsz$DistributionMetadata.get_classifierscCst|d|_dS)Nr.)rr.rrrrset_classifierssz$DistributionMetadata.set_classifierscCs |jpdSr)rrrrrget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgSr)r1rrrrrsz!DistributionMetadata.get_requirescCs,ddl}|D]}|j|q t||_dSr)distutils.versionpredicateversionpredicateVersionPredicaterr1r^rrurrrr set_requiressz!DistributionMetadata.set_requirescCs |jpgSr)r0rrrrrsz!DistributionMetadata.get_providescCs6dd|D}|D]}ddl}|j|q||_dS)NcSsg|] }|qSrr)r4rrrrr6sz5DistributionMetadata.set_provides..r)rrZsplit_provisionr0)r^rrrurrr set_providess z!DistributionMetadata.set_providescCs |jpgSr)r2rrrrrsz"DistributionMetadata.get_obsoletescCs,ddl}|D]}|j|q t||_dSr)rrr rr2r!rrr set_obsoletessz"DistributionMetadata.set_obsoletes)N)%rrrrrArhrrrrrrrrrrrr r rr Z get_licencerr r rrrrrrrr"rr#rr$rrrrr?sD 4"r?cCs$g}|D]}||ddq|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r)r9Z new_optionsZ help_tuplerrrrsr)rrVrxreZemailrrTrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrur Zdistutils.debugr compilerrrr?rrrrrs4      ZcPK]T $__pycache__/text_file.cpython-38.pycnu[U e5d0@s&dZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@steZdZdZddddddddZdddZd d Zd d Zdd dZdddZ dddZ ddZ ddZ ddZ dS)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.rstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtd|jD]0}||kr@t||||q"t|||j|q"|D]}||jkr\td|q\|dkr||n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsoptr+/usr/lib64/python3.8/distutils/text_file.py__init__Ns   zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.r)r rN)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|dS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}||jdt|ttfrD|dt|n|d||t|d|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|||dS)Nzerror: ) ValueErrorr'rr%r&rrrerrorszTextFile.errorcCs tjd|||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter'r)rrrwarnsz TextFile.warncCs|jr|jd}|jd=|Sd}|j}|dkr6d}|jr|r|d}|dkrTnX|dksl||ddkr|ddkr|dp~d}|d||}|dkrq n |d d}|jr|r|dkr|d |S|j r| }||}t |j t r |j dd|j d<n|j |j dg|_ n:|dkr,dSt |j t rL|j dd|_ n |j d|_ |jrr|jrr|}n"|jr| }n|jr|}|dks|dkr|jrq |jr|ddkr|dd}q |d dd kr|dd d}q |S) aURead and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.rN#rr\r+z\#z2continuation line immediately precedes end-of-filez\ )rrreadlinerfindstripreplacer r/r lstripr rr!rrrstripr)rr&Z buildup_lineposZeolrrrr4sf           zTextFile.readlinecCs(g}|}|dkr|S||qdS)zWRead and return the list of all logical lines remaining in the current file.N)r4r)rlinesr&rrr readliness zTextFile.readlinescCs|j|dS)zPush 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.N)rr)rr&rrr unreadlineszTextFile.unreadline)NN)N)N)N)__name__ __module__ __qualname____doc__r rrrr'r*r/r4r<r=rrrrr s$: !  x r)rAr,rrrrrrsPK]w '__pycache__/errors.cpython-38.opt-2.pycnu[U e5d @s4GdddeZGdddeZGdddeZGdddeZGdd d eZGd d d eZGd d d eZGdddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGd d!d!eZGd"d#d#eZGd$d%d%eZd&S)'c@s eZdZdS)DistutilsErrorN__name__ __module__ __qualname__rr(/usr/lib64/python3.8/distutils/errors.pyr src@s eZdZdS)DistutilsModuleErrorNrrrrrrsrc@s eZdZdS)DistutilsClassErrorNrrrrrr sr c@s eZdZdS)DistutilsGetoptErrorNrrrrrr sr c@s eZdZdS)DistutilsArgErrorNrrrrrr sr c@s eZdZdS)DistutilsFileErrorNrrrrrr $sr c@s eZdZdS)DistutilsOptionErrorNrrrrrr *sr c@s eZdZdS)DistutilsSetupErrorNrrrrrr3src@s eZdZdS)DistutilsPlatformErrorNrrrrrr8src@s eZdZdS)DistutilsExecErrorNrrrrrr>src@s eZdZdS)DistutilsInternalErrorNrrrrrrCsrc@s eZdZdS)DistutilsTemplateErrorNrrrrrrHsrc@s eZdZdS)DistutilsByteCompileErrorNrrrrrrKsrc@s eZdZdS)CCompilerErrorNrrrrrrOsrc@s eZdZdS)PreprocessErrorNrrrrrrRsrc@s eZdZdS) CompileErrorNrrrrrrUsrc@s eZdZdS)LibErrorNrrrrrrXsrc@s eZdZdS) LinkErrorNrrrrrr\src@s eZdZdS)UnknownFileErrorNrrrrrr`srN) Exceptionrrr r r r r rrrrrrrrrrrrrrrr s$ PK]%E,}}'__pycache__/bcppcompiler.cpython-38.pycnu[U e5dW:@sxdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zdd dZdddZdddZd ddZd!ddZd"ddZd#ddZdS)$ BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCst||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer./usr/lib64/python3.8/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |j| D]<} z| | \}}Wntk rYqRYnXtj|}tj| } | tj | |dkrqR|dkrz| dd| |gWqRt k r}z t |W5d}~XYqRXqR||jkrd}n||jkr*d}nd}d| }z,| |jg| | ||g||gWqRt k r}z t |W5d}~XYqRXqR| S) Nz-c.res.rcZbrcc32z-foz-P-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsV            zBCPPCompiler.compilec Cs|||\}}|j||d}|||r~|dg|}|r:z||jg|Wqtk rz}z t|W5d}~XYqXn td|dS)N)r-z/uskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr*rrrr r0) rr3Zoutput_libnamer-r0 target_langoutput_filenameZlib_argsr8rrrcreate_static_libs   zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||dk rNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntj|\}}tj|\}}tj|d}tj|d|}dg}|pgD]}|d||fq|t||fd |ttjj|}|g}g}|D]>}tjtj|\}}|d kr||n ||q`|D]}|d tj|q|d |||d |g|d|D]4}|||| }|dkr||n ||q|d|d|d |g|d ||| rp| |dd<| r|| |tj|z||jg|Wn,tk r}z t|W5d}~XYnXn td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r rz%s.defZEXPORTSz %s=_%sz writing %srz/L%sz/L.,z,,Zimport32Zcw32mtr:) r;Z _fix_lib_argsr warnstrr%r&joinr=rZ EXECUTABLErrrrsplitsplitextr)r"Zexecuter mapr'normcaser#find_library_filer(r*rrrr0) rZ target_descr3r?r-Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr0r1r2Z build_tempr>Z startup_objZld_argsZdef_fileheadtailmodnamer7Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler8rrrlinks                zBCPPCompiler.linkc Csr|r"|d}|d|d||f}n |d|f}|D]:}|D]0}tj|||}tj|r:|Sq:q2dS)NZ_dZ_bcpp)r%r&rDr<exists) rdirsrr0ZdlibZ try_namesdirnamerQrrrrI4s   zBCPPCompiler.find_library_filer cCs|dkr d}g}|D]}tjtj|\}}||jddgkrRtd||f|rbtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j q|S)Nr rrz"unknown file type '%s' (from '%s')) r%r&rFrHsrc_extensionsrbasenamer"rD obj_extension)rZsource_filenamesZ strip_dirr-Z obj_namesZsrc_namerOr7rrrobject_filenamesNs&  zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dk r>| d||rN|| dd<|r\| || ||js~|dks~t||r|r|tj |z| | Wn2t k r} zt | t | W5d} ~ XYnXdS)Nz cpp32.exer!r)Z_fix_compile_argsr r"r#rr r(r%r&r)r*rprintr) rsourceZ output_filer.r/r1r2_r4Zpp_argsr8rrr preprocessis&      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr )NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr+r,rWrYZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr9r@rRrIrZr^rrrrrsb   D    r)rbr%Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs    PK]uU]]-__pycache__/bcppcompiler.cpython-38.opt-2.pycnu[U e5dW:@stddlZddlmZmZmZmZmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZGddde ZdS) N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZiZdgZdddgZeeZdZdZ dZ d Z Z d Z dd d ZdddZdddZdddZd ddZd!ddZd"ddZdS)# BCPPCompilerZbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCst||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer./usr/lib64/python3.8/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |j| D]<} z| | \}}Wntk rYqRYnXtj|}tj| } | tj | |dkrqR|dkrz| dd| |gWqRt k r}z t |W5d}~XYqRXqR||jkrd}n||jkr*d}nd}d| }z,| |jg| | ||g||gWqRt k r}z t |W5d}~XYqRXqR| S) Nz-c.res.rcZbrcc32z-foz-P-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsV            zBCPPCompiler.compilec Cs|||\}}|j||d}|||r~|dg|}|r:z||jg|Wqtk rz}z t|W5d}~XYqXn td|dS)N)r-z/uskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr*rrrr r0) rr3Zoutput_libnamer-r0 target_langoutput_filenameZlib_argsr8rrrcreate_static_libs   zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||dk rNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntj|\}}tj|\}}tj|d}tj|d|}dg}|pgD]}|d||fq|t||fd |ttjj|}|g}g}|D]>}tjtj|\}}|d kr||n ||q`|D]}|d tj|q|d |||d |g|d|D]4}|||| }|dkr||n ||q|d|d|d |g|d ||| rp| |dd<| r|| |tj|z||jg|Wn,tk r}z t|W5d}~XYnXn td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r rz%s.defZEXPORTSz %s=_%sz writing %srz/L%sz/L.,z,,Zimport32Zcw32mtr:) r;Z _fix_lib_argsr warnstrr%r&joinr=rZ EXECUTABLErrrrsplitsplitextr)r"Zexecuter mapr'normcaser#find_library_filer(r*rrrr0) rZ target_descr3r?r-Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr0r1r2Z build_tempr>Z startup_objZld_argsZdef_fileheadtailmodnamer7Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler8rrrlinks                zBCPPCompiler.linkc Csr|r"|d}|d|d||f}n |d|f}|D]:}|D]0}tj|||}tj|r:|Sq:q2dS)NZ_dZ_bcpp)r%r&rDr<exists) rdirsrr0ZdlibZ try_namesdirnamerQrrrrI4s   zBCPPCompiler.find_library_filer cCs|dkr d}g}|D]}tjtj|\}}||jddgkrRtd||f|rbtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j q|S)Nr rrz"unknown file type '%s' (from '%s')) r%r&rFrHsrc_extensionsrbasenamer"rD obj_extension)rZsource_filenamesZ strip_dirr-Z obj_namesZsrc_namerOr7rrrobject_filenamesNs&  zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dk r>| d||rN|| dd<|r\| || ||js~|dks~t||r|r|tj |z| | Wn2t k r} zt | t | W5d} ~ XYnXdS)Nz cpp32.exer!r)Z_fix_compile_argsr r"r#rr r(r%r&r)r*rprintr) rsourceZ output_filer.r/r1r2_r4Zpp_argsr8rrr preprocessis&      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr )NNNNN)__name__ __module__ __qualname__Z compiler_typeZ executablesr+r,rWrYZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr9r@rRrIrZr^rrrrrs`   D    r)r%Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PK]J<<%__pycache__/util.cpython-38.opt-1.pycnu[U e5dQ@s dZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZddZdaddZddZd*ddZdaaaddZddZd+ddZddZd,d d!Zd"d#Z d-d$d%Z!d.d&d'Z"Gd(d)d)Z#dS)/zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc CstjdkrFdtjkrdSdtjkr.dSdtjkr@dStjSdtjkrZtjdStjd ksnttd sttjSt\}}}}}| d d }| d d}| d d}|dddkrd||fS|dddkr,|ddkrd}dt |dd|ddf}ddd}|d|tj 7}n|dddkrLd |||fS|dd!d"krd"}t d#t j}||}|r|}n>|dd!d$krddl}ddl} || j|||\}}}d%|||fS)&aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntZamd64 win-amd64z(arm) win-arm32z(arm64)z win-arm64Z_PYTHON_HOST_PLATFORMposixuname/ _-NZlinuxz%s-%sZsunosr5Zsolarisz%d.%sZ32bitZ64bit)ilz.%sZaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr replaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigZget_platform_osxZ sysconfigZget_config_vars) ZosnameZhostreleasermachineZbitnessZrel_remr( distutilsr-&/usr/lib64/python3.8/distutils/util.pyget_host_platformsR           r/cCs8tjdkr.dddd}|tjdp,tStSdS)NrZwin32rr )Zx86Zx64ZarmZVSCMD_ARG_TGT_ARCH)rrgetrr/)ZTARGET_TO_PLATr-r-r. get_platformas r1cCsztjdkr|S|s|S|ddkr.td||ddkrFtd||d}d|krd|dqP|sntjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. r rzpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)rsep ValueErrorsplitremovecurdirpathjoin)pathnamepathsr-r-r. convert_pathls       r=cCstjdkr) _environ_checkedrrrpwdgetpwuidgetuid ImportErrorKeyErrorr1)rEr-r-r. check_environs   rJc CsVt|fdd}ztd||WStk rP}ztd|W5d}~XYnXdS)aPerform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. cSs,|d}||krt||Stj|SdS)Nr>)r'strrr)r& local_varsZvar_namer-r-r._substs  zsubst_vars.._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)rJr#subrIr5)srLrMvarr-r-r. subst_varss  rQerror: cCs |t|SN)rK)excprefixr-r-r.grok_environment_errorsrVcCs(tdtjatdatdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r#r$string whitespace _wordchars_re _squote_re _dquote_rer-r-r-r. _init_regexs r\cCstdkrt|}g}d}|rt||}|}|t|krZ||d|q||tjkr||d|||d }d}n||dkr|d|||dd}|d}n||dkrt ||}n*||dkrt ||}nt d|||dkr t d|||\}}|d|||d|d||d}|d }|t|kr||qq|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. Nrr?r>'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rYr\stripr&endlenappendrWrXlstriprZr[ RuntimeErrorr5span)rOZwordsposr+r`Zbegr-r-r. split_quoteds@        ,   rgcCsP|dkr6d|j|f}|dddkr6|ddd}t||sL||dS)aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rz,)r))__name__rinfo)funcargsmsgverbosedry_runr-r-r.executes  rqcCs2|}|dkrdS|dkr dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. )yZyesttrueZon1r>)nZnofZfalseZoff0rzinvalid truth value %rN)rr5)valr-r-r. strtobool2s rzr>c CsTddl}tjrtd|dkr*do(|dk}|s@zddlm} | d\} } Wn.tk rzddlm} d| d} } YnXt d| |s| dk rt | d } n t | d } | B| d | d tt|d | d |||||fW5QRXtjg}|||| t||dtt j| fd| |dnddlm}|D]}|dddkrjqP|dkr|dkrdn|}tjj||d}n tj|}|}|r|dt||krtd||f|t|d}|rt j||}t j |}|rP|st!||r>t d|||sL||||nt"d||qPdS)a~Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. rNzbyte-compiling is disabled.F)mkstemp.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) )rpz removing %s)r$r ) optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)# subprocessrdont_write_bytecoderZtempfiler{rHr}rrkrfdopenopenwriter:maprepr executableextendZ"_optim_args_from_interpreter_flagsrbrrqr7 py_compiler$ importlibutilcache_from_sourcerar5r9basenamerdebug)Zpy_filesoptimizeZforcerUZbase_dirrorpZdirectrr{Z script_fdZ script_namer}Zscriptcmdr$fileoptcfiledfileZ cfile_baser-r-r. byte_compileBsx$               rcCs|d}d}||S)zReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline.  z )r6r:)headerlinesr4r-r-r. rfc822_escapes rcCsV|sdSddlm}m}Gddd|}|dkr8|d}|||d}|j|dd dS) a Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.Nr)RefactoringToolget_fixers_from_packagec@s$eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj|f|dSrS)rerror)selfrnrmkwr-r-r. log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dSrS)rrkrrnrmr-r-r. log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dSrS)rrrr-r-r. log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)rj __module__ __qualname__rrrr-r-r-r.DistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrr-r-r.run_2to3s  rc Csddlm}ddlm}ddlm}|} t} t|z | W5t| X| j | j dd<|r| D]} | } | sqr| | qrg} | j D]L} tj|| }|tj||tj|| |dd}|dr| |qtdd | D|||d | S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNr>)updatecSsg|]}|dr|qS)r|)rendswith).0fnr-r-r. sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrrgetcwdchdirfindallZallfilesr splitlinesr_Zprocess_template_liner9r:dirnamerbr)srcdesttemplaterrrrrrZfilelistr8lineZcopiedfilenameZoutnameresr-r-r.copydir_run_2to3s:          rc@s$eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jSrS)rrrr)rrr-r-r.r-szMixin2to3.run_2to3)rjrr__doc__rrrrr-r-r-r.rs r)rR)Nrr)rrNNr>rN)NNN)NNNN)$rrr#importlib.utilrrWrZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrr,rrr/r1r=rBrDrJrQrVrYrZr[r\rgrqrzrrrrrr-r-r-r.sN     O   =    !PK]p|t(__pycache__/version.cpython-38.opt-2.pycnu[U e5d90@s:ddlZGdddZGdddeZGdddeZdS)Nc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)VersionNcCs|r||dSNparseselfvstringr )/usr/lib64/python3.8/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__strrr r r __repr__*szVersion.__repr__cCs||}|tkr|S|dkSNr_cmpNotImplementedrothercr r r __eq__-s zVersion.__eq__cCs||}|tkr|S|dkSrrrr r r __lt__3s zVersion.__lt__cCs||}|tkr|S|dkSrrrr r r __le__9s zVersion.__le__cCs||}|tkr|S|dkSrrrr r r __gt__?s zVersion.__gt__cCs||}|tkr|S|dkSrrrr r r __ge__Es zVersion.__ge__)N) r __module__ __qualname__r rrrrrrr r r r rs rc@s8eZdZedejejBZddZddZ ddZ dS) StrictVersionz)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|j|}|std||ddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s')rr) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr&majorminorZpatchr-Zprerelease_numr r r rs   zStrictVersion.parsecCsb|jddkr*dtt|jdd}ndtt|j}|jr^||jdt|jd}|S)Nr!r.r )r,joinr*rr-rr r r __str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|jsB|jsBdS|jrR|jsRdS|jsb|jrbdS|jr|jr|j|jkr~dS|j|jkrdSdSndS)Nr r) isinstancerrr,r-rrr r r rs&         zStrictVersion._cmpN) r rrrecompileVERBOSEASCIIr%rr2rr r r r r]s %  rc@sDeZdZedejZd ddZddZddZ d d Z d d Z dS) LooseVersionz(\d+ | [a-z]+ | \.)NcCs|r||dSrrrr r r r .szLooseVersion.__init__c Cs^||_dd|j|D}t|D].\}}zt|||<Wq$tk rPYq$Xq$||_dS)NcSsg|]}|r|dkr|qS)r0r ).0xr r r 8sz&LooseVersion.parse..)r component_resplit enumerater+r'r,)rrZ componentsiobjr r r r3szLooseVersion.parsecCs|jSr)rrr r r r2CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))rrr r r rGszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrr3r )r4rr:r,r5r r r rKs    zLooseVersion._cmp)N) r rrr6r7r8r>r rr2rrr r r r r: s ! r:)r6rrr:r r r r s>/PK]g:-D-D.__pycache__/msvc9compiler.cpython-38.opt-1.pycnu[U e5d/w@sRdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"dkZ#e#rd Z$d Z%d Z&n d Z$d Z%dZ&dddZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,ddZ-d$ddZ.e*Z/e/d kr>ed!e/Gd"d#d#e Z0dS)%a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64r z win-amd64c@sPeZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCs:tD](}|||}|r||kr||Sqt|dSN)HKEYS read_valuesKeyError)clspathkeybasedr//usr/lib64/python3.8/distutils/msvc9compiler.py get_value@s   z Reg.get_valuecCsnzt||}Wntk r$YdSXg}d}zt||}Wntk rTYqjYnX|||d7}q.|S)zReturn list of registry keys.Nr) RegOpenKeyExRegError RegEnumKeyappend)rrrhandleLikrrr read_keysHs   z Reg.read_keysc Cszt||}Wntk r$YdSXi}d}zt||\}}}Wntk rZYqYnX|}|||||<|d7}q.|S)z`Return dict of registry keys and values. All names are converted to lowercase. Nrr)rr RegEnumValuelower convert_mbcs) rrrr!rr#namevaluetyperrrrZs  zReg.read_valuescCs:t|dd}|dk r6z |d}Wntk r4YnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr(ps  zReg.convert_mbcsN) __name__ __module__ __qualname____doc__r classmethodr%rr( staticmethodrrrrr<src@s,eZdZddZddZddZddZd S) MacroExpandercCsi|_t||_||dSr)macrosVS_BASEvsbase load_macros)selfversionrrr__init__|s zMacroExpander.__init__cCst|||jd|<dS)Nz$(%s))rrr8)r<Zmacrorrrrr set_macroszMacroExpander.set_macroc Cs|d|jdd|d|jdd|dtdz$|dkrP|d td ntd Wntk rvtd YnX|d kr|d |jd|dtdnbd}tD]X}zt||}Wntk rYqYnXt |d}t |d||f}|d|j d<qdS)NZ VCInstallDirz \Setup\VC productdirZ VSInstallDirz \Setup\VSZ FrameworkDirZ installroot @ZFrameworkSDKDirzsdkinstallrootv2.0aPython was built with Visual Studio 2008; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2008 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.g"@ZFrameworkVersionz clr versionZ WindowsSdkDirZcurrentinstallfolderz.Software\Microsoft\NET Framework Setup\Productrz%s\%sr=z$(FrameworkVersion)) r?r:NET_BASErr WINSDK_BASErrrrrrr8)r<r=prhrrrrrr;s2    zMacroExpander.load_macroscCs$|jD]\}}|||}q |Sr)r8itemsreplace)r<r0r$vrrrsubszMacroExpander.subN)r1r2r3r>r?r;rIrrrrr7zsr7cCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|d d d }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.N r g$@r)sysr=findlensplitint)prefixr#r0restZ majorVersionZ minorVersionrrrget_build_versions  rXcCs0g}|D]"}tj|}||kr||q|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osrnormpathr )pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r\cCs<|tj}g}|D]}||kr||qtj|}|S)z8Remove duplicate values of an environment variable. )rTrYpathsepr join)ZvariableZoldListZnewListr#Z newVariablerrrremoveDuplicatess   r_cCst|}ztd|d}Wn"tk r>tdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||std dStj |d }tj|r|Std dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCr@z%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batUnable to find vcvarsall.bat)r9rrrr debugrYrisdirenvirongetr^pardirabspathisfile)r=r:r@ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls4        ric Cs8t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd }z| \}}| d krzt| d | d }| d D]d}t|}d |krq|}| d d\} } | } | |kr| tjr| dd} t| || <qW5|j|j Xt|t|kr4ttt||S)zDLaunch vcvarsall.bat and read the settings from its environment includelibZlibpathrNr`z'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr- =rrJ)rirr ra subprocessPopenPIPErlclosermZ communicatewaitr,rTrr(stripr'endswithrYr]r_rS ValueErrorstrlistkeys) r=ZarchrhZ interestingresultpopenrlrmlinerr*rrrquery_vcvarsalls>         r~rAz(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd.ddZd/ddZd0ddZd1ddZd2ddZd3ddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd4d*d+Zd,d-ZdS)5 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr>VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r<verboseZdry_runZforcerrrr>IszMSVCCompiler.__init__NcCs|dkrt}d}||kr(td|fdtjkrfdtjkrf|drfd|_d|_d|_d|_d |_ n|tksx|d krt |}nt td t |}t t |}|d  tj|_|d tjd <|dtjd<t|jdkrtd|j|d|_|d|_|d|_|d|_|d |_ z(tjd  dD]}|j|q:Wntk rfYnXt|j|_d|jtjd <d|_|jdkrdddddg|_ddddddg|_n&ddddddg|_dddddddg|_dddg|_|jdkrddd d!g|_dg|_d"|_dS)#Nrz--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer _rrkrjrzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.;r z/nologoz/Oxz/MDz/W3z/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOz/INCREMENTAL:noz/DEBUGT)r rrYrcfind_execclinkerrkrcmcPLAT_TO_VCVARSr~rrTr]rrSZ_MSVCCompiler__productr rr\r^Zpreprocess_optionsrcompile_optionscompile_options_debugldflags_sharedrldflags_shared_debugZldflags_staticr)r<rZok_platsZ plat_specZvc_envrDrrr initializeTs~              zMSVCCompiler.initializecCs|dkr d}g}|D]}tj|\}}tj|d}|tj|d}||jkrbtd||rrtj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j q|S)NrrzDon't know how to compile %s)rYrsplitext splitdriveisabssrc_extensionsrbasename_rc_extensionsr r^ res_extension_mc_extensions obj_extension)r<Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenamess.        zMSVCCompiler.object_filenamesc  Csp|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |j| D]}z| |\}}Wntk rYqdYnX|rtj |}||j krd|}nT||j krd|}n>||j kr<|}d|}z"||jg| |g|gWqdtk r6}z t|W5d}~XYqdXqdn||jkrtj |}tj |}zl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqdtk r}z t|W5d}~XYqdXqdntd||fd |}z&||jg| | ||g|Wqdtk rh}z t|W5d}~XYqdXqd| S) Nz/cz/Tcz/Tpz/foz-hz-rrz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compiler extendrrrrYrrf _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr^r)r<Zsourcesrr8Z include_dirsra extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompiles                   zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz||jg|Wqtk r}z t|W5d}~XYqXn t d|dS)N)r/OUT:skipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrkrrr ra) r<rZoutput_libnamerra target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsT|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rD|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}|pgD]}|d|q||||d|g}tj|d} |dk rLtjtj|\}}tj | ||}|d|||| || rl| |dd<| r||| |tj|z||jg|Wn,tk r}z t|W5d}~XYnX|||}|dk rP|\}}d||f}z|dd d ||gWn,tk r@}z t|W5d}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:rrz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestr)rrrZ _fix_lib_argswarnrxr rYrr^rr EXECUTABLErrr rrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor ra)r< target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrarr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6s             zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifest/MANIFESTFILE:)rYrr^rr )r<rrr temp_manifestrrrrs z"MSVCCompiler.manifest_setup_ldargscCs^|D]"}|dr|ddd}q,qdS|tjkr|)rz*\s*zI|)w) openrsreadrerDOTALLrIsearchwriteOSError)r<Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs2      z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:rr<dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nzrrrrrrrrrrrrrrrrrr+sl  W  X  _ + r)r )1r4rYrprQrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyrZ EnumValuer&errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r9rCrBrrr7rXr\r_rir~rrrrrrsP  >. # )  PK]5%__pycache__/core.cpython-38.opt-1.pycnu[U e5d"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad Zd ZddZdddZdS)a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr&/usr/lib64/python3.8/distutils/core.py gen_usage s r) distclassr script_argsZoptionsnameversionZauthorZ author_emailZ maintainerZmaintainer_emailZurllicenseZ descriptionZlong_descriptionkeywordsZ platformsZ classifiersZ download_urlZrequiresZprovidesZ obsoletes)rZsourcesZ include_dirsZ define_macrosZ undef_macrosZ library_dirsZ librariesZruntime_library_dirsZ extra_objectsZextra_compile_argsZextra_link_argsZ swig_optsZexport_symbolsZdependsZlanguagec Ks|d}|r|d=nt}d|kr8tjtjd|d<d|krRtjdd|d<z||a}WnLtk r}z.d|krt d|nt d |d|fW5d}~XYnXt d kr|S| t rt d |t d kr|Sz |}Wn:tk r*}zt t|jd |W5d}~XYnXt rBt d|t dkrP|S|rz |Wntk rt dYntk r}z.t rtjd|fnt d|fW5d}~XYnBttfk r }zt rnt dt|W5d}~XYnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)attrsklassZdistmsgokexcrrrsetup9sd%   (   "r,runc Cs|dkrtd|f|atj}d|i}zZzH|tjd<|dk rP|tjdd<t|d}t||W5QRXW5|t_daXWntk rYnXt dkrt d|t S) a.Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. )rrrr-z"invalid value for 'stop_after': %r__file__NrrrbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?) ValueErrorr rrcopyopenexecreadrr RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups*    r8)Nr-)__doc__rrZdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr rZsetup_keywordsZextension_keywordsr,r8rrrrs       qPK]5__pycache__/core.cpython-38.pycnu[U e5d"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad Zd ZddZdddZdS)a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr&/usr/lib64/python3.8/distutils/core.py gen_usage s r) distclassr script_argsZoptionsnameversionZauthorZ author_emailZ maintainerZmaintainer_emailZurllicenseZ descriptionZlong_descriptionkeywordsZ platformsZ classifiersZ download_urlZrequiresZprovidesZ obsoletes)rZsourcesZ include_dirsZ define_macrosZ undef_macrosZ library_dirsZ librariesZruntime_library_dirsZ extra_objectsZextra_compile_argsZextra_link_argsZ swig_optsZexport_symbolsZdependsZlanguagec Ks|d}|r|d=nt}d|kr8tjtjd|d<d|krRtjdd|d<z||a}WnLtk r}z.d|krt d|nt d |d|fW5d}~XYnXt d kr|S| t rt d |t d kr|Sz |}Wn:tk r*}zt t|jd |W5d}~XYnXt rBt d|t dkrP|S|rz |Wntk rt dYntk r}z.t rtjd|fnt d|fW5d}~XYnBttfk r }zt rnt dt|W5d}~XYnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)attrsklassZdistmsgokexcrrrsetup9sd%   (   "r,runc Cs|dkrtd|f|atj}d|i}zZzH|tjd<|dk rP|tjdd<t|d}t||W5QRXW5|t_daXWntk rYnXt dkrt d|t S) a.Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. )rrrr-z"invalid value for 'stop_after': %r__file__NrrrbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?) ValueErrorr rrcopyopenexecreadrr RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups*    r8)Nr-)__doc__rrZdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr rZsetup_keywordsZextension_keywordsr,r8rrrrs       qPK]`=x-__pycache__/archive_util.cpython-38.opt-2.pycnu[U e5d|!@s@ddlZddlmZddlZz ddlZWnek r@dZYnXddlmZddlm Z ddl m Z ddl m Z zddlmZWnek rdZYnXzddlmZWnek rdZYnXd d Zd d Zd"ddZd#ddZedgdfedgdfedgdfedgdfedgdfegdfdZddZd$d d!ZdS)%N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdSN)rKeyErrornameresultr./usr/lib64/python3.8/distutils/archive_util.py_get_gids  rcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdSr )rr r rrr_get_uid+s  rgzipcs.dddddd}dddd d }|dk r:||kr:td |d } |d krZ| ||d7} ttj| |dddl} t dt t fdd} |s| | d||} z| j|| dW5| X|d kr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)NZgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarrdry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|SN)gidZgnameuiduname)Ztarinforgroupownerrrr _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropencloseaddrPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserr!r Ztar_compressionZ compress_extZ archive_namer*r"tarZcompressed_namecmdrrr make_tarball7sB          r7c Cs|d}ttj||dtdkrp|r.d}nd}ztd|||g|dWn tk rjtd|YnXn8td|||sztj |dtj d }Wn&t k rtj |dtj d }YnX||tj krtjtj|d }|||td |t|D]\}} } | D]6} tjtj|| d }|||td |q| D]B} tjtj|| }tj|rV|||td |qVq W5QRX|S) Nz.ziprz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr'r(r)zipfilerrrr+ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfile) r2r3r4rZ zip_filenameZ zipoptionsr8r(dirpathZdirnames filenamesr rrr make_zipfilesV          rD)rrzgzip'ed tar-file)rrzbzip2'ed tar-file)rrzxz'ed tar-file)rrzcompressed tar file)rNzuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr5r8cCs|D]}|tkr|SqdSr)ARCHIVE_FORMATS)Zformatsformatrrrcheck_archive_formatss rGc Cst}|dk r6td|tj|}|s6t||dkrDtj}d|i} z t|} Wn t k rxt d|YnX| d} | dD]\} } | | | <q|dkr|| d<|| d<z| ||f| }W5|dk rtd |t|X|S) Nzchanging into '%s'rzunknown archive format '%s'rr8r!r zchanging back to '%s') r'getcwdrdebugr(abspathchdirr<rEr r%)r2rFZroot_dirr3r4rr!r Zsave_cwdkwargsZ format_infofuncargvalfilenamerrr make_archives2       rR)rrrNN)rr)NNrrNN)r'warningsrr0r: ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr7rDrErGrRrrrrsL            H =       PK]xa a 1__pycache__/versionpredicate.cpython-38.opt-2.pycnu[U e5d @s~ddlZddlZddlZedejZedZedZddZ ej ej ej ej ejejdZGdd d Zdad d ZdS) Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t|}|std||\}}|tj|fS)Nz"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 2/usr/lib64/python3.8/distutils/versionpredicate.pysplitUps    r)z>=z!=c@s$eZdZddZddZddZdS)VersionPredicatecCs|}|stdt|}|s.td||\|_}|}|rt|}|sbtd||d}dd|dD|_|jstd|ng|_dS) Nzempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %r) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s&     zVersionPredicate.__init__cCs8|jr.dd|jD}|jdd|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs(|jD]\}}t|||sdSqdS)NFT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname__rr#r%r r r r rsArcCsdtdkrtdtja|}t|}|s8td||dpDd}|rVtj |}|d|fS)Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r2)r,Zdistutils.versionroperatorr-r.rrrrltleeqgtgener$rr+r2r r r r s    nPK]ES __pycache__/debug.cpython-38.pycnu[U e5d@sddlZejdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr'/usr/lib64/python3.8/distutils/debug.pysPK](S)__pycache__/filelist.cpython-38.opt-2.pycnu[U e5d 2@sddlZddlZddlZddlZddlmZddlmZmZddl m Z GdddZ ddZ ej fd d Zd d ZdddZdS)N convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@sxeZdZdddZddZejfddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdddZdddZdS)FileListNcCsd|_g|_dSN)allfilesfiles)selfwarn debug_printr*/usr/lib64/python3.8/distutils/filelist.py__init__szFileList.__init__cCs ||_dSr)r )r r rrr set_allfiles#szFileList.set_allfilescCst||_dSr)findallr )r dirrrrr&szFileList.findallcCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)r msgrrrrr )s zFileList.debug_printcCs|j|dSr)r append)r itemrrrr3szFileList.appendcCs|j|dSr)r extend)r itemsrrrr6szFileList.extendcCs<tttjj|j}g|_|D]}|jtjj|qdSr)sortedmapospathsplitr rjoin)r Zsortable_filesZ sort_tuplerrrsort9sz FileList.sortcCs@tt|jdddD]$}|j||j|dkr|j|=qdS)Nr)rangelenr )r irrrremove_duplicatesCszFileList.remove_duplicatescCs|}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSrr.0wrrr Wsz1FileList._parse_template_line..r")recursive-includerecursive-excludez,'%s' expects ...cSsg|] }t|qSrrr-rrrr0]s)graftprunez#'%s' expects a single zunknown action '%s')rr%rr)r lineZwordsactionpatternsr dir_patternrrr_parse_template_lineLs0      zFileList._parse_template_linecCs@||\}}}}|dkrV|dd||D]}|j|dds2td|q2n|dkr|dd||D]}|j|ddsvtd |qvn|d kr|d d||D]}|j|d dstd |qn^|dkr(|dd||D]"}|j|d dstd|qn|dkrv|d|d|f|D]$}|j||dsNtd||qNn|dkr|d|d|f|D]$}|j||dstd||qnx|dkr|d||jd|dswarning: no files found matching '%s' anywhere in distributionr+zglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionr1zrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'r2zrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r4zgraft z+warning: no directories found matching '%s'r5zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r:r r include_patternrr exclude_patternr)r r6r7r8rr9patternrrrprocess_template_linehs             zFileList.process_template_liner"rcCsld}t||||}|d|j|jdkr4||jD],}||r:|d||j|d}q:|S)NFz%include_pattern: applying regex r'%s'z adding T)translate_patternr r@r rsearchr r)r r@r<r=is_regex files_found pattern_renamerrrr>s    zFileList.include_patterncCsrd}t||||}|d|jtt|jdddD]4}||j|r8|d|j||j|=d}q8|S)NFz%exclude_pattern: applying regex r'%s'r"r#z removing T)rBr r@r$r%r rC)r r@r<r=rDrErFr&rrrr?szFileList.exclude_pattern)NN)r"Nr)r"Nr)__name__ __module__ __qualname__rrrcurdirrr rrr!r'r:rAr>r?rrrrrs    L ,rcCs&ddtj|ddD}ttjj|S)Ncss,|]$\}}}|D]}tj||VqqdSr)rrr )r.basedirsr filerrr sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsrrr_find_all_simples rTcCs6t|}|tjkr.tjtjj|d}t||}t|S)N)start) rTrrK functoolspartialrrelpathrlist)rr Zmake_relrrrrs   rcCs8t|}tj}tjdkrd}d|}td||}|S)N\z\\\\z\1[^%s]z((?t|}nd}|dk rt|}|t|t|t|}tj} tjdkrd} |t|t|t|}d||| ||f}n|rd||t|df}t|S)N_rZz\\z%s\A%s%s.*%s%sz%s\A%s) isinstancestrr^compiler` partitionr%rr]) r@r<r=rDrUraendrFZ prefix_rer]rrrrB%s(   rB)r"Nr)rr^r[rVZdistutils.utilrZdistutils.errorsrrZ distutilsrrrTrKrr`rBrrrrs  i  PK]{<-__pycache__/archive_util.cpython-38.opt-1.pycnu[U e5d|!@sDdZddlZddlmZddlZz ddlZWnek rDdZYnXddlmZddl m Z ddl m Z ddl mZzddlmZWnek rdZYnXzdd lmZWnek rdZYnXd d Zd d Zd#ddZd$ddZedgdfedgdfedgdfedgdfedgdfegdfdZdd Zd%d!d"ZdS)&zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns a gid, given a group name.N)rKeyErrornameresultr./usr/lib64/python3.8/distutils/archive_util.py_get_gids  rcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns an uid, given a user name.Nr )rr r rrr_get_uid+s  rgzipcs.dddddd}dddd d }|d k r:||kr:td |d } |dkrZ| ||d7} ttj| |ddd l} t dt t fdd} |s| | d||} z| j|| dW5| X|dkr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. Zgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrNzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarrdry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinforgroupownerrrr _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropencloseaddrPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer(r tarZcompressed_namecmdrrr make_tarball7sB          r5c Cs|d}ttj||dtdkrp|r.d}nd}ztd|||g|dWn tk rjtd|YnXn8td|||sztj |d tj d }Wn&t k rtj |d tj d }YnX||tj krtjtj|d }|||td |t|D]\}} } | D]6} tjtj|| d }|||td |q| D]B} tjtj|| }tj|rV|||td |qVq W5QRX|S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.ziprNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr%r&r'zipfilerrrr)ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfile) r0r1r2rZ zip_filenameZ zipoptionsr6r&dirpathZdirnames filenamesr rrr make_zipfilesV          rB)rrzgzip'ed tar-file)rrzbzip2'ed tar-file)rrzxz'ed tar-file)rrzcompressed tar file)rNzuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr3r6cCs|D]}|tkr|SqdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatrrrcheck_archive_formatss rEc Cst}|dk r6td|tj|}|s6t||dkrDtj}d|i} z t|} Wn t k rxt d|YnX| d} | dD]\} } | | | <q|dkr|| d<|| d <z| ||f| }W5|dk rtd |t|X|S) aCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. Nzchanging into '%s'rzunknown archive format '%s'rr6rrzchanging back to '%s') r%getcwdrdebugr&abspathchdirr:rCr r#)r0rDZroot_dirr1r2rrrZsave_cwdkwargsZ format_infofuncargvalfilenamerrr make_archives2       rP)rrrNN)rr)NNrrNN)__doc__r%warningsrr.r8 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr5rBrCrErPrrrrsN            H =       PK]v )__pycache__/dep_util.cpython-38.opt-1.pycnu[U e5d @s6dZddlZddlmZddZddZd d d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCs`tj|s tdtj|tj|s0dSddlm}t||}t||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existrST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r */usr/lib64/python3.8/distutils/dep_util.pynewer s    rcCsht|t|krtdg}g}tt|D]2}t||||r,||||||q,||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r rnewer_pairwise srerrorcCstj|sdSddlm}t||}|D]P}tj|sb|dkrHn|dkrTq.n|dkrbdSt||}||kr.dSq.dS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rrrrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s    r)r)__doc__rZdistutils.errorsrrrrr r r rs  PK]I %__pycache__/core.cpython-38.opt-2.pycnu[U e5d"@sddlZddlZddlmZddlTddlmZddlmZddl m Z ddl m Z dZ d d Zdadad Zd Zd dZdddZdS)N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr&/usr/lib64/python3.8/distutils/core.py gen_usage s r) distclassr script_argsZoptionsnameversionZauthorZ author_emailZ maintainerZmaintainer_emailZurllicenseZ descriptionZlong_descriptionkeywordsZ platformsZ classifiersZ download_urlZrequiresZprovidesZ obsoletes)rZsourcesZ include_dirsZ define_macrosZ undef_macrosZ library_dirsZ librariesZruntime_library_dirsZ extra_objectsZextra_compile_argsZextra_link_argsZ swig_optsZexport_symbolsZdependsZlanguagec Ks|d}|r|d=nt}d|kr8tjtjd|d<d|krRtjdd|d<z||a}WnLtk r}z.d|krt d|nt d|d|fW5d}~XYnXt d kr|S| t rt d |t d kr|Sz |}Wn:tk r*}zt t|jd |W5d}~XYnXt rBt d |t dkrP|S|rz |Wntk rt dYntk r}z.t rtjd|fnt d|fW5d}~XYnBttfk r }zt rnt dt|W5d}~XYnX|S)Nrr rrrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)attrsklassZdistmsgokexcrrrsetup9sd%   (   "r,runc Cs|dkrtd|f|atj}d|i}zZzH|tjd<|dk rP|tjdd<t|d}t||W5QRXW5|t_daXWntk rYnXt dkrt d|t S)N)rrrr-z"invalid value for 'stop_after': %r__file__rrrbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?) ValueErrorr rrcopyopenexecreadrr RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups*    r8)Nr-)rrZdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr rZsetup_keywordsZextension_keywordsr,r8rrrr s      qPK]6122(__pycache__/_msvccompiler.cpython-38.pycnu[U e5dRN@sdZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZdd Zd d Zd d dddZddZddZdddZd ddddZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc CsztjtjdtjtjBd}Wn tk r>tdYdSXd}d}|tD]}zt ||\}}}Wntk rYqYnX|rT|tj krTt j |rTztt|}Wnttfk rYqTYnX|dkrT||krT||}}qTW5QRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredNNr)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivZvc_dirZvtversionr //usr/lib64/python3.8/distutils/_msvccompiler.py _find_vc2015s2     r"c Csddl}tjdptjd}|s(dSz8tjtj|dddd d d d d dddg ddd}Wntj t t fk r~YdSXtj|ddd}tj |rd|fSdS)aJReturns "15, path" based on the result of invoking vswhere.exe If no install is found, returns "None, None" The version is returned to avoid unnecessarily changing the function result. It may be ignored when the path is not None. If vswhere.exe is not available, by definition, VS 2017 is not installed. rNzProgramFiles(x86)Z ProgramFilesr zMicrosoft Visual StudioZ Installerz vswhere.exez-latestz -prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyZinstallationPathz -products*mbcsstrict)encodingerrorsZVCZ AuxiliaryZBuild) jsonrenvironget subprocess check_outputrjoinstripCalledProcessErrorrUnicodeDecodeErrorr)r)rootrr r r! _find_vc2017:s2  r3x86Zx64ZarmZarm64)r4 x86_amd64x86_arm x86_arm64cCs\t\}}|st\}}|s*tddStj|d}tj|sTtd|dS|dfS)Nz$No suitable Visual C++ version foundr z vcvarsall.batz%s cannot be found)r3r"r rrrr.isfile) plat_spec_rr vcvarsallr r r!_find_vcvarsallcs     r<c CstdrddtjDSt|\}}|s6tdz&tjd||tj dj ddd }Wn@tj k r}z t |jtd |jW5d}~XYnXd dd d |DD}|S)NZDISTUTILS_USE_SDKcSsi|]\}}||qSr lower).0rvaluer r r! wsz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r'zError executing {}cSs$i|]\}}}|r|r||qSr r=)r?rr:r@r r r!rAs css|]}|dVqdS)=N) partition)r?liner r r! sz_get_vc_env..)rgetenvr*itemsr<rr,r-formatZSTDOUTdecoder0r erroroutputcmd splitlines)r9r;r:outexcenvr r r! _get_vc_envus0     rScCsN|stdtj}|D].}tjtj||}tj|r|Sq|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rrHsplitpathseprr.abspathr8)Zexepathspfnr r r! _find_exes   rZr5r6r7)Zwin32z win-amd64z win-arm32z win-arm64c seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd(ddZd)ddZd*ddZd+ddZd,ddZd-ddZfddZd d!Zd"d#Zd$d%Zd.d&d'ZZS)/ MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer r r!r]szMSVCCompiler.__init__NcCs |jrtd|dkrt}|tkr6tdttt|}t|}|sRtd|dd|_ |j t j }t d||_t d||_t d||_t d ||_t d ||_t d ||_|d d t j D]}|r||t jq|d d t j D]}|r||t jqd|_ddddddg|_ddddddg|_dddg}ddddg}|d!|_|d"|_|d#|_|d$|_||_||_ t!j"df|jt!j"df|jt!j"d f|jt!j#df|jt!j#df|jt!j#d f|jt!j$df|jt!j$df|jt!j$d f|j i |_%d |_dS)%Nzdon't init multiple timesz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rd)rd)rerfrg)rerfrg)&r_AssertionErrorr PLAT_TO_VCVARSrrJtuplerSr+_pathsrTrrUrZcclinkerrcrcmcZmtZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionscompile_options_debugZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflags)r`r^r9Zvc_envrWdirldflagsZ ldflags_debugr r r! initializes           zMSVCCompiler.initializerbcsTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }|jqSr ) obj_extensionr?extr`r r!rA&sz1MSVCCompiler.object_filenames..csi|] }|jqSr ) res_extensionryr{r r!rA'srbcstj|\}}r"tj|}n2tj|\}}|tjjtjjfrT|dd}ztj||WSt k rt d |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithrqaltsepr. LookupErrorrrJ)rXbaserzr:)ext_map output_dir strip_dirr r! make_out_path,s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)r`Zsource_filenamesrrrr )rrr`rr!object_filenames!s zMSVCCompiler.object_filenamesc  Cs|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jd}| D]}z| |\}}Wntk rYqhYnX|rtj |}||j krd|}nD||j krd|}d}n*||j kr@|}d|}z||jg| ||gWqhtk r:}z t|W5d}~XYqhXqhn||jkrtj |}tj |}z\||jd|d||gtj tj |\}}tj ||d }||jd||gWqhtk r}z t|W5d}~XYqhXqhntd |||jg| | }|r"|d |||d |||z||Wqhtk r~}z t|W5d}~XYqhXqh| S) Nz/cFz/Tcz/TpTz/foz-hz-rr\z"Don't know how to compile {} to {}z/EHscz/Fo)r_rwZ_setup_compileappendextendrsrrKeyErrorrrrV _c_extensions_cpp_extensionsrspawnrnrrrdirnameror~rr.rJrl)r`ZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrzZ input_optZ output_optmsgZh_dirZrc_dirrr:Zrc_fileargsr r r!compileBsx               zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz,td|jd|| |jg|Wqt k r}z t |W5d}~XYqXn td|dS)N)r/OUT:Executing "%s" %s skipping %s (up-to-date)) r_rw_fix_object_argslibrary_filename _need_linkr rrcr.rrr) r`rZoutput_libnamerr target_langoutput_filenameZlib_argsrr r r!create_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|j || f}dd|pgD}||||d|g}tj |d} |dk r tj tj|\}}tj | ||}|d|| r| |dd<| r.|| tj tj|}||z,td|jd |||jg|Wn,tk r}z t|W5d}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r )r?Zsymr r r! sz%MSVCCompiler.link..rrz/IMPLIB:rrr)r_rwrZ _fix_lib_argswarnstrrrrr.rrtrr~rrrrrVZmkpathr rrmrrr)r`Z target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrvZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr r r!links`       zMSVCCompiler.linkc s8td}z|jtjd<t|WS|tjd<XdS)Nr)rrHr*rksuperr)r`rNZold_path __class__r r!rs   zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r r`rur r r!library_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)rrr r r!runtime_library_dir_option sz'MSVCCompiler.runtime_library_dir_optioncCs ||S)N)r)r`rcr r r!library_optionszMSVCCompiler.library_optioncCs\|r|d|g}n|g}|D]:}|D]0}tj|||}tj|r$|Sq$qdS)NZ_d)rrr.rr8)r`dirsrcrZ try_namesrunameZlibfiler r r!find_library_files zMSVCCompiler.find_library_file)rrr)N)rrb)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesrrrrrr|rxZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr]rwrrrrrrrrr __classcell__r r rr!r[sf   P " ]  E r[)N)rrZshutilstatr,rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r"r3ZPLAT_SPEC_TO_RUNTIMEr<rSrZrir[r r r r!s4   # PK]fIx*__pycache__/file_util.cpython-38.opt-2.pycnu[U e5d@sVddlZddlmZddlmZddddZdd d Zdd d ZdddZddZ dS)N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)Nhardsym@c Csd}d}ztzt|d}Wn4tk rN}ztd||jfW5d}~XYnXtj|rzt|Wn4tk r}ztd||jfW5d}~XYnXzt|d}Wn4tk r}ztd||jfW5d}~XYnXz| |}Wn6tk r(}ztd||jfW5d}~XYnX|s4q|z| |Wqtk rx}ztd||jfW5d}~XYqXqW5|r||r|XdS)Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) closeopenOSErrorrstrerrorospathexistsunlinkreadwrite)srcdstZ buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.8/distutils/file_util.py_copy_file_contentssL $     rcCsddlm}ddlm} m} m} m} tj |s %srr)Zdistutils.dep_utilrstatrrrrr risfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater+verbosedry_runrrrrrdiractionstrrr copy_fileCsV!               r5c Csddlm}m}m}m}m}ddl} |dkr:td|||rB|S||sVt d|||rrt j |||}n||rt d||f|||st d||fd} zt ||WnPtk r } z0| j\} } | | jkrd } nt d ||| fW5d} ~ XYnX| rt|||d zt |Wnhtk r} zH| j\} } zt |Wntk rpYnXt d |||| fW5d} ~ XYnX|S) Nr)rr r!r#r$rzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r0zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr r!r#r$errnorr)rr rr"renamer argsZEXDEVr5r)rrr0r1rr r!r#r$r6Zcopy_itrZnummsgrrr move_files`        r:cCs6t|d}z|D]}||dqW5|XdS)Nw )r r r)filenamecontentsflinerrr write_files  rA)r)rrrNrr)rr) r Zdistutils.errorsrZ distutilsrr&rr5r:rArrrrs    3 d ?PK]@c. __pycache__/log.cpython-38.pycnu[U e5d@sldZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dSN) threshold)selfr r %/usr/lib64/python3.8/distutils/log.py__init__sz Log.__init__cCs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }z| d|Wn:t k r|j }||d|}| d|YnX|dS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrr sysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs||||dSr)r#)r rr r!r r r log'szLog.logcGs|t||dSr)r#rr r r!r r r debug*sz Log.debugcGs|t||dSr)r#rr%r r r info-szLog.infocGs|t||dSr)r#rr%r r r warn0szLog.warncGs|t||dSr)r#rr%r r r error3sz Log.errorcGs|t||dSr)r#rr%r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r#r$r&r'r(r)r*r r r r rs rcCstj}|t_|Sr) _global_logr )roldr r r set_thresholdAsr0cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r0rrr)vr r r set_verbosityGs   r2)__doc__rrrrrrrr.r$r&r'r(r)r*r0r2r r r r s +PK]*)__pycache__/__init__.cpython-38.opt-2.pycnu[U e5d@s"ddlZejdejdZdS)N )sysversionindex __version__rr*/usr/lib64/python3.8/distutils/__init__.py sPK]O  $__pycache__/extension.cpython-38.pycnu[U e5d)@s.dZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@s"eZdZdZdddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKst|tstdt|tr.tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}dt|}d |}t|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr+/usr/lib64/python3.8/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs6              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*__doc__r'r,rrrrrs"C /rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}z^g}| } | dkrdq| | rpqP| d| dkrd krnn| d | qP|| |} || } | d} t | g} d} | ddD]}| dk r| |d} qtj|d}|dd }|d d}|d kr2| j |q|d krJ| j |q|dkr|d}|dkrz| j |dfn$| j |d|||d dfq|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr*| j} q|dkr<| j} q|dkrN| j} q|dkrr| j ||s| j} q|dkr| j |q| d|q| | qPW5|X|S)z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3closereadlinematchr#rappendospathsplitextrrfindrrrrrrrr)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                         rI)r.r=r"rrIrrrrs zPK]e9-+__pycache__/versionpredicate.cpython-38.pycnu[U e5d @sdZddlZddlZddlZedejZedZedZ ddZ ej ej ej ejejejdZGd d d Zdad d ZdS) zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t|}|std||\}}|tj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 2/usr/lib64/python3.8/distutils/versionpredicate.pysplitUps    r)z>=z!=c@s(eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|}|stdt|}|s.td||\|_}|}|rt|}|sbtd||d}dd|dD|_|jstd|ng|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s&     zVersionPredicate.__init__cCs8|jr.dd|jD}|jdd|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs(|jD]\}}t|||sdSqdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr#r%r r r r rs@rcCsdtdkrtdtja|}t|}|s8td||dpDd}|rVtj |}|d|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r3)r)r-Zdistutils.versionroperatorr.r/rrrrltleeqgtgener$rr,r3r r r r s"   nPK]T *__pycache__/text_file.cpython-38.opt-1.pycnu[U e5d0@s&dZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@steZdZdZddddddddZdddZd d Zd d Zdd dZdddZ dddZ ddZ ddZ ddZ dS)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.rstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtd|jD]0}||kr@t||||q"t|||j|q"|D]}||jkr\td|q\|dkr||n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsoptr+/usr/lib64/python3.8/distutils/text_file.py__init__Ns   zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.r)r rN)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|dS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}||jdt|ttfrD|dt|n|d||t|d|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|||dS)Nzerror: ) ValueErrorr'rr%r&rrrerrorszTextFile.errorcCs tjd|||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter'r)rrrwarnsz TextFile.warncCs|jr|jd}|jd=|Sd}|j}|dkr6d}|jr|r|d}|dkrTnX|dksl||ddkr|ddkr|dp~d}|d||}|dkrq n |d d}|jr|r|dkr|d |S|j r| }||}t |j t r |j dd|j d<n|j |j dg|_ n:|dkr,dSt |j t rL|j dd|_ n |j d|_ |jrr|jrr|}n"|jr| }n|jr|}|dks|dkr|jrq |jr|ddkr|dd}q |d dd kr|dd d}q |S) aURead and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.rN#rr\r+z\#z2continuation line immediately precedes end-of-filez\ )rrreadlinerfindstripreplacer r/r lstripr rr!rrrstripr)rr&Z buildup_lineposZeolrrrr4sf           zTextFile.readlinecCs(g}|}|dkr|S||qdS)zWRead and return the list of all logical lines remaining in the current file.N)r4r)rlinesr&rrr readliness zTextFile.readlinescCs|j|dS)zPush 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.N)rr)rr&rrr unreadlineszTextFile.unreadline)NN)N)N)N)__name__ __module__ __qualname____doc__r rrrr'r*r/r4r<r=rrrrr s$: !  x r)rAr,rrrrrrsPK]-'__pycache__/errors.cpython-38.opt-1.pycnu[U e5d @s8dZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N__name__ __module__ __qualname____doc__rr(/usr/lib64/python3.8/distutils/errors.pyr src@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).Nrrrrrr sr c@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.Nrrrrrr sr c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.Nrrrrrr sr c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.Nrrrrrr sr c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.Nrrrrrr $sr c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.Nrrrrrr*src@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.Nrrrrrr3src@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.Nrrrrrr8src@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).Nrrrrrr>src@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).NrrrrrrCsrc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.NrrrrrrHsrc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.NrrrrrrKsrc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.NrrrrrrOsrc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.NrrrrrrRsrc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.NrrrrrrUsrc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.NrrrrrrXsrc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.Nrrrrrr\src@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.Nrrrrrr`srN)r Exceptionrr r r r r rrrrrrrrrrrrrrrrrs&  PK]~//*__pycache__/file_util.cpython-38.opt-1.pycnu[U e5d@sZdZddlZddlmZddlmZddddZdd d Zdd dZdddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)Nhardsym@c Csd}d}ztzt|d}Wn4tk rN}ztd||jfW5d}~XYnXtj|rzt|Wn4tk r}ztd||jfW5d}~XYnXzt|d}Wn4tk r}ztd||jfW5d}~XYnXz| |}Wn6tk r(}ztd||jfW5d}~XYnX|s4q|z| |Wqtk rx}ztd||jfW5d}~XYqXqW5|r||r|XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) closeopenOSErrorrstrerrorospathexistsunlinkreadwrite)srcdstZ buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.8/distutils/file_util.py_copy_file_contentssL $     rcCsddlm}ddlm} m} m} m} tj |s %srr)Zdistutils.dep_utilrstatrrrrr risfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater+verbosedry_runrrrrrdiractionstrrr copy_fileCsV!               r5c Csddlm}m}m}m}m}ddl} |dkr:td|||rB|S||sVt d|||rrt j |||}n||rt d||f|||st d||fd } zt ||WnPtk r } z0| j\} } | | jkrd } nt d ||| fW5d} ~ XYnX| rt|||d zt |Wnhtk r} zH| j\} } zt |Wntk rpYnXt d |||| fW5d} ~ XYnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr r!r#r$Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r0zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr r!r#r$errnorr)rr rr"renamer argsZEXDEVr5r)rrr0r1rr r!r#r$r6Zcopy_itrZnummsgrrr move_files`        r:cCs6t|d}z|D]}||dqW5|XdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r r r)filenamecontentsflinerrr write_files  rA)r)rrrNrr)rr) __doc__r Zdistutils.errorsrZ distutilsrr&rr5r:rArrrrs"   3 d ?PK]~//$__pycache__/file_util.cpython-38.pycnu[U e5d@sZdZddlZddlmZddlmZddddZdd d Zdd dZdddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)Nhardsym@c Csd}d}ztzt|d}Wn4tk rN}ztd||jfW5d}~XYnXtj|rzt|Wn4tk r}ztd||jfW5d}~XYnXzt|d}Wn4tk r}ztd||jfW5d}~XYnXz| |}Wn6tk r(}ztd||jfW5d}~XYnX|s4q|z| |Wqtk rx}ztd||jfW5d}~XYqXqW5|r||r|XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) closeopenOSErrorrstrerrorospathexistsunlinkreadwrite)srcdstZ buffer_sizeZfsrcZfdsteZbufr+/usr/lib64/python3.8/distutils/file_util.py_copy_file_contentssL $     rcCsddlm}ddlm} m} m} m} tj |s %srr)Zdistutils.dep_utilrstatrrrrr risfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater+verbosedry_runrrrrrdiractionstrrr copy_fileCsV!               r5c Csddlm}m}m}m}m}ddl} |dkr:td|||rB|S||sVt d|||rrt j |||}n||rt d||f|||st d||fd } zt ||WnPtk r } z0| j\} } | | jkrd } nt d ||| fW5d} ~ XYnX| rt|||d zt |Wnhtk r} zH| j\} } zt |Wntk rpYnXt d |||| fW5d} ~ XYnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr r!r#r$Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r0zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr r!r#r$errnorr)rr rr"renamer argsZEXDEVr5r)rrr0r1rr r!r#r$r6Zcopy_itrZnummsgrrr move_files`        r:cCs6t|d}z|D]}||dqW5|XdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r r r)filenamecontentsflinerrr write_files  rA)r)rrrNrr)rr) __doc__r Zdistutils.errorsrZ distutilsrr&rr5r:rArrrrs"   3 d ?PK]ES&__pycache__/debug.cpython-38.opt-2.pycnu[U e5d@sddlZejdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr'/usr/lib64/python3.8/distutils/debug.pysPK]z%#__pycache__/__init__.cpython-38.pycnu[U e5d@s&dZddlZejdejdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr*/usr/lib64/python3.8/distutils/__init__.pys PK]xQ%udd(__pycache__/version.cpython-38.opt-1.pycnu[U e5d90@s>dZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@sJeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r||dSNparseselfvstringr )/usr/lib64/python3.8/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__strrr r r __repr__*szVersion.__repr__cCs||}|tkr|S|dkSNr_cmpNotImplementedrothercr r r __eq__-s zVersion.__eq__cCs||}|tkr|S|dkSrrrr r r __lt__3s zVersion.__lt__cCs||}|tkr|S|dkSrrrr r r __le__9s zVersion.__le__cCs||}|tkr|S|dkSrrrr r r __gt__?s zVersion.__gt__cCs||}|tkr|S|dkSrrrr r r __ge__Es zVersion.__ge__)N) r __module__ __qualname____doc__r rrrrrrr r r r rs rc@s<eZdZdZedejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|j|}|std||ddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s')rr) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr'majorminorZpatchr.Zprerelease_numr r r rs   zStrictVersion.parsecCsb|jddkr*dtt|jdd}ndtt|j}|jr^||jdt|jd}|S)Nr"r.r!)r-joinr+rr.rr r r __str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|jsB|jsBdS|jrR|jsRdS|jsb|jrbdS|jr|jr|j|jkr~dS|j|jkrdSdSndS)Nr!r) isinstancerr r-r.rrr r r rs&         zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIr&rr3rr r r r r ]s#  r c@sHeZdZdZedejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r||dSrrrr r r r .szLooseVersion.__init__c Cs^||_dd|j|D}t|D].\}}zt|||<Wq$tk rPYq$Xq$||_dS)NcSsg|]}|r|dkr|qS)r1r ).0xr r r 8sz&LooseVersion.parse..)r component_resplit enumerater,r(r-)rrZ componentsiobjr r r r3szLooseVersion.parsecCs|jSr)rrr r r r3CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))rrr r r rGszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrr4r!)r5rr;r-r6r r r rKs    zLooseVersion._cmp)N) r rrrr7r8r9r?r rr3rrr r r r r; s r;)rr7rr r;r r r r  s >/PK]^3^3-__pycache__/msvccompiler.cpython-38.opt-2.pycnu[U e5d \ @sddlZddlZddlmZmZmZmZmZddlm Z m Z m Z ddl m Z dZz,ddlZdZeZejZejZejZejZWnhek rz4ddlZddlZdZeZejZejZejZejZWnek re dYnXYnXerejejejej fZ!dd Z"d d Z#d d Z$GdddZ%ddZ&ddZ'ddZ(Gddde Z)e&dkr~e *de)Z+ddl,m)Z)ddl,m%Z%dS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnzt||}Wntk r$YdSXg}d}zt||}Wntk rTYqjYnX|||d7}q.|SNr) RegOpenKeyExRegError RegEnumKeyappend)basekeyhandleLikr./usr/lib64/python3.8/distutils/msvccompiler.py read_keys7s   rcCszt||}Wntk r$YdSXi}d}zt||\}}}Wntk rZYq~YnX|}t||t|<|d7}q.|Sr )r r RegEnumValuelower convert_mbcs)rrrdrnamevaluetyperrr read_valuesHs  r!cCs:t|dd}|dk r6z |d}Wntk r4YnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr]s  rc@s,eZdZddZddZddZddZd S) MacroExpandercCsi|_||dSN)macros load_macros)selfversionrrr__init__gszMacroExpander.__init__cCs2tD](}t||}|r|||jd|<q.qdS)Nz$(%s))HKEYSr!r))r+Zmacropathrrrrrr set_macroks  zMacroExpander.set_macroc Csd|}|d|dd|d|ddd}|d|d z*|d krX|d |d n|d |d Wn*tk r}z tdW5d}~XYnXd}tD]V}zt||}Wntk rYqYnXt|d}t|d||f} | d|jd<qdS)Nz%Software\Microsoft\VisualStudio\%0.1fZ VCInstallDirz \Setup\VCZ productdirZ VSInstallDirz \Setup\VSz Software\Microsoft\.NETFrameworkZ FrameworkDirZ installrootg@ZFrameworkSDKDirzsdkinstallrootv1.1ZsdkinstallrootaPython was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.z.Software\Microsoft\NET Framework Setup\Productrz%s\%sr,z$(FrameworkVersion)) r0KeyErrorrr.r rrr!r)) r+r,ZvsbaseZnetexcprhrrrrrr*rs,  zMacroExpander.load_macroscCs$|jD]\}}|||}q |Sr()r)itemsreplace)r+r&rvrrrsubszMacroExpander.subN)__name__ __module__ __qualname__r-r0r*r8rrrrr'fsr'cCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|dd d }|dkrd }|dkr||SdS) NzMSC v. r g$@r)sysr,findlensplitint)prefixrr&restZ majorVersionZ minorVersionrrrget_build_versions  rJcCs@d}tj|}|dkrdStjd|}tj|t||S)Nz bit (r<Intel))rCr,rDrE)rHrjrrrget_build_architectures  rNcCs0g}|D]"}tj|}||kr||q|Sr()osr/normpathr)pathsZ reduced_pathsr3Znprrrnormalize_and_reduce_pathss   rRc @seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd,ddZddZd-ddZd.ddZd/ddZd0ddZddZdd Zd!d"Zd1d#d$Zd%d&Zd2d(d)Zd*d+ZdS)3 MSVCCompilerZmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCsvt||||t|_t|_|jdkr\|jdkrHd|_t|j|_nd|_d|j|_ nd|jd|_ d|_ dS) NrKzSoftware\Microsoft\VisualStudiozSoftware\Microsoft\DevstudiozVisual Studio version %szMicrosoft SDK compiler %sr=F) rr-rJ_MSVCCompiler__versionrN_MSVCCompiler__arch_MSVCCompiler__rootr'_MSVCCompiler__macros_MSVCCompiler__product initialized)r+verboseZdry_runZforcerrrr-s  zMSVCCompiler.__init__cCsg|_dtjkrDdtjkrD|drDd|_d|_d|_d|_d|_nx| d|_t |jd krlt d |j |d|_|d|_|d|_|d|_|d|_| d | d z&tjdd D]}|j|qWntk rYnXt|j|_d |jtjd<d|_|jdkrPddddddg|_dddddddg|_n&ddddddg|_dddddddg|_dddg|_|jdkrddddg|_ndddddg|_dg|_d |_dS)!NZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer/rzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.libZinclude;rKz/nologoz/Oxz/MDz/W3z/GXz/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOrUz/INCREMENTAL:noz/DEBUGz /pdb:NoneT)_MSVCCompiler__pathsrOenvironfind_execclinkerr]rcmcget_msvc_pathsrErrZset_path_env_varrFrr1rRjoinZpreprocess_optionsrWcompile_optionscompile_options_debugldflags_sharedrVldflags_shared_debugZldflags_staticr[)r+r3rrr initializesr                zMSVCCompiler.initializecCs|dkr d}g}|D]}tj|\}}tj|d}|tj|d}||jkrbtd||rrtj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j q|S)Nrnr zDon't know how to compile %s)rOr/splitext splitdriveisabssrc_extensionsrbasename_rc_extensionsrrh res_extension_mc_extensions obj_extension)r+Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenames8s.        zMSVCCompiler.object_filenamesNc  Csp|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |j| D]}z| |\}}Wntk rYqdYnX|rtj |}||j krd|}nT||j krd|}n>||j kr<|}d|}z"||jg| |g|gWqdtk r6}z t|W5d}~XYqdXqdn||jkrtj |}tj |}zl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqdtk r}z t|W5d}~XYqdXqdntd||fd |}z&||jg| | ||g|Wqdtk rh}z t|W5d}~XYqdXqd| S) Nz/cz/Tcz/Tpz/foz-hz-rrTz"Don't know how to compile %s to %sz/Fo)r[rmZ_setup_compilerextendrjrir1rOr/abspath _c_extensions_cpp_extensionsrtspawnrdrrrvdirnamererorsrhrb)r+Zsourcesrxr)Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcryZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWs                   zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz||jg|Wqtk r}z t|W5d}~XYqXn t d|dS)N)rx/OUT:skipping %s (up-to-date)) r[rm_fix_object_argslibrary_filename _need_linkrr]rrr r) r+rZoutput_libnamerxr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}|pgD]}|d|q||||d|g}|dk rHtjtj|\}}tj tj|d||}|d|| rZ| |dd<| rj|| |tj|z||jg|Wn,tk r}z t|W5d}~XYnXn td|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:rrz/IMPLIB:r)r[rmrZ _fix_lib_argswarnstrr rOr/rhrrZ EXECUTABLErlrkrrorsrrr{Zmkpathrrcrrr r)r+Z target_descrrrxZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksj        zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:rr+dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz|jdkrt|j||dS||dSq>|jdkrtD]&}t|d|jdk r|dqqgS) Nz dirsrUz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr^r=z%s\6.0zIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrVrXr.r!rYr8rFr)r+r/platformrrrrrrrfKs,      zMSVCCompiler.get_msvc_pathscCs6|dkr|d}n ||}|r2d|tj|<dS)Nr]Zlibraryr^)rfrhrOr`)r+rr3rrrrgos   zMSVCCompiler.set_path_env_var)rrr)rrn)NNNrNNN)NrN) NNNNNrNNNN)r)r)r9r:r;Z compiler_typeZ executablesr}r~rtrvrrrurwZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr-rmrzrrrrrrrrarfrgrrrrrSsh  B  X  S  $rSg @z3Importing new compiler from distutils.msvc9compiler)rS)r')-rCrOZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr.rr!rr'rJrNrRrSrZOldMSVCCompilerZdistutils.msvc9compilerrrrr s^      - 9   PK]Uu$__pycache__/log.cpython-38.opt-2.pycnu[U e5d@shdZdZdZdZdZddlZGdddZeZejZej Z ej Z ej Z ej Z ej Z d d Zd d ZdS) Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dSN) threshold)selfr r %/usr/lib64/python3.8/distutils/log.py__init__sz Log.__init__cCs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }z| d|Wn:t k r|j }||d|}| d|YnX|dS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrr sysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs||||dSr)r#)r rr r!r r r log'szLog.logcGs|t||dSr)r#rr r r!r r r debug*sz Log.debugcGs|t||dSr)r#rr%r r r info-szLog.infocGs|t||dSr)r#rr%r r r warn0szLog.warncGs|t||dSr)r#rr%r r r error3sz Log.errorcGs|t||dSr)r#rr%r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r#r$r&r'r(r)r*r r r r rs rcCstj}|t_|Sr) _global_logr )roldr r r set_thresholdAsr0cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r0rrr)vr r r set_verbosityGs   r2)rrrrrrrr.r$r&r'r(r)r*r0r2r r r r s+PK] ,JJ(__pycache__/unixccompiler.cpython-38.pycnu[U &.e;@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedZarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execs@t|||\}}}td}|r6||kr6|||||fS)z'Remove standard library path from rpathZLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir __class__//usr/lib64/python3.8/distutils/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc Cs|d||}|\}}}t||} |j| } |r>| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |z| | Wn*t k r} z t | W5d} ~ XYnXdS)N-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr"r"r# preprocess^s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}z ||||d|g|Wn*tk rj}z t|W5d}~XYnXdS)Nr r$)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r"r"r#_compilexs  zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j rz||j |gWqt k r}z t |W5d}~XYqXn t d|dS)N) output_dirskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr@Zoutput_libnamer;rA target_langoutput_filenamer2r"r"r#create_static_libs$   zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|z|tjkr|jdd}n|jdd}| dkrr|jrrd}tj|ddkr@d}d||kr@|d7}q&tj||d kr\d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|W5d}~XYnXn td |dS) Nz%'output_dir' must be a string or Noner$z-grzc++env=Z ld_so_aixr r<)r=rr isinstancestrtype TypeErrorr(r)joinr?r@r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r rA)rZ target_descr@rCr;rrrZexport_symbolsrAr-r.Z build_temprBr/Zlib_optsZld_argsZlinkerioffsetr2r"r"r#linksZ       zUnixCCompiler.linkcCsd|S)N-Lr")rdirr"r"r#library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r")rZ compiler_namer"r"r#_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NCCrr rQZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rMrrr4r5rT)rrRrr"r"r#runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr")rlibr"r"r#library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkr|td}td|} | dkrrttd } n | d } |D] } t j | |} t j | |} t j | |}t j | |}tjdkrL| d s| d rL| d sLt j | | d d|} t j | | d d|} t j | | d d|}t j | | d d|}t j | rb| St j |rx|St j | r| St j |r|SqdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)rUrFz/System/z/usr/z /usr/local/)r>r4r5rrresearchr6Z_default_sysrootgroupr(r)rL startswithexists)rdirsrYrAZshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrRr[r\r^r]r"r"r#find_library_filesF        zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rDrPrSrTrXrZrf __classcell__r"r"r r#r -sb        B*r )__doc__r(r4r_Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r"r"r"r#s    PK] V*__pycache__/ccompiler.cpython-38.opt-1.pycnu[U e5dI@sdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd Zdd dZddddddZddZdddZddZddZdS)zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddZ dddgZ dqdd Zd d Zd d ZddZddZdrddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d.d/Z!dsd0d1Z"d2d3Z#d4d5Z$d6d7Z%d8d9Z&dtd:d;Z'dudd?Z)dvd@dAZ*dBZ+dCZ,dDZ-dwdEdFZ.dxdGdHZ/dydIdJZ0dzdKdLZ1dMdNZ2dOdPZ3dQdRZ4d{dSdTZ5d|dUdVZ6d}dXdYZ7d~dZd[Z8dd\d]Z9dd_d`Z:ddbdcZ;dddeZdjdkZ?dldmZ@ddodpZAdS) CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nczc++Zobjc).cz.ccz.cppz.cxxz.mrcCsb||_||_||_d|_g|_g|_g|_g|_g|_g|_ |j D]}| ||j |qFdSN) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrrrkeyr+/usr/lib64/python3.8/distutils/ccompiler.py__init__UszCCompiler.__init__cKs<|D]2}||jkr&td||jjf||||qdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dSr) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}|jD] }|d|kr"|S|d7}q dS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCs`|D]V}t|trFt|dkrFt|dts8|ddkrFt|dtstd|ddqdS)zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. )r*r*Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r&tuplelenr' TypeError)rZ definitionsr-rrr_check_macro_definitionss     z"CCompiler._check_macro_definitionscCs.||}|dk r|j|=|j||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) Nr.rappend)rr+r)r,rrr define_macros zCCompiler.define_macrocCs0||}|dk r|j|=|f}|j|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. Nr4)rr+r,Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|j|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr5rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. Nrrdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|j|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr5)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|j|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr5r8rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)rr<rrrset_library_dirs szCCompiler.set_library_dirscCs|j|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr5r8rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)rr<rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|j|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr5)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t ||}i} t t |D]B} || } || } t j | d} |t j | | | f| | <q||||| fS)z;Process arguments and decide which source files to compile.N%'output_dir' must be a string or None/'macros' (if supplied) must be a list of tuples6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr*)rr&r'r2rlistrr0object_filenamesgen_preprocess_optionsranger1ospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr,srcobjextrrr_setup_compile6s<   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrWdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. NrIrJrK)rr&r'r2rrMrr0)rrrrrrr_fix_compile_argsjs"   zCCompiler._fix_compile_argscCs|j||d}|ifS)a+Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. )r)rN)rrUrrVrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)zTypecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. z,'objects' must be a list or tuple of stringsNrI)r&rMr0r2rr')rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)a;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr&rMr0r2rr)rrrrrrr _fix_lib_argss,zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. Tnewer)ZmissingN)rrr)rr output_filerdrrr _need_links  zCCompiler._need_linkc Cs~t|ts|g}d}t|j}|D]V}tj|\}}|j|}z |j |}||kr`|}|}Wq"t k rvYq"Xq"|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r&rMr1language_orderrQrRrS language_mapgetindexr!) rrUZlangrjsourcebaser[ZextlangZextindexrrrdetect_languages    zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrkrerr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc  Csx|||||||\}} }} } || ||} | D]B} z| | \}}Wntk r\Yq0YnX|| ||| || q0| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepend/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )r\r_KeyError_compile)rrUrrrr]rnrorVrrWrXr^rZrYr[rrrcompiles6   zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrZrYr[r^rorWrrrrrCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerr] target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. NNotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsr]rnro build_temprurrrlinkis9zCCompiler.linkc Cs2|tj||j|dd||||||| | | | dS)Nshared)lib_type)r}r SHARED_LIBRARYlibrary_filename) rrrtrrrrr{r]rnror|rurrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|tj||||||||| | | | dSr)r}r SHARED_OBJECT) rrrzrrrrr{r]rnror|rurrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|tj|||||||d||| d| dSr)r}r EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrr]rnrorurrrlink_executables zCCompiler.link_executablecCstdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. Nrxr8rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. Nrxr8rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. Nrx)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}t|d} z*|D]} | d| q^| d|W5| Xz|j|g|d } Wntk rYd SXz|j| d ||d Wnt t fk rYd SXdS) zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNr T)textwz#include "%s" z=int main (int argc, char **argv) { %s(); return 0; } r;Fza.out)rr) tempfileZmkstemprQfdopenclosewritersZ CompileErrorrZ LinkErrorr2) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions<     zCCompiler.has_functioncCstdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. Nrx)rr=rr]rrrfind_library_file$szCCompiler.find_library_filecCs|dkr d}g}|D]|}tj|\}}tj|d}|tj|d}||jkrftd||f|rvtj|}|tj |||j q|S)Nrr*z"unknown file type '%s' (from '%s')) rQrRrS splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer5join obj_extension)rZsource_filenamesrLrZ obj_namesZsrc_namerlr[rrrrNOs"    zCCompiler.object_filenamescCs$|rtj|}tj|||jSr)rQrRrrshared_lib_extensionrrrLrrrrshared_object_filename`s z CCompiler.shared_object_filenamecCs(|rtj|}tj|||jp"dS)Nr)rQrRrr exe_extensionrrrrrfs zCCompiler.executable_filenamestaticc Cs`|dkrtdt||d}t||d}tj|\}}|||f} |rPd}tj||| S)N)rr~ZdylibZ xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)r!getattrrQrRsplitr) rr?rrLrZfmtr[r9rlfilenamerrrrls zCCompiler.library_filenamer*cCst|dSr)r r])rmsglevelrrrannounceszCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdSr)r r)rfuncargsrrrrrr szCCompiler.executecCst||jddSN)r)rr)rcmdrrrrszCCompiler.spawncCst|||jdSr)rr)rrYZdstrrrrszCCompiler.move_filecCst|||jddSr)rr)rr+moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r*)Nr*)r)Br# __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrrhrgr r%rr.r3r6r7r:r>r@rArBrCrDrErGrHr\r_r`rarbrcrfrmrprsrrrvrrrr}rrrrrrrrrNrrrrrrr rrrrrrrr s  $   +  "   D  A    , +      r ))zcygwin.*unix)posixr)ntmsvccCsV|dkrtj}|dkrtj}tD]0\}}t||dk sHt||dk r |Sq dS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rQr+rplatform_default_compilersrematch)Zosnamerpatterncompilerrrrget_default_compilers   r)Z unixccompilerZ UnixCCompilerzstandard UNIX-style compiler)Z _msvccompilerZ MSVCCompilerzMicrosoft Visual C++)cygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Z bcppcompilerZ BCPPCompilerzBorland C++ Compiler)rrcygwinZmingw32ZbcppcCsXddlm}g}tD] }|d|dt|dfq|||}|ddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr/zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr5sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss    rc Cs|dkrtj}z"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXz*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rQr+rrrqZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) ZplatrrrrZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers:    rcCsg}|D]}t|tr0dt|kr.dkss8       --PK]YyF&&#__pycache__/filelist.cpython-38.pycnu[U e5d 2@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejfd d Zd d ZdddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@s|eZdZdZdddZddZejfddZd d Z d d Z d dZ ddZ ddZ ddZddZdddZdddZdS) FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dSN)allfilesfiles)selfwarn debug_printr*/usr/lib64/python3.8/distutils/filelist.py__init__szFileList.__init__cCs ||_dSr)r )r r rrr set_allfiles#szFileList.set_allfilescCst||_dSr)findallr )r dirrrrr&szFileList.findallcCsddlm}|rt|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrrrrr )s zFileList.debug_printcCs|j|dSr)r append)r itemrrrr3szFileList.appendcCs|j|dSr)r extend)r itemsrrrr6szFileList.extendcCs<tttjj|j}g|_|D]}|jtjj|qdSr)sortedmapospathsplitr rjoin)r Zsortable_filesZ sort_tuplerrrsort9sz FileList.sortcCs@tt|jdddD]$}|j||j|dkr|j|=qdS)Nr)rangelenr )r irrrremove_duplicatesCszFileList.remove_duplicatescCs|}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSrr.0wrrr Wsz1FileList._parse_template_line..r")recursive-includerecursive-excludez,'%s' expects ...cSsg|] }t|qSrrr-rrrr0]s)graftprunez#'%s' expects a single zunknown action '%s')rr%rr)r lineZwordsactionpatternsr dir_patternrrr_parse_template_lineLs0      zFileList._parse_template_linecCs@||\}}}}|dkrV|dd||D]}|j|dds2td|q2n|dkr|dd||D]}|j|ddsvtd |qvn|d kr|d d||D]}|j|d dstd |qn^|dkr(|dd||D]"}|j|d dstd|qn|dkrv|d|d|f|D]$}|j||dsNtd||qNn|dkr|d|d|f|D]$}|j||dstd||qnx|dkr|d||jd|dswarning: no files found matching '%s' anywhere in distributionr+zglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionr1zrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'r2zrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r4zgraft z+warning: no directories found matching '%s'r5zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r:r r include_patternrr exclude_patternr)r r6r7r8rr9patternrrrprocess_template_linehs             zFileList.process_template_liner"rcCsld}t||||}|d|j|jdkr4||jD],}||r:|d||j|d}q:|S)aSelect strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform- dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return True if files are found, False otherwise. Fz%include_pattern: applying regex r'%s'Nz adding T)translate_patternr r@r rsearchr r)r r@r<r=is_regex files_found pattern_renamerrrr>s    zFileList.include_patterncCsrd}t||||}|d|jtt|jdddD]4}||j|r8|d|j||j|=d}q8|S)aRemove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return True if files are found, False otherwise. Fz%exclude_pattern: applying regex r'%s'r"r#z removing T)rBr r@r$r%r rC)r r@r<r=rDrErFr&rrrr?szFileList.exclude_pattern)NN)r"Nr)r"Nr)__name__ __module__ __qualname____doc__rrrcurdirrr rrr!r'r:rAr>r?rrrrrs     L ,rcCs&ddtj|ddD}ttjj|S)z% Find all files under 'path' css,|]$\}}}|D]}tj||VqqdSr)rrr )r.basedirsr filerrr sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsrrr_find_all_simples rUcCs6t|}|tjkr.tjtjj|d}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )start) rUrrL functoolspartialrrelpathrlist)rr Zmake_relrrrrs   rcCs8t|}tj}tjdkrd}d|}td||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?s  i  PK] R4$__pycache__/cmd.cpython-38.opt-2.pycnu[U e5dF@s^ddlZddlZddlZddlmZddlmZmZmZm Z m Z ddlm Z GdddZ dS)N)DistutilsOptionError)utildir_util file_util archive_utildep_utillogc@seZdZgZddZddZddZddZd d ZdBd dZ ddZ dCddZ ddZ dDddZ dEddZddZdFddZddZd d!Zd"d#Zd$d%ZdGd&d'ZdHd)d*Zd+d,Zd-d.Zd/d0ZdId1d2ZdJd4d5ZdKd6d7ZdLd8d9ZdMd:d;ZdNdd?Z dPd@dAZ!d S)QCommandcCsbddlm}t||std|jtkr0td||_|d|_ |j |_ d|_ d|_ d|_ dS)Nr) Distributionz$dist must be a Distribution instancezCommand is an abstract class)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r%/usr/lib64/python3.8/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|d|_dS)N)rfinalize_optionsrrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdSNz,abstract method -- subclass %s must overriderrr"rrrr{s zCommand.initialize_optionscCstd|jdSr$r%r"rrrr!s zCommand.finalize_optionsNcCsddlm}|dkr d|}|j||tjd|d}|jD]R\}}}||}|ddkrn|dd}t||}|j|d||ftjdqBdS) Nr) longopt_xlatezcommand options for '%s':)levelz =z%s = %s) Zdistutils.fancy_getoptr'get_command_nameannouncer INFOZ user_options translater)rheaderindentr'optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdSr$r%r"rrrruns z Command.runr cCst||dSNr)rmsgr(rrrr,szCommand.announcecCs&ddlm}|r"t|tjdS)Nr)DEBUG)Zdistutils.debugr7printsysstdoutflush)rr6r7rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr1whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs||d|dS)Nstring)rB)rr1r@rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||td|n6t|trTtdd|D}nd}|sltd||fdS)Nz,\s*|\s+css|]}t|tVqdSr5)r r>).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r>r=resplitlistallr)rr1rAokrrrensure_string_lists   zCommand.ensure_string_listcCs6||||}|dk r2||s2td|||fdS)Nzerror in '%s' option: )rBr)rr1Ztesterr?Z error_fmtr@rArrr_ensure_tested_strings zCommand._ensure_tested_stringcCs||tjjdddS)Nfilenamez$'%s' does not exist or is not a file)rNospathisfilerr1rrrensure_filenames zCommand.ensure_filenamecCs||tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rNrPrQisdirrSrrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrWr__name__r"rrrr+ s zCommand.get_command_namecGsF|j|}||D](\}}t||dkrt||t||qdSr5)rget_command_objr#rr=)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss   zCommand.set_undefined_optionscCs|j||}||Sr5)rrZr#)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|j||Sr5)rreinitialize_command)rr\Zreinit_subcommandsrrrr^0szCommand.reinitialize_commandcCs|j|dSr5)r run_command)rr\rrrr_4szCommand.run_commandcCs2g}|jD]"\}}|dks"||r ||q |Sr5) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s  zCommand.get_sub_commandscCstd||dS)Nzwarning: %s: %s )r warnr+)rr6rrrrdKsz Command.warncCstj||||jddSNr)rexecuter)rfuncargsr6r(rrrrgNszCommand.executecCstj|||jddSre)rmkpathr)rnamemoderrrrkQszCommand.mkpathc Cstj|||||j ||jdSre)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr(rrrrnTs  zCommand.copy_filec Cstj||||||j |jdSre)r copy_treerr)rrorprqrrZpreserve_symlinksr(rrrrt]s  zCommand.copy_treecCstj|||jdSre)r move_filer)rsrcZdstr(rrrrufszCommand.move_filecCs ddlm}||||jddS)Nr)spawnrf)Zdistutils.spawnrwr)rcmdZ search_pathr(rwrrrrwjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirryrzrrrr{os  zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|d|f}|jsdt||rv| ||||n t |dS)Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r>rJtupler joinrrZ newer_grouprgr debug)rZinfilesrprhriZexec_msgZskip_msgr(rrr make_fileus  zCommand.make_file)Nr&)r )N)N)N)r )r)Nr )rj)r r Nr )r r rr )r )r r )NNNN)NNr )"rY __module__ __qualname__r`rrr#rr!r3r4r,r<rBrDrMrNrTrVr+r[r]r^r_rcrdrgrkrnrtrurwr{rrrrrr sX0             r ) r9rPrHZdistutils.errorsrZ distutilsrrrrrr r rrrrs  PK]%E,}}-__pycache__/bcppcompiler.cpython-38.opt-1.pycnu[U e5dW:@sxdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zdd dZdddZdddZd ddZd!ddZd"ddZd#ddZdS)$ BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCst||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer./usr/lib64/python3.8/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |j| D]<} z| | \}}Wntk rYqRYnXtj|}tj| } | tj | |dkrqR|dkrz| dd| |gWqRt k r}z t |W5d}~XYqRXqR||jkrd}n||jkr*d}nd}d| }z,| |jg| | ||g||gWqRt k r}z t |W5d}~XYqRXqR| S) Nz-c.res.rcZbrcc32z-foz-P-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsV            zBCPPCompiler.compilec Cs|||\}}|j||d}|||r~|dg|}|r:z||jg|Wqtk rz}z t|W5d}~XYqXn td|dS)N)r-z/uskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr*rrrr r0) rr3Zoutput_libnamer-r0 target_langoutput_filenameZlib_argsr8rrrcreate_static_libs   zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||dk rNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntj|\}}tj|\}}tj|d}tj|d|}dg}|pgD]}|d||fq|t||fd |ttjj|}|g}g}|D]>}tjtj|\}}|d kr||n ||q`|D]}|d tj|q|d |||d |g|d|D]4}|||| }|dkr||n ||q|d|d|d |g|d ||| rp| |dd<| r|| |tj|z||jg|Wn,tk r}z t|W5d}~XYnXn td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32r rz%s.defZEXPORTSz %s=_%sz writing %srz/L%sz/L.,z,,Zimport32Zcw32mtr:) r;Z _fix_lib_argsr warnstrr%r&joinr=rZ EXECUTABLErrrrsplitsplitextr)r"Zexecuter mapr'normcaser#find_library_filer(r*rrrr0) rZ target_descr3r?r-Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr0r1r2Z build_tempr>Z startup_objZld_argsZdef_fileheadtailmodnamer7Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler8rrrlinks                zBCPPCompiler.linkc Csr|r"|d}|d|d||f}n |d|f}|D]:}|D]0}tj|||}tj|r:|Sq:q2dS)NZ_dZ_bcpp)r%r&rDr<exists) rdirsrr0ZdlibZ try_namesdirnamerQrrrrI4s   zBCPPCompiler.find_library_filer cCs|dkr d}g}|D]}tjtj|\}}||jddgkrRtd||f|rbtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j q|S)Nr rrz"unknown file type '%s' (from '%s')) r%r&rFrHsrc_extensionsrbasenamer"rD obj_extension)rZsource_filenamesZ strip_dirr-Z obj_namesZsrc_namerOr7rrrobject_filenamesNs&  zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dk r>| d||rN|| dd<|r\| || ||js~|dks~t||r|r|tj |z| | Wn2t k r} zt | t | W5d} ~ XYnXdS)Nz cpp32.exer!r)Z_fix_compile_argsr r"r#rr r(r%r&r)r*rprintr) rsourceZ output_filer.r/r1r2_r4Zpp_argsr8rrr preprocessis&      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr )NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr+r,rWrYZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr9r@rRrIrZr^rrrrrsb   D    r)rbr%Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs    PK]e9-1__pycache__/versionpredicate.cpython-38.opt-1.pycnu[U e5d @sdZddlZddlZddlZedejZedZedZ ddZ ej ej ej ejejejdZGd d d Zdad d ZdS) zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t|}|std||\}}|tj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 2/usr/lib64/python3.8/distutils/versionpredicate.pysplitUps    r)z>=z!=c@s(eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|}|stdt|}|s.td||\|_}|}|rt|}|sbtd||d}dd|dD|_|jstd|ng|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s&     zVersionPredicate.__init__cCs8|jr.dd|jD}|jdd|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs(|jD]\}}t|||sdSqdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr#r%r r r r rs@rcCsdtdkrtdtja|}t|}|s8td||dpDd}|rVtj |}|d|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r3)r)r-Zdistutils.versionroperatorr.r/rrrrltleeqgtgener$rr,r3r r r r s"   nPK]U.__pycache__/unixccompiler.cpython-38.opt-2.pycnu[U &.e;@sddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z m Z mZmZddlmZejdkrzddlZGdd d eZdS) N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedZarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execs@t|||\}}}td}|r6||kr6|||||fS)NZLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir __class__//usr/lib64/python3.8/distutils/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc Cs|d||}|\}}}t||} |j| } |r>| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |z| | Wn*t k r} z t | W5d} ~ XYnXdS)N-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr"r"r# preprocess^s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}z ||||d|g|Wn*tk rj}z t|W5d}~XYnXdS)Nr r$)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r"r"r#_compilexs  zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j rz||j |gWqt k r}z t |W5d}~XYqXn t d|dS)N) output_dirskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr@Zoutput_libnamer;rA target_langoutput_filenamer2r"r"r#create_static_libs$   zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|z|tjkr|jdd}n|jdd}| dkrr|jrrd}tj|ddkr@d}d||kr@|d7}q&tj||d kr\d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|W5d}~XYnXn td |dS) Nz%'output_dir' must be a string or Noner$z-grzc++env=Z ld_so_aixr r<)r=rr isinstancestrtype TypeErrorr(r)joinr?r@r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r rA)rZ target_descr@rCr;rrrZexport_symbolsrAr-r.Z build_temprBr/Zlib_optsZld_argsZlinkerioffsetr2r"r"r#linksZ       zUnixCCompiler.linkcCsd|S)N-Lr")rdirr"r"r#library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r")rZ compiler_namer"r"r#_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NCCrr rQZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rMrrr4r5rT)rrRrr"r"r#runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr")rlibr"r"r#library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkr|td}td|} | dkrrttd } n | d } |D] } t j | |} t j | |} t j | |}t j | |}tjdkrL| d s| d rL| d sLt j | | d d|} t j | | d d|} t j | | d d|}t j | | d d|}t j | rb| St j |rx|St j | r| St j |r|SqdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)rUrFz/System/z/usr/z /usr/local/)r>r4r5rrresearchr6Z_default_sysrootgroupr(r)rL startswithexists)rdirsrYrAZshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrRr[r\r^r]r"r"r#find_library_filesF        zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rDrPrSrTrXrZrf __classcell__r"r"r r#r -sb        B*r )r(r4r_Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r"r"r"r#s    PK]u3&3&)__pycache__/filelist.cpython-38.opt-1.pycnu[U e5d 2@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejfd d Zd d ZdddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@s|eZdZdZdddZddZejfddZd d Z d d Z d dZ ddZ ddZ ddZddZdddZdddZdS) FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dSN)allfilesfiles)selfwarn debug_printr*/usr/lib64/python3.8/distutils/filelist.py__init__szFileList.__init__cCs ||_dSr)r )r r rrr set_allfiles#szFileList.set_allfilescCst||_dSr)findallr )r dirrrrr&szFileList.findallcCsddlm}|rt|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrrrrr )s zFileList.debug_printcCs|j|dSr)r append)r itemrrrr3szFileList.appendcCs|j|dSr)r extend)r itemsrrrr6szFileList.extendcCs<tttjj|j}g|_|D]}|jtjj|qdSr)sortedmapospathsplitr rjoin)r Zsortable_filesZ sort_tuplerrrsort9sz FileList.sortcCs@tt|jdddD]$}|j||j|dkr|j|=qdS)Nr)rangelenr )r irrrremove_duplicatesCszFileList.remove_duplicatescCs|}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSrr.0wrrr Wsz1FileList._parse_template_line..r")recursive-includerecursive-excludez,'%s' expects ...cSsg|] }t|qSrrr-rrrr0]s)graftprunez#'%s' expects a single zunknown action '%s')rr%rr)r lineZwordsactionpatternsr dir_patternrrr_parse_template_lineLs0      zFileList._parse_template_linecCs@||\}}}}|dkrV|dd||D]}|j|dds2td|q2n|dkr|dd||D]}|j|ddsvtd |qvn|d kr|d d||D]}|j|d dstd |qn^|dkr(|dd||D]"}|j|d dstd|qn|dkrv|d|d|f|D]$}|j||dsNtd||qNn|dkr|d|d|f|D]$}|j||dstd||qnx|dkr|d||jd|dswarning: no files found matching '%s' anywhere in distributionr+zglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionr1zrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'r2zrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r4zgraft z+warning: no directories found matching '%s'r5zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r:r r include_patternrr exclude_patternr)r r6r7r8rr9patternrrrprocess_template_linehs             zFileList.process_template_liner"rcCsld}t||||}|d|j|jdkr4||jD],}||r:|d||j|d}q:|S)aSelect strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform- dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return True if files are found, False otherwise. Fz%include_pattern: applying regex r'%s'Nz adding T)translate_patternr r@r rsearchr r)r r@r<r=is_regex files_found pattern_renamerrrr>s    zFileList.include_patterncCsrd}t||||}|d|jtt|jdddD]4}||j|r8|d|j||j|=d}q8|S)aRemove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return True if files are found, False otherwise. Fz%exclude_pattern: applying regex r'%s'r"r#z removing T)rBr r@r$r%r rC)r r@r<r=rDrErFr&rrrr?szFileList.exclude_pattern)NN)r"Nr)r"Nr)__name__ __module__ __qualname____doc__rrrcurdirrr rrr!r'r:rAr>r?rrrrrs     L ,rcCs&ddtj|ddD}ttjj|S)z% Find all files under 'path' css,|]$\}}}|D]}tj||VqqdSr)rrr )r.basedirsr filerrr sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsrrr_find_all_simples rUcCs6t|}|tjkr.tjtjj|d}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )start) rUrrL functoolspartialrrelpathrlist)rr Zmake_relrrrrs   rcCs8t|}tj}tjdkrd}d|}td||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?t|}nd}|dk rt|}|t|t|t|}tj} tjdkrd} |t|t|t|}d||| ||f}n|rd||t|df}t|S)aTranslate a shell-like wildcard pattern to a compiled regular expression. Return the compiled regex. If 'is_regex' true, then 'pattern' is directly compiled to a regex (if it's a string) or just returned as-is (assumes it's a regex object). _Nr[z\\z%s\A%s%s.*%s%sz%s\A%s) isinstancestrr_compilera partitionr%rr^) r@r<r=rDrVrbendrFZ prefix_rer^rrrrB%s(   rB)r"Nr)rKrr_r\rWZdistutils.utilrZdistutils.errorsrrZ distutilsrrrUrLrrarBrrrrs  i  PK] d"~6~6$__pycache__/cmd.cpython-38.opt-1.pycnu[U e5dF@sbdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ dS)ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_utillogc@s"eZdZdZgZddZddZddZdd Zd d Z dCddZ ddZ dDddZ ddZ dEddZdFddZddZdGddZdd Zd!d"Zd#d$Zd%d&ZdHd'd(ZdId*d+Zd,d-Zd.d/Zd0d1ZdJd2d3ZdKd5d6ZdLd7d8ZdMd9d:ZdNd;d<ZdOd=d>Z dPd?d@Z!dQdAdBZ"d S)RCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsbddlm}t||std|jtkr0td||_|d|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r%/usr/lib64/python3.8/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|d|_dS)N)rfinalize_optionsrrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. ,abstract method -- subclass %s must overrideNrrr"rrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. r$Nr%r"rrrr!s zCommand.finalize_optionsNcCsddlm}|dkr d|}|j||tjd|d}|jD]R\}}}||}|ddkrn|dd}t||}|j|d||ftjdqBdS) Nr) longopt_xlatezcommand options for '%s':)levelz =z%s = %s) Zdistutils.fancy_getoptr'get_command_nameannouncer INFOZ user_options translater)rheaderindentr'optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. r$Nr%r"rrrruns z Command.runr cCst||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. Nr)rmsgr(rrrr,szCommand.announcecCs&ddlm}|r"t|tjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr6printsysstdoutflush)rr5r6rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr1whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs||d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)rA)rr1r?rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||td|n6t|trTtdd|D}nd}|sltd||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdSN)r r=).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r=r<resplitlistallr)rr1r@okrrrensure_string_lists   zCommand.ensure_string_listcCs6||||}|dk r2||s2td|||fdS)Nzerror in '%s' option: )rAr)rr1Ztesterr>Z error_fmtr?r@rrr_ensure_tested_strings zCommand._ensure_tested_stringcCs||tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rNospathisfilerr1rrrensure_filenames zCommand.ensure_filenamecCs||tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rNrPrQisdirrSrrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrWr__name__r"rrrr+ s zCommand.get_command_namecGsF|j|}||D](\}}t||dkrt||t||qdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr#rr<)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss   zCommand.set_undefined_optionscCs|j||}||S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrZr#)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|j||SrD)rreinitialize_command)rr\Zreinit_subcommandsrrrr^0szCommand.reinitialize_commandcCs|j|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rr\rrrr_4szCommand.run_commandcCs2g}|jD]"\}}|dks"||r ||q |S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s  zCommand.get_sub_commandscCstd||dS)Nzwarning: %s: %s )r warnr+)rr5rrrrdKsz Command.warncCstj||||jddSNr)rexecuter)rfuncargsr5r(rrrrgNszCommand.executecCstj|||jddSre)rmkpathr)rnamemoderrrrkQszCommand.mkpathc Cstj|||||j ||jdS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)rf)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr(rrrrnTs  zCommand.copy_filec Cstj||||||j |jdS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. rf)r copy_treerr)rrorprqrrZpreserve_symlinksr(rrrrt]s  zCommand.copy_treecCstj|||jdS)z$Move a file respecting dry-run flag.rf)r move_filer)rsrcZdstr(rrrrufszCommand.move_filecCs ddlm}||||jddS)z2Spawn an external command respecting dry-run flag.r)spawnrfN)Zdistutils.spawnrwr)rcmdZ search_pathr(rwrrrrwjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirryrzrrrr{os  zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|d|f}|jsdt||rv| ||||n t |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r=rJtupler joinrrZ newer_grouprgr debug)rZinfilesrprhriZexec_msgZskip_msgr(rrr make_fileus  zCommand.make_file)Nr&)r )N)N)N)r )r)Nr )rj)r r Nr )r r rr )r )r r )NNNN)NNr )#rY __module__ __qualname____doc__r`rrr#rr!r3r4r,r;rArCrMrNrTrVr+r[r]r^r_rcrdrgrkrnrtrurwr{rrrrrr sZ0             r )rr8rPrHZdistutils.errorsrZ distutilsrrrrrr r rrrrs   PK]ES&__pycache__/debug.cpython-38.opt-1.pycnu[U e5d@sddlZejdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr'/usr/lib64/python3.8/distutils/debug.pysPK]O  *__pycache__/extension.cpython-38.opt-1.pycnu[U e5d)@s.dZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@s"eZdZdZdddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKst|tstdt|tr.tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}dt|}d |}t|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr+/usr/lib64/python3.8/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs6              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*__doc__r'r,rrrrrs"C /rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}z^g}| } | dkrdq| | rpqP| d| dkrd krnn| d | qP|| |} || } | d} t | g} d} | ddD]}| dk r| |d} qtj|d}|dd }|d d}|d kr2| j |q|d krJ| j |q|dkr|d}|dkrz| j |dfn$| j |d|||d dfq|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr*| j} q|dkr<| j} q|dkrN| j} q|dkrr| j ||s| j} q|dkr| j |q| d|q| | qPW5|X|S)z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3closereadlinematchr#rappendospathsplitextrrfindrrrrrrrr)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                         rI)r.r=r"rrIrrrrs zPK]kLjGsbsb%__pycache__/dist.cpython-38.opt-2.pycnu[U e5d@sddlZddlZddlZddlmZz ddlZWnek rHdZYnXddlTddlm Z m Z ddl m Z m Z mZddlmZddlmZedZd d ZGd d d ZGd ddZddZdS)N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escapelog)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$cCsLt|tr nZd?d@ZdAdBZdcdCdDZdddEdFZdedHdIZejfdJdKZdLdMZdNdOZdPdQZ dRdSZ!dTdUZ"dVdWZ#dXdYZ$dZd[Z%d\d]Z&d^d_Z'd S)f Distribution)verbosevzrun verbosely (default))quietqz!run quietly (turns verbosity off))zdry-runnzdon't actually do anything)helphzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package )z help-commandsNzlist all available commands)nameNzprint package name)versionVzprint package version)fullnameNzprint -)authorNzprint the author's name) author-emailNz print the author's email address) maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)contactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)urlNzprint the URL for this package)licenseNz print the license of the package)licenceNzalias for --license) descriptionNzprint the package description)zlong-descriptionNz"print the long package description) platformsNzprint the list of platforms) classifiersNzprint the list of classifiers)keywordsNzprint the list of keywords)providesNz+print the list of packages/modules provided)requiresNz+print the list of packages/modules required) obsoletesNz0print the list of packages/modules made obsoletecCsg|]}t|dqS)rr).0xrrr szDistribution.rrNcCs\d|_d|_d|_|jD]}t||dqt|_|jjD] }d|}t||t|j|q:i|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|d}|dk r8|d=|D]4\}}| |}|D]\} } d| f|| <qqd|kr~|d|d<|d=d } t!dk rnt!"| nt#j$%| d |D]\} } t&|jd | rt|jd | | nNt&|j| rt|j| | n0t&|| rt|| | nd t'| } t!"| qd |_(|j dk rP|j D].} | )ds6qP| dkr d|_(qPq |*dS)Nrrget_optionsz setup scriptr+r*z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+rdry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfattrsattrbasenameZ method_namer9commandZ cmd_optionsopt_dictoptvalrkeyargrrr__init__s~                   zDistribution.__init__cCs&|j|}|dkr"i}|j|<|SN)rGrQ)r^rbdictrrrrS&s zDistribution.get_option_dictr8c Csddlm}|dkr"t|j}|dk r@||||d}|sV||ddS|D]h}|j|}|dkr||d|qZ||d|||}|dD]}||d|qqZdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:r:)ZpprintrksortedrGkeysannouncerQsplit) r^headercommandsindentrkZcmd_namercoutlinerrrdump_option_dicts1s*  zDistribution.dump_option_dictscCsg}ttjtjdj}tj|d}tj|rB| |tj dkrRd}nd}|j rtjtj d|}tj|r| |d}tj|r| |t r|dd ||S) N distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerVmodules__file__joinisfileappendr!r[ expanduserr rn)r^filesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerrrfind_config_filesMs&       zDistribution.find_config_filesc Csddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|}trb|d|}|D]}tr|d|| || D]V}| |}| |}|D]8} | dkr| |kr| || } | dd} || f|| <qq|qld|jkr|jdD]\} \} } |j | } zF| rDt|| t|  n(| dkr`t|| t| n t|| | Wn,tk r} z t| W5d} ~ XYnXqdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %srr;_global)rr<)Z configparserrrVr base_prefix frozensetrr rnreadZsectionsr9rSrQreplacerhrGrR negative_optr>r ValueErrorDistutilsOptionError)r^ filenamesrZignore_optionsparserfilenameZsectionr9rcrdresrcaliasrrrrparse_config_files}s^             zDistribution.parse_config_filescCs|}g|_t||j}||j|ddi|j|j|d}| }t |j | |rhdS|r|||}|dkrhdSqh|jr|j|t|jdk|jddS|jstddS)Nr+r*)argsobjectrdisplay_optionsrqzno commands suppliedT)_get_toplevel_optionsrqrrset_negative_aliasesrZ set_aliasesgetoptrFZget_option_orderr Z set_verbosityrhandle_display_options_parse_command_optsr _show_helplenDistutilsArgError)r^Ztoplevel_optionsrr option_orderrrrparse_command_lines.      zDistribution.parse_command_linecCs |jdgS)N)zcommand-packages=Nz0list of packages that provide distutils commands)global_optionsr^rrrrsz"Distribution._get_toplevel_optionsc Csddlm}|d}t|s*td||j|z||}Wn*tk rn}z t |W5d}~XYnXt ||st d|t |drt |jtsd}t |||j}t |dr|}||jt |drt |jtrt|j}ng}||j|j|||||d d\}} t | d rV| jrV|j|d|gd dSt |drt |jtrd} |jD]F\} } } }t | || rzd } t|r|nt d || fqz| rdS||}t| D]\}}d |f||<q|S)NrCommandzinvalid command name '%s'z&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrrrzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrqrget_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrYr rrrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablerSvarsrR)r^rrrrbZ cmd_classrrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncrcr!rrrrrsr                  z Distribution._parse_command_optscCsPdD]F}t|j|}|dkrqt|trdd|dD}t|j||qdS)Nr/r-cSsg|] }|qSrstrip)r4Zelmrrrr6jsz1Distribution.finalize_options..,)rBr@r rror>)r^r`rrrrr]`s  zDistribution.finalize_optionsrc Csddlm}ddlm}|rR|r*|}n|j}||||jdt d|rt||j |dt d|j D]z}t |t rt||r|} n ||} t| drt | jtr|| jt| jn || j|d| jt dqzt ||jdS) Nr gen_usagerz Global options:r8zKInformation display options (just display information, ignore any commands)rzOptions for '%s' command:)distutils.corerrrrrrZ print_help common_usageprintrrqr rrrrYrrrrrrE) r^rrrrqrrr9rbklassrrrrms:           zDistribution._show_helpc Csddlm}|jr4|tdt||jdSd}i}|jD]}d||d<qB|D]l\}}|rX||rXt|}t |j d|}|dkrtd |n |dkrtd |nt|d}qX|S) Nrrr8rr7rr)r.r0r1r2r:) rrZ help_commandsprint_commandsrrErrQrrBr@r~) r^rrZany_display_optionsZis_display_optionoptionrdrerrrrrs*   z#Distribution.handle_display_optionsc Csjt|d|D]T}|j|}|s.||}z |j}Wntk rPd}YnXtd|||fqdS)N:(no description available)z %-*s %s)rrCrQrr,AttributeError)r^rqrp max_lengthcmdrr,rrrprint_command_lists     zDistribution.print_command_listcCsddl}|jj}i}|D] }d||<qg}|jD]}||s4||q4d}||D]}t||krZt|}qZ||d||rt ||d|dS)NrrzStandard commandszExtra commands) distutils.commandrb__all__rCrmrQrrrr)r^rv std_commandsis_stdrextra_commandsrrrrrs.      zDistribution.print_commandsc Csddl}|jj}i}|D] }d||<qg}|jD]}||s4||q4g}||D]P}|j|}|sx||}z |j}Wnt k rd}YnX|||fqZ|S)Nrrr) rrbrrCrmrQrrr,r) r^rvrrrrrvrr,rrrget_command_lists(         zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|dD}d|krD|dd||_|S)Nr8cSsg|]}|dkr|qS)r8r)r4Zpkgrrrr6!sz5Distribution.get_command_packages..rzdistutils.commandr)rDr rroinsert)r^Zpkgsrrrget_command_packagess  z!Distribution.get_command_packagesc Cs|j|}|r|S|D]}d||f}|}zt|tj|}Wntk r^YqYnXzt||}Wn&tk rt d|||fYnX||j|<|St d|dS)Nz%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s') rCrQr __import__rVr| ImportErrorrBrr)r^rbrZpkgnameZ module_nameZ klass_namemodulerrrr's,      zDistribution.get_command_classcCsl|j|}|sh|rhtr&|d|||}||}|j|<d|j|<|j|}|rh||||S)Nz.z1error in %s: command '%s' has no such option '%s')get_command_namerSr rnrRZboolean_optionsrrr rr>rrYrr) r^rOZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringrrrrrhsF           z!Distribution._set_command_optionsrcCs|ddlm}t||s&|}||}n|}|js8|S|d|_d|j|<|||rx| D]}| ||qf|S)Nrr) rrr rrZ finalizedZinitialize_optionsrPrZget_sub_commandsreinitialize_command)r^rbZreinit_subcommandsrrsubrrrrs      z!Distribution.reinitialize_commandcCst||dSrir )r^rlevelrrrrnszDistribution.announcecCs|jD]}||qdSri)rq run_command)r^rrrr run_commandss zDistribution.run_commandscCsD|j|rdStd|||}||d|j|<dS)Nz running %sr)rPrQr inforZensure_finalizedrun)r^rbrrrrrs   zDistribution.run_commandcCst|jp|jpgdkSNr)rrHrIrrrrhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkSr)rLrrrrrhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkSr)rJrrrrrhas_c_librariesszDistribution.has_c_librariescCs|p|Sri)rrrrrr has_modulesszDistribution.has_modulescCs|jot|jdkSr)rKrrrrr has_headersszDistribution.has_headerscCs|jot|jdkSr)rMrrrrr has_scriptsszDistribution.has_scriptscCs|jot|jdkSr)rNrrrrrhas_data_filesszDistribution.has_data_filescCs|o| o| Sri)rrrrrrris_pures zDistribution.is_pure)N)NNr8)N)r)N)r)(r __module__ __qualname__rrrr=rrhrSrurrrrrr]rrrrrrrrrrr INFOrnrrrrrrrrrrrrrrr,s  ,  0 :C [  2(!" &  , ) rc@seZdZdZdAddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"ZeZd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dS)Br?)r!r"r% author_emailr'maintainer_emailr)r*r,long_descriptionr/r-r$r(Z contact_emailr. download_urlr0r1r2NcCs|dk r|t|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dSri) read_pkg_fileopenr!r"r%rr'rr)r*r,rr/r-r.rr0r1r2)r^rzrrrrh s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d|_|d |_d|_|d |_|d |_ d kr|d |_ nd|_ |d|_ |d|_dkr|d d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd|_d|_d|_dS)Ncs|}|dkrdS|SNZUNKNOWNr)r!rrrr _read_field(sz7DistributionMetadata.read_pkg_file.._read_fieldcs|d}|gkrdS|Sri)Zget_all)r!valuesrrr _read_list.s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionr!r"Zsummaryr%r&z home-pager*z download-urlr,r/rplatformZ classifier1.1r1r0r2)rr!r"r,r%r'rrr)r*rrror/r-r.r1r0r2)r^filerrZmetadata_versionrrrr$s:                 z"DistributionMetadata.read_pkg_filec Cs2ttj|dddd}||W5QRXdS)NzPKG-INFOwzUTF-8)encoding)rryrzr~write_pkg_file)r^Zbase_dirZpkg_inforrrwrite_pkg_infoXs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|d||d||d||d||d| |d| |d | |d | |jr|d |jt |}|d |d |}|r|d|||d|||d|||d|||d|||d|dS)Nz1.0rzMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ Obsoletes)r0r1r2r.rrXget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr~ get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)r^rr"Z long_descr/rrrr_s6 z#DistributionMetadata.write_pkg_filecCs |D]}|d||fqdS)Nz%s: %s )rX)r^rr!rrrrrr sz DistributionMetadata._write_listcCs |jpdSr)r!rrrrrszDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r"rrrrrsz DistributionMetadata.get_versioncCsd||fS)Nz%s-%s)rrrrrr get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdSr)r%rrrr get_authorszDistributionMetadata.get_authorcCs |jpdSr)rrrrrget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdSr)r'rrrrget_maintainersz#DistributionMetadata.get_maintainercCs |jpdSr)rrrrrget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdSr)r'r%rrrrrsz DistributionMetadata.get_contactcCs|jp|jpdSr)rrrrrrr sz&DistributionMetadata.get_contact_emailcCs |jpdSr)r)rrrrrszDistributionMetadata.get_urlcCs |jpdSr)r*rrrrr sz DistributionMetadata.get_licensecCs |jpdSr)r,rrrrrsz$DistributionMetadata.get_descriptioncCs |jpdSr)rrrrrr sz)DistributionMetadata.get_long_descriptioncCs |jpgSri)r/rrrrr sz!DistributionMetadata.get_keywordscCst|d|_dS)Nr/)rr/r^rrrr set_keywordssz!DistributionMetadata.set_keywordscCs |jp dgSr)r-rrrrrsz"DistributionMetadata.get_platformscCst|d|_dS)Nr-)rr-rrrr set_platformssz"DistributionMetadata.set_platformscCs |jpgSri)r.rrrrrsz$DistributionMetadata.get_classifierscCst|d|_dS)Nr.)rr.rrrrset_classifierssz$DistributionMetadata.set_classifierscCs |jpdSr)rrrrrget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgSri)r1rrrrrsz!DistributionMetadata.get_requirescCs,ddl}|D]}|j|q t||_dSr)distutils.versionpredicateversionpredicateVersionPredicaterr1r^rrvrrrr set_requiressz!DistributionMetadata.set_requirescCs |jpgSri)r0rrrrrsz!DistributionMetadata.get_providescCs6dd|D}|D]}ddl}|j|q||_dS)NcSsg|] }|qSrr)r4rrrrr6sz5DistributionMetadata.set_provides..r)rrZsplit_provisionr0)r^rrrvrrr set_providess z!DistributionMetadata.set_providescCs |jpgSri)r2rrrrrsz"DistributionMetadata.get_obsoletescCs,ddl}|D]}|j|q t||_dSr)rrrrr2r rrr set_obsoletessz"DistributionMetadata.set_obsoletes)N)$rrrrArhrrrr rrrrrrrrr rr Z get_licencerr r rrrrrrrr!rr"rr#rrrrr?sB 4"r?cCs$g}|D]}||ddq|S)Nr)r)r9Z new_optionsZ help_tuplerrrrsr)rVryreZemailrrTrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrvr Zdistutils.debugr compilerrrr?rrrrrs2      ZcPK]4! !__pycache__/config.cpython-38.pycnu[U e5d@s<dZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sheZdZdZdZdZdZdZdddefdgZd gZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s]) show-responseNz&display full response text from serverrcCstjtjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduserselfr(/usr/lib64/python3.8/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|}tt|tjtjBdd}|t||fW5QRXdS)zCreates a default .pypirc file.iwN)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|}tj|r|d||jp.|j}t}||| }d|krF| dd}dd| dD}|gkrd|krdg}niS|D]}d|i}| |d |d <d |jfd |j fd fD].\} } | || r| || || <q| || <q|dkr ||jdfkr |j|d <|S|d|ks:|d |kr|SqnRd |krd }| |d rp| |d }n|j}| |d | |d|||j dSiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|dkr|qS))strip).0serverrrr =s z.PyPIRCCommand._read_pypirc.. rr!r repositoryrealm)rNz server-loginr)rrr$r!r%)rr r existsZannouncer$DEFAULT_REPOSITORYrreadsectionsgetsplit DEFAULT_REALMZ has_option) rrr$Zconfigr)Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sb               zPyPIRCCommand._read_pypirccCs8ddl}|dd}||ddd}||S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr*r(decode)rZresponser3Z content_typeencodingrrr_read_pypi_responseps z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_responser rrrinitialize_optionswsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r$r'r%r,r rrrfinalize_options}s  zPyPIRCCommand.finalize_options)__name__ __module__ __qualname____doc__r'r,r$r%Z user_optionsZboolean_optionsrrr/r6r7r8rrrrrs&@r)r<r Z configparserrZ distutils.cmdrrrrrrrs    PK]\p"__pycache__/version.cpython-38.pycnu[U e5d90@s>dZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@sJeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r||dSNparseselfvstringr )/usr/lib64/python3.8/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__strrr r r __repr__*szVersion.__repr__cCs||}|tkr|S|dkSNr_cmpNotImplementedrothercr r r __eq__-s zVersion.__eq__cCs||}|tkr|S|dkSrrrr r r __lt__3s zVersion.__lt__cCs||}|tkr|S|dkSrrrr r r __le__9s zVersion.__le__cCs||}|tkr|S|dkSrrrr r r __gt__?s zVersion.__gt__cCs||}|tkr|S|dkSrrrr r r __ge__Es zVersion.__ge__)N) r __module__ __qualname____doc__r rrrrrrr r r r rs rc@s<eZdZdZedejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|j|}|std||ddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s')rr) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr'majorminorZpatchr.Zprerelease_numr r r rs   zStrictVersion.parsecCsb|jddkr*dtt|jdd}ndtt|j}|jr^||jdt|jd}|S)Nr"r.r!)r-joinr+rr.rr r r __str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|jsB|jsBdS|jrR|jsRdS|jsb|jrbdS|jr|jr|j|jkr~dS|j|jkrdSdSn dstddS)Nr!rFznever get here) isinstancerr r-r.AssertionErrorrrr r r rs&         zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIr&rr3rr r r r r ]s#  r c@sHeZdZdZedejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r||dSrrrr r r r .szLooseVersion.__init__c Cs^||_dd|j|D}t|D].\}}zt|||<Wq$tk rPYq$Xq$||_dS)NcSsg|]}|r|dkr|qS)r1r ).0xr r r 8sz&LooseVersion.parse..)r component_resplit enumerater,r(r-)rrZ componentsiobjr r r r3szLooseVersion.parsecCs|jSr)rrr r r r3CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))rrr r r rGszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrr4r!)r5rr<r-r7r r r rKs    zLooseVersion._cmp)N) r rrrr8r9r:r@r rr3rrr r r r r< s r<)rr8rr r<r r r r  s >/PK]4#Z#__pycache__/dir_util.cpython-38.pycnu[U e5db@spdZddlZddlZddlmZmZddlmZiadddZ dd d Z dd d Z d dZ dddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logc Csft|tstd|ftj|}g}tj|s<|dkr@|Sttj |rV|Stj |\}}|g}|r|rtj|stj |\}}| d|ql|D]}tj ||}tj |} t| rq|dkrt d||sXzt||WnVtk rL} z6| jtjkr&tj|stk rt} z |rRg} ntd|| jfW5d} ~ XYnX|st ||dg} | D]} tj || } tj || }| drq|r tj | r t | }|dkrtd |||st||| |qtj| r8| t| |||||||d q|| ||||||d | |q| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sN)rz.nfsrzlinking %s -> %sr&)Zdistutils.file_utilr/r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcZdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr/nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r7cs\        r7cCsft|D]F}tj||}tj|r@tj|s@t||q |tj|fq |tj |fdS)zHelper for remove_tree().N) r r0r rrr3_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=c Cs|dkrtd||rdSg}t|||D]h}z2|d|dtj|d}|tkrbt|=Wq.tk r}ztd||W5d}~XYq.Xq.dS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees   rDcCs6tj|\}}|ddtjkr2||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)__doc__r rZdistutils.errorsrrZ distutilsrrr%r.r7r=rDrGr#r#r#r$s   ?  E PK]4#Z)__pycache__/dir_util.cpython-38.opt-1.pycnu[U e5db@spdZddlZddlZddlmZmZddlmZiadddZ dd d Z dd d Z d dZ dddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logc Csft|tstd|ftj|}g}tj|s<|dkr@|Sttj |rV|Stj |\}}|g}|r|rtj|stj |\}}| d|ql|D]}tj ||}tj |} t| rq|dkrt d||sXzt||WnVtk rL} z6| jtjkr&tj|stk rt} z |rRg} ntd|| jfW5d} ~ XYnX|st ||dg} | D]} tj || } tj || }| drq|r tj | r t | }|dkrtd |||st||| |qtj| r8| t| |||||||d q|| ||||||d | |q| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sN)rz.nfsrzlinking %s -> %sr&)Zdistutils.file_utilr/r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcZdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr/nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r7cs\        r7cCsft|D]F}tj||}tj|r@tj|s@t||q |tj|fq |tj |fdS)zHelper for remove_tree().N) r r0r rrr3_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=c Cs|dkrtd||rdSg}t|||D]h}z2|d|dtj|d}|tkrbt|=Wq.tk r}ztd||W5d}~XYq.Xq.dS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees   rDcCs6tj|\}}|ddtjkr2||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)__doc__r rZdistutils.errorsrrZ distutilsrrr%r.r7r=rDrGr#r#r#r$s   ?  E PK]))-__pycache__/fancy_getopt.cpython-38.opt-1.pycnu[U e5dxE@sdZddlZddlZddlZddlZddlTdZedeZedeefZ e ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrdZdD]*ZedeedeeeeqdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZd d d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZddZd"ddZd#ddZdS)$ FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsN||_i|_|jr|i|_i|_g|_g|_i|_i|_i|_ g|_ dSN) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_orderselfrr./usr/lib64/python3.8/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs(|j|jD]}||j|d<qdS)Nr)rclearr)roptionrrrr Qs  zFancyGetopt._build_indexcCs||_|dSr)rr rrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|j|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs   zFancyGetopt.add_optioncCs ||jkS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)rrrrrr has_optioncszFancyGetopt.has_optioncCs |tS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores. translate longopt_xlaterrrr get_attr_namehszFancyGetopt.get_attr_namecCsN|D]@\}}||jkr,td|||f||jkrtd|||fqdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs||d||_dS)z'Set the aliases for this option parser.r N)r'r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs||d||_dS)zSet the negative aliases for this option parser. 'negative_alias' should be a dictionary mapping option names to option names, both the key and value must already be defined in the option table.znegative aliasN)r'r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|ji|_|jD]}t|dkrD|\}}}d}n(t|dkr^|\}}}}ntd|ft|t rt|dkrt d||dkst|t rt|dkst d |||j|<|j ||d d kr|r|d }|dd }d|j |<nF|j |}|dk r:|j |r0t d ||f||jd <d|j |<|j|}|dk r|j ||j |krt d||ft|st d||||j|<|r"|j |||j|d<q"dS)zPopulate the various data structures that keep tabs on the option table. Called by 'getopt()' before it can do anything worthwhile. rzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r rrrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchr#r)rrlongshorthelpr1Zalias_torrr_grok_option_tablest                    zFancyGetopt._grok_option_tablec Csn|dkrtjdd}|dkr*t}d}nd}|d|j}zt|||j\}}Wn,tjk r}z t |W5d}~XYnX|D]\}}t |dkr|ddkr|j |d}n |dd}|j |} | r| }|j|s|j |} | r| }d}nd}|j|} |r:|j | dk r:t|| dd}t|| ||j||fq|rf||fS|SdS) aParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. Nr-TF r,rr)sysargv OptionDummyr<joinr getoptr errorZDistutilsArgErrorr2rr r6rr rr1getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr&valr attrrrrrBsB         zFancyGetopt.getoptcCs|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsjd}|jD]L}|d}|d}t|}|ddkr:|d}|dk rJ|d}||kr |}q |ddd}d}||} d |} |r|g} nd g} |jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| d ||| dfn| d ||fn:d||f}| r4| d ||| dfn| d|| ddD]}| | |qNq| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr-r.r/Nr,Nr=zOption summary:r*z --%-*s %sz --%-*s z%s (-%s)z --%-*s)rr2 wrap_textr)rheaderZmax_optrr9r:lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr;textZ opt_namesrrr generate_helpsH         zFancyGetopt.generate_helpcCs0|dkrtj}||D]}||dqdS)N )r>stdoutrTwrite)rrPfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname____doc__rr rrrr#r'r(r)r<rBrLrTrZrrrrrs (  M = OrcCst|}|||||Sr)rr)rB)optionsZ negative_optrGrFparserrrr fancy_getoptos racCsi|]}t|dqS)r=)ord).0Z_wscharrrr usrdcCs|dkr gSt||kr|gS|}|t}td|}dd|D}g}|rg}d}|rt|d}|||kr||d|d=||}q\|r|dddkr|d=qq\|r|dkr||dd||d|d|d<|dddkr|d=|d|qN|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|] }|r|qSrr)rcZchrrr szwrap_text..rr.r=)r2 expandtabsr!WS_TRANSresplitrrA)rSwidthZchunksrRZcur_lineZcur_lenrQrrrrOws:      rOcCs |tS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". r )r&rrrtranslate_longoptsrlc@seZdZdZgfddZdS)r@z_Dummy class just used as a place to hold command-line option values as instance attributes.cCs|D]}t||dqdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rE)rr_r&rrrrszOptionDummy.__init__N)r[r\r]r^rrrrrr@sr@__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %drU)r^r>stringrirBZdistutils.errorsZ longopt_patcompiler7Z neg_alias_rer5 maketransr"rraZ whitespacerhrOrlr@r[rSwprintrArrrrs*  T6  PK]@c. $__pycache__/log.cpython-38.opt-1.pycnu[U e5d@sldZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dSN) threshold)selfr r %/usr/lib64/python3.8/distutils/log.py__init__sz Log.__init__cCs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }z| d|Wn:t k r|j }||d|}| d|YnX|dS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrr sysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs||||dSr)r#)r rr r!r r r log'szLog.logcGs|t||dSr)r#rr r r!r r r debug*sz Log.debugcGs|t||dSr)r#rr%r r r info-szLog.infocGs|t||dSr)r#rr%r r r warn0szLog.warncGs|t||dSr)r#rr%r r r error3sz Log.errorcGs|t||dSr)r#rr%r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r#r$r&r'r(r)r*r r r r rs rcCstj}|t_|Sr) _global_logr )roldr r r set_thresholdAsr0cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r0rrr)vr r r set_verbosityGs   r2)__doc__rrrrrrrr.r$r&r'r(r)r*r0r2r r r r s +PK] d"~6~6__pycache__/cmd.cpython-38.pycnu[U e5dF@sbdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ dS)ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_utillogc@s"eZdZdZgZddZddZddZdd Zd d Z dCddZ ddZ dDddZ ddZ dEddZdFddZddZdGddZdd Zd!d"Zd#d$Zd%d&ZdHd'd(ZdId*d+Zd,d-Zd.d/Zd0d1ZdJd2d3ZdKd5d6ZdLd7d8ZdMd9d:ZdNd;d<ZdOd=d>Z dPd?d@Z!dQdAdBZ"d S)RCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsbddlm}t||std|jtkr0td||_|d|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r%/usr/lib64/python3.8/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|d|_dS)N)rfinalize_optionsrrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. ,abstract method -- subclass %s must overrideNrrr"rrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. r$Nr%r"rrrr!s zCommand.finalize_optionsNcCsddlm}|dkr d|}|j||tjd|d}|jD]R\}}}||}|ddkrn|dd}t||}|j|d||ftjdqBdS) Nr) longopt_xlatezcommand options for '%s':)levelz =z%s = %s) Zdistutils.fancy_getoptr'get_command_nameannouncer INFOZ user_options translater)rheaderindentr'optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. r$Nr%r"rrrruns z Command.runr cCst||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. Nr)rmsgr(rrrr,szCommand.announcecCs&ddlm}|r"t|tjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr6printsysstdoutflush)rr5r6rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr1whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs||d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)rA)rr1r?rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||td|n6t|trTtdd|D}nd}|sltd||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdSN)r r=).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r=r<resplitlistallr)rr1r@okrrrensure_string_lists   zCommand.ensure_string_listcCs6||||}|dk r2||s2td|||fdS)Nzerror in '%s' option: )rAr)rr1Ztesterr>Z error_fmtr?r@rrr_ensure_tested_strings zCommand._ensure_tested_stringcCs||tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rNospathisfilerr1rrrensure_filenames zCommand.ensure_filenamecCs||tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rNrPrQisdirrSrrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrWr__name__r"rrrr+ s zCommand.get_command_namecGsF|j|}||D](\}}t||dkrt||t||qdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr#rr<)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss   zCommand.set_undefined_optionscCs|j||}||S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrZr#)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|j||SrD)rreinitialize_command)rr\Zreinit_subcommandsrrrr^0szCommand.reinitialize_commandcCs|j|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rr\rrrr_4szCommand.run_commandcCs2g}|jD]"\}}|dks"||r ||q |S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s  zCommand.get_sub_commandscCstd||dS)Nzwarning: %s: %s )r warnr+)rr5rrrrdKsz Command.warncCstj||||jddSNr)rexecuter)rfuncargsr5r(rrrrgNszCommand.executecCstj|||jddSre)rmkpathr)rnamemoderrrrkQszCommand.mkpathc Cstj|||||j ||jdS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)rf)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr(rrrrnTs  zCommand.copy_filec Cstj||||||j |jdS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. rf)r copy_treerr)rrorprqrrZpreserve_symlinksr(rrrrt]s  zCommand.copy_treecCstj|||jdS)z$Move a file respecting dry-run flag.rf)r move_filer)rsrcZdstr(rrrrufszCommand.move_filecCs ddlm}||||jddS)z2Spawn an external command respecting dry-run flag.r)spawnrfN)Zdistutils.spawnrwr)rcmdZ search_pathr(rwrrrrwjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirryrzrrrr{os  zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|d|f}|jsdt||rv| ||||n t |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r=rJtupler joinrrZ newer_grouprgr debug)rZinfilesrprhriZexec_msgZskip_msgr(rrr make_fileus  zCommand.make_file)Nr&)r )N)N)N)r )r)Nr )rj)r r Nr )r r rr )r )r r )NNNN)NNr )#rY __module__ __qualname____doc__r`rrr#rr!r3r4r,r;rArCrMrNrTrVr+r[r]r^r_rcrdrgrkrnrtrurwr{rrrrrr sZ0             r )rr8rPrHZdistutils.errorsrZ distutilsrrrrrr r rrrrs   PK]4! '__pycache__/config.cpython-38.opt-1.pycnu[U e5d@s<dZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sheZdZdZdZdZdZdZdddefdgZd gZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s]) show-responseNz&display full response text from serverrcCstjtjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduserselfr(/usr/lib64/python3.8/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|}tt|tjtjBdd}|t||fW5QRXdS)zCreates a default .pypirc file.iwN)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|}tj|r|d||jp.|j}t}||| }d|krF| dd}dd| dD}|gkrd|krdg}niS|D]}d|i}| |d |d <d |jfd |j fd fD].\} } | || r| || || <q| || <q|dkr ||jdfkr |j|d <|S|d|ks:|d |kr|SqnRd |krd }| |d rp| |d }n|j}| |d | |d|||j dSiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|dkr|qS))strip).0serverrrr =s z.PyPIRCCommand._read_pypirc.. rr!r repositoryrealm)rNz server-loginr)rrr$r!r%)rr r existsZannouncer$DEFAULT_REPOSITORYrreadsectionsgetsplit DEFAULT_REALMZ has_option) rrr$Zconfigr)Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sb               zPyPIRCCommand._read_pypirccCs8ddl}|dd}||ddd}||S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr*r(decode)rZresponser3Z content_typeencodingrrr_read_pypi_responseps z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_responser rrrinitialize_optionswsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r$r'r%r,r rrrfinalize_options}s  zPyPIRCCommand.finalize_options)__name__ __module__ __qualname____doc__r'r,r$r%Z user_optionsZboolean_optionsrrr/r6r7r8rrrrrs&@r)r<r Z configparserrZ distutils.cmdrrrrrrrs    PK] 8$ow w )__pycache__/dir_util.cpython-38.opt-2.pycnu[U e5db@slddlZddlZddlmZmZddlmZiadddZddd Z dd d Z d d Z dddZ ddZ dS)N)DistutilsFileErrorDistutilsInternalError)logc Csft|tstd|ftj|}g}tj|s<|dkr@|Sttj |rV|Stj |\}}|g}|r|rtj|stj |\}}| d|ql|D]}tj ||}tj |} t| rq|dkrt d||sXzt||WnVtk rL} z6| jtjkr&tj|stk rt} z |rRg} ntd|| jfW5d} ~ XYnX|st ||dg} | D]} tj || } tj || }| drq|r tj | r t | }|dkrtd|||st||| |qtj| r8| t| |||||||d q|| ||||||d | |q| S) Nr) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)rz.nfsrzlinking %s -> %sr&)Zdistutils.file_utilr/r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcZdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr/nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r7cs\        r7cCsft|D]F}tj||}tj|r@tj|s@t||q |tj|fq |tj |fdS)N) r r0r rrr3_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=c Cs|dkrtd||rdSg}t|||D]h}z2|d|dtj|d}|tkrbt|=Wq.tk r}ztd||W5d}~XYq.Xq.dS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees   rDcCs6tj|\}}|ddtjkr2||dd}|S)Nrr)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)r rZdistutils.errorsrrZ distutilsrrr%r.r7r=rDrGr#r#r#r$s  ?  E PK]LvV0 0 '__pycache__/config.cpython-38.opt-2.pycnu[U e5d@s8ddlZddlmZddlmZdZGdddeZdS)N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sdeZdZdZdZdZdZdddefdgZdgZd d Z d d Z d dZ ddZ ddZ ddZdS) PyPIRCCommandzhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s]) show-responseNz&display full response text from serverrcCstjtjddS)N~z.pypirc)ospathjoin expanduserselfr(/usr/lib64/python3.8/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|}tt|tjtjBdd}|t||fW5QRXdS)Niw)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|}tj|r|d||jp.|j}t}||| }d|krF| dd}dd| dD}|gkrd|krdg}niS|D]}d|i}| |d |d <d |jfd |j fd fD].\} } | || r| || || <q| || <q|dkr ||jdfkr |j|d <|S|d|ks:|d |kr|SqnRd |krd }| |d rp| |d }n|j}| |d | |d|||j dSiS)NzUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|dkr|qS))strip).0serverrrr =s z.PyPIRCCommand._read_pypirc.. rr!r repositoryrealm)rNz server-loginr)rrr$r!r%)rr r existsZannouncer$DEFAULT_REPOSITORYrreadsectionsgetsplit DEFAULT_REALMZ has_option) rrr$Zconfigr)Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sb               zPyPIRCCommand._read_pypirccCs8ddl}|dd}||ddd}||S)Nrz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr*r(decode)rZresponser3Z content_typeencodingrrr_read_pypi_responseps z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)Nr)r$r%Z show_responser rrrinitialize_optionswsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)N)r$r'r%r,r rrrfinalize_options}s  zPyPIRCCommand.finalize_options)__name__ __module__ __qualname__r'r,r$r%Z user_optionsZboolean_optionsrrr/r6r7r8rrrrrs$@r)r Z configparserrZ distutils.cmdrrrrrrrs   PK]~!!0__pycache__/cygwinccompiler.cpython-38.opt-1.pycnu[U e5d^@@sdZddlZddlZddlZddlmZmZmZddlZddl m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZdd lmZd d ZGd dde ZGdddeZdZdZdZ ddZ!e"dZ#ddZ$ddZ%ddZ&dS)adistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)sysversionfind ValueError)Zmsc_posZmsc_verr1/usr/lib64/python3.8/distutils/cygwinccompiler.py get_msvcr?s rc @sReZdZdZdZdZdZdZdZdZ dZ dd d Z d d Z dddZ dddZdS)CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. cygwinz.o.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|tk rB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrap2.13-shared -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %sZcompiler compiler_soZ compiler_cxxZ linker_exeZ linker_so2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr%dsN     zCygwinCCompiler.__init__c Cs|dks|dkrVz|dd|d|gWqtk rR}z t|W5d}~XYqXnNz"||j||d|g|Wn*tk r}z t|W5d}~XYnXdS)z:Compiles the source by spawning GCC and windres if needed..rc.resZwindresz-iz-oN)Zspawnr r r#)r0objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsPt| p g} t|pg}t|p&g}||j|dk r||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}|D]}| |q| t ||fd ||jd kr| d |g| d |gn | || s(| d t||||||||d| | | | | dS)zLink the objects.Nrrz.deflibrz LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr/Z EXECUTABLEr-ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r0Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr:Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrGsR          zCygwinCCompiler.linkcCs|dkr d}g}|D]}tjtj|\}}||jddgkrRtd||f|rbtj|}|dkr|tj||||j q|tj|||j q|S)z#Adds supports for rc and res files.NrKr5r6z"unknown file type '%s' (from '%s'))r6r5) r@rArCnormcaseZsrc_extensionsr rDrFrE obj_extension)r0Zsource_filenamesZ strip_dirrHZ obj_namesZsrc_namebaser9rrrobject_filenamess&    z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrK)__name__ __module__ __qualname____doc__r,rMZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr%r<rGrOrrrrrYs, ; Nrc@seZdZdZdZdddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nrr r!r$z--entry _DllMain@12rKz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %sr") rr%r+r* is_cygwingccr r.r-r/r)r0r1r2r3r4Z entry_pointrrrr%s.   zMingw32CCompiler.__init__N)rrr)rPrQrRrSr,r%rrrrrTsrTokznot okZ uncertainc Csddlm}dtjkrtdfS|}zLt|}z4d|krPtd|fWWSt d|fWWSW5|XWn8t k r}zt d||j ffWYSd }~XYnXd S) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %sN) distutilsrWrrr'Zget_config_h_filenameopenclosereadCONFIG_H_NOTOKOSErrorCONFIG_H_UNCERTAINstrerror)rWfnZconfig_hexcrrrr&Hs    r&s(\d+\.\d+(\.\d+)*)cCsl|d}t|dkrdSt|dtdj}z |}W5|Xt|}|dkrZdSt | d S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNT)shellstdout) splitrrrrcrZr[ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rocCsdddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)ro).0rjrrr sz get_versions..)tuple)Zcommandsrrrr)s r)cCstddg}|dS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rmrrrrUs rU)'rSr@rr> subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rXr Zdistutils.versionrZdistutils.spawnrrrrTr'r\r^r&compilerfror)rUrrrrs0/     ;1+ PK]Z@+n/n/$__pycache__/sysconfig.cpython-38.pycnu[U .eP@sdZddlZddlZddlZddlZddlmZddlmZm Z ej ej Z ej ejZej ejZej ejZdejkrej ejdZn&ejrej ej ejZneZddZeed dZejd krd d ZeeZeeZd dZeZ dZ!ze sej"Z!Wne#k r*YnXddZ$d-ddZ%d.ddZ&ddZ'ddZ(ddZ)d/ddZ*e+dZ,e+dZ-e+d Z.d0d!d"Z/d#d$Z0da1d%d&Z2d'd(Z3d)d*Z4d+d,Z5dS)1aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformError) get_platformget_host_platformZ_PYTHON_PROJECT_BASEcCs,dD]"}tjtj|d|rdSqdS)N)ZSetupz Setup.localZModulesTF)ospathisfilejoin)dfnr +/usr/lib64/python3.8/distutils/sysconfig.py_is_python_source_dir+sr_homentcCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)rrnormcase startswithr PREFIX)r r r r _fix_pcbuild4s rcCstr ttSttS)N) _sys_homer project_baser r r r _python_build<srcCsdtjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. z%d.%dN)sys version_infor r r r get_python_versionPsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjt dd}tj |Sdt t }tj|d|Stjdkrtrtj|dtjj tj|dStj|dStd tjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonZincluderPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXrname python_buildrrrr get_config_varnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr r r get_python_incXs*      r+cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tj||dt}|r`|Stj|dSnrendstartcloseitems isinstanceupdate)r rPrVrOZdoneZnotdonerQrRrSrTZtmpvZrenamed_variablesr#valuefounditemZafterkr r r parse_makefile/s                       rmcCsVt|pt|}|rR|\}}|d|||d||d}qqRq|S)aExpand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. rrN)r_r`raspangetrL)svarsrRZbegrcr r r expand_makefile_varss  *rrc CsVtjddjtjtjttjddd}t |t t dgd}|j }ia t |dS) z7Initialize the module as appropriate for POSIX systems.Z_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rCr)Zabir9Z multiarchbuild_time_varsrN)rr>rorDrabiflagsr9getattrrF __import__globalslocalsrsr<rh)r#Z_temprsr r r _init_posixs rycCs~i}tddd|d<tddd|d<tdd|d<td|d<d |d <td d |d <tjtj t j |d<|a dS)z+Initialize the module as appropriate for NTrrrBZLIBDESTZ BINLIBDESTr@Z INCLUDEPY EXT_SUFFIXz.exeZEXE.rZVERSIONZBINDIRN) r0r+_impextension_suffixesrr]rrdirnameabspathr executabler<)rPr r r _init_ntsrcGs\tdkr*tdtj}|r(|niattd<ttd<td}|dk rV|td<tdt}tjdkrtrtj t }tj ||}ntj t }tj tj |td<tr tjdkr t}tj tds |tkr tj |td}tj |td<tjd kr*d dl}|t|rTg}|D]}|t|q8|StSdS) aWith no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. NZ_init_r* exec_prefixrzSOrrr1r)r<rwrorr#rr.rr$rr~rGr rr&isabsgetcwdrr9r:Zcustomize_config_varsappend)argsfuncrrbaser:Zvalsr#r r r r=sB       r=cCs*|dkrddl}|dtdt|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) rrNz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningr=ro)r#rr r r r%!sr%)rN)rrN)N)N)6__doc__r|rrHrrXrutilrrrr&r*rrr. base_prefixr"base_exec_prefixr!r>rrrr~rrrurr#rrr$r'rtAttributeErrorrr+r0r;rArGrUrIr[r_rarmrrr<ryrr=r%r r r r s\       ( +I      jJPK]٢<<__pycache__/util.cpython-38.pycnu[U e5dQ@s dZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZddZdaddZddZd*ddZdaaaddZddZd+ddZddZd,d d!Zd"d#Z d-d$d%Z!d.d&d'Z"Gd(d)d)Z#dS)/zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc CstjdkrFdtjkrdSdtjkr.dSdtjkr@dStjSdtjkrZtjdStjd ksnttd sttjSt\}}}}}| d d }| d d}| d d}|dddkrd||fS|dddkr,|ddkrd}dt |dd|ddf}ddd}|d|tj 7}n|dddkrLd |||fS|dd!d"krd"}t d#t j}||}|r|}n>|dd!d$krddl}ddl} || j|||\}}}d%|||fS)&aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntZamd64 win-amd64z(arm) win-arm32z(arm64)z win-arm64Z_PYTHON_HOST_PLATFORMposixuname/ _-NZlinuxz%s-%sZsunosr5Zsolarisz%d.%sZ32bitZ64bit)ilz.%sZaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr replaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigZget_platform_osxZ sysconfigZget_config_vars) ZosnameZhostreleasermachineZbitnessZrel_remr( distutilsr-&/usr/lib64/python3.8/distutils/util.pyget_host_platformsR           r/cCs8tjdkr.dddd}|tjdp,tStSdS)NrZwin32rr )Zx86Zx64ZarmZVSCMD_ARG_TGT_ARCH)rrgetrr/)ZTARGET_TO_PLATr-r-r. get_platformas r1cCsztjdkr|S|s|S|ddkr.td||ddkrFtd||d}d|krd|dqP|sntjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. r rzpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)rsep ValueErrorsplitremovecurdirpathjoin)pathnamepathsr-r-r. convert_pathls       r=cCstjdkr) _environ_checkedrrrpwdgetpwuidgetuid ImportErrorKeyErrorr1)rEr-r-r. check_environs   rJc CsVt|fdd}ztd||WStk rP}ztd|W5d}~XYnXdS)aPerform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. cSs,|d}||krt||Stj|SdS)Nr>)r'strrr)r& local_varsZvar_namer-r-r._substs  zsubst_vars.._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)rJr#subrIr5)srLrMvarr-r-r. subst_varss  rQerror: cCs |t|SN)rK)excprefixr-r-r.grok_environment_errorsrVcCs(tdtjatdatdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r#r$string whitespace _wordchars_re _squote_re _dquote_rer-r-r-r. _init_regexs r\cCstdkrt|}g}d}|rt||}|}|t|krZ||d|q||tjkr||d|||d }d}n||dkr|d|||dd}|d}n||dkrt ||}n*||dkrt ||}nt d|||dkr t d|||\}}|d|||d|d||d}|d }|t|kr||qq|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. Nrr?r>'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rYr\stripr&endlenappendrWrXlstriprZr[ RuntimeErrorr5span)rOZwordsposr+r`Zbegr-r-r. split_quoteds@        ,   rgcCsP|dkr6d|j|f}|dddkr6|ddd}t||sL||dS)aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rz,)r))__name__rinfo)funcargsmsgverbosedry_runr-r-r.executes  rqcCs2|}|dkrdS|dkr dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. )yZyesttrueZon1r>)nZnofZfalseZoff0rzinvalid truth value %rN)rr5)valr-r-r. strtobool2s rzr>c CsTddl}tjrtd|dkr*do(|dk}|s@zddlm} | d\} } Wn.tk rzddlm} d| d} } YnXt d| |s| dk rt | d } n t | d } | B| d | d tt|d | d |||||fW5QRXtjg}|||| t||dtt j| fd| |dnddlm}|D]}|dddkrjqP|dkr|dkrdn|}tjj||d}n tj|}|}|r|dt||krtd||f|t|d}|rt j||}t j |}|rP|st!||r>t d|||sL||||nt"d||qPdS)a~Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. rNzbyte-compiling is disabled.T)mkstemp.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) )rpz removing %s)r$r ) optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)# subprocessrdont_write_bytecoderZtempfiler{rHr}rrkrfdopenopenwriter:maprepr executableextendZ"_optim_args_from_interpreter_flagsrbrrqr7 py_compiler$ importlibutilcache_from_sourcerar5r9basenamerdebug)Zpy_filesoptimizeZforcerUZbase_dirrorpZdirectrr{Z script_fdZ script_namer}Zscriptcmdr$fileoptcfiledfileZ cfile_baser-r-r. byte_compileBsx$               rcCs|d}d}||S)zReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline.  z )r6r:)headerlinesr4r-r-r. rfc822_escapes rcCsV|sdSddlm}m}Gddd|}|dkr8|d}|||d}|j|dd dS) a Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.Nr)RefactoringToolget_fixers_from_packagec@s$eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj|f|dSrS)rerror)selfrnrmkwr-r-r. log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dSrS)rrkrrnrmr-r-r. log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dSrS)rrrr-r-r. log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)rj __module__ __qualname__rrrr-r-r-r.DistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrr-r-r.run_2to3s  rc Csddlm}ddlm}ddlm}|} t} t|z | W5t| X| j | j dd<|r| D]} | } | sqr| | qrg} | j D]L} tj|| }|tj||tj|| |dd}|dr| |qtdd | D|||d | S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNr>)updatecSsg|]}|dr|qS)r|)rendswith).0fnr-r-r. sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrrgetcwdchdirfindallZallfilesr splitlinesr_Zprocess_template_liner9r:dirnamerbr)srcdesttemplaterrrrrrZfilelistr8lineZcopiedfilenameZoutnameresr-r-r.copydir_run_2to3s:          rc@s$eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jSrS)rrrr)rrr-r-r.r-szMixin2to3.run_2to3)rjrr__doc__rrrrr-r-r-r.rs r)rR)Nrr)rrNNr>rN)NNN)NNNN)$rrr#importlib.utilrrWrZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrr,rrr/r1r=rBrDrJrQrVrYrZr[r\rgrqrzrrrrrr-r-r-r.sN     O   =    !PK]0oa__pycache__/dist.cpython-38.pycnu[U e5d@sdZddlZddlZddlZddlmZz ddlZWnek rLdZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZed Zd d ZGd d d ZGdddZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escapelog)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$cCsLt|tr nd?Zd@dAZdBdCZdddDdEZdedFdGZdfdIdJZejfdKdLZdMdNZdOdPZ dQdRZ!dSdTZ"dUdVZ#dWdXZ$dYdZZ%d[d\Z&d]d^Z'd_d`Z(d!S)g DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. )verbosevzrun verbosely (default))quietqz!run quietly (turns verbosity off))zdry-runnzdon't actually do anything)helphzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package )z help-commandsNzlist all available commands)nameNzprint package name)versionVzprint package version)fullnameNzprint -)authorNzprint the author's name) author-emailNz print the author's email address) maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)contactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)urlNzprint the URL for this package)licenseNz print the license of the package)licenceNzalias for --license) descriptionNzprint the package description)zlong-descriptionNz"print the long package description) platformsNzprint the list of platforms) classifiersNzprint the list of classifiers)keywordsNzprint the list of keywords)providesNz+print the list of packages/modules provided)requiresNz+print the list of packages/modules required) obsoletesNz0print the list of packages/modules made obsoletecCsg|]}t|dqS)rr).0xrrr szDistribution.rrNcCs\d|_d|_d|_|jD]}t||dqt|_|jjD] }d|}t||t|j|q:i|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|d}|dk r8|d=|D]4\}}| |}|D]\} } d| f|| <qqd|kr~|d|d <|d=d } t!dk rnt!"| nt#j$%| d |D]\} } t&|jd | rt|jd | | nNt&|j| rt|j| | n0t&|| rt|| | nd t'| } t!"| qd|_(|j dk rP|j D].} | )ds6qP| dkr d|_(qPq |*dS)a0Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. rrget_Noptionsz setup scriptr+r*z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+rdry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfattrsattrbasenameZ method_namer9commandZ cmd_optionsopt_dictoptvalrkeyargrrr__init__s~                   zDistribution.__init__cCs&|j|}|dkr"i}|j|<|S)zGet the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. N)rGrQ)r^rbdictrrrrS&s zDistribution.get_option_dictr8c Csddlm}|dkr"t|j}|dk r@||||d}|sV||ddS|D]h}|j|}|dkr||d|qZ||d|||}|dD]}||d|qqZdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:r:)ZpprintrjsortedrGkeysannouncerQsplit) r^headercommandsindentrjZcmd_namercoutlinerrrdump_option_dicts1s*  zDistribution.dump_option_dictscCsg}ttjtjdj}tj|d}tj|rB| |tj dkrRd}nd}|j rtjtj d|}tj|r| |d}tj|r| |t r|dd ||S) aFind as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerVmodules__file__joinisfileappendr!r[ expanduserr rm)r^filesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerrrfind_config_filesMs&       zDistribution.find_config_filesc Csddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|}trb|d|}|D]}tr|d|| || D]V}| |}| |}|D]8} | dkr| |kr| || } | dd} || f|| <qq|qld|jkr|jdD]\} \} } |j | } zF| rDt|| t|  n(| dkr`t|| t| n t|| | Wn,tk r} z t| W5d} ~ XYnXqdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %srr;_global)rr<)Z configparserrrVr base_prefix frozensetrr rmreadZsectionsr9rSrQreplacerhrGrR negative_optr>r ValueErrorDistutilsOptionError)r^ filenamesrZignore_optionsparserfilenameZsectionr9rcrdresrcaliasrrrrparse_config_files}s^             zDistribution.parse_config_filescCs|}g|_t||j}||j|ddi|j|j|d}| }t |j | |rhdS|r|||}|dkrhdSqh|jr|j|t|jdk|jddS|jstddS) aParse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). r+r*)argsobjectNrdisplay_optionsrpzno commands suppliedT)_get_toplevel_optionsrprrset_negative_aliasesrZ set_aliasesgetoptrFZget_option_orderr Z set_verbosityrhandle_display_options_parse_command_optsr _show_helplenDistutilsArgError)r^Ztoplevel_optionsrr option_orderrrrparse_command_lines.      zDistribution.parse_command_linecCs |jdgS)zReturn the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. )zcommand-packages=Nz0list of packages that provide distutils commands)global_optionsr^rrrrsz"Distribution._get_toplevel_optionsc Csddlm}|d}t|s*td||j|z||}Wn*tk rn}z t |W5d}~XYnXt ||st d|t |drt |jtsd}t |||j}t |dr|}||jt |d rt |jtrt|j}ng}||j|j|||||d d\}} t | d rV| jrV|j|d|gd dSt |d rt |jtrd} |jD]F\} } } }t | || rzd } t|r|nt d || fqz| rdS||}t| D]\}}d|f||<q|S)aParse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. rCommandzinvalid command name '%s'Nz&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrrrzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrprget_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrYr rrrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablerSvarsrR)r^rrrrbZ cmd_classrrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncrcr!rrrrrsr                  z Distribution._parse_command_optscCsPdD]F}t|j|}|dkrqt|trdd|dD}t|j||qdS)zSet final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. r/r-NcSsg|] }|qSrstrip)r4Zelmrrrr6jsz1Distribution.finalize_options..,)rBr@r rrnr>)r^r`rrrrr]`s  zDistribution.finalize_optionsrc Csddlm}ddlm}|rR|r*|}n|j}||||jdt d|rt||j |dt d|j D]z}t |t rt||r|} n ||} t| drt | jtr|| jt| jn || j|d| jt dqzt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r gen_usagerz Global options:r8zKInformation display options (just display information, ignore any commands)rzOptions for '%s' command:N)distutils.corerrrrrrZ print_help common_usageprintrrpr rrrrYrrrrrrE) r^rrrrprrr9rbklassrrrrms:           zDistribution._show_helpc Csddlm}|jr4|tdt||jdSd}i}|jD]}d||d<qB|D]l\}}|rX||rXt|}t |j d|}|dkrtd |n |dkrtd |nt|d}qX|S) zIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. rrr8rr7rr)r.r0r1r2r:) rrZ help_commandsprint_commandsrrErrQrrBr@r}) r^rrZany_display_optionsZis_display_optionoptionrdrerrrrrs*   z#Distribution.handle_display_optionsc Csjt|d|D]T}|j|}|s.||}z |j}Wntk rPd}YnXtd|||fqdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :(no description available)z %-*s %sN)rrCrQrr,AttributeError)r^rpro max_lengthcmdrr,rrrprint_command_lists     zDistribution.print_command_listcCsddl}|jj}i}|D] }d||<qg}|jD]}||s4||q4d}||D]}t||krZt|}qZ||d||rt ||d|dS)anPrint out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrzStandard commandszExtra commands) distutils.commandrb__all__rCrlrQrrrr)r^ru std_commandsis_stdrextra_commandsrrrrrs.      zDistribution.print_commandsc Csddl}|jj}i}|D] }d||<qg}|jD]}||s4||q4g}||D]P}|j|}|sx||}z |j}Wnt k rd}YnX|||fqZ|S)a>Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrr) rrbrrCrlrQrrr,r) r^rurrrrrvrr,rrrget_command_lists(         zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|dD}d|krD|dd||_|S)z9Return a list of packages from which commands are loaded.Nr8cSsg|]}|dkr|qS)r8r)r4Zpkgrrrr6!sz5Distribution.get_command_packages..rzdistutils.commandr)rDr rrninsert)r^Zpkgsrrrget_command_packagess  z!Distribution.get_command_packagesc Cs|j|}|r|S|D]}d||f}|}zt|tj|}Wntk r^YqYnXzt||}Wn&tk rt d|||fYnX||j|<|St d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) rCrQr __import__rVr{ ImportErrorrBrr)r^rbrZpkgnameZ module_nameZ klass_namemodulerrrr's,      zDistribution.get_command_classcCsl|j|}|sh|rhtr&|d|||}||}|j|<d|j|<|j|}|rh||||S)aReturn the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. z.z1error in %s: command '%s' has no such option '%s')get_command_namerSr rmrRZboolean_optionsrrr rr>rrYrr) r^rOZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringrrrrrhsF           z!Distribution._set_command_optionsrcCs|ddlm}t||s&|}||}n|}|js8|S|d|_d|j|<|||rx| D]}| ||qf|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. rr) rrr rrZ finalizedZinitialize_optionsrPrZget_sub_commandsreinitialize_command)r^rbZreinit_subcommandsrrsubrrrrs      z!Distribution.reinitialize_commandcCst||dSNr )r^rlevelrrrrmszDistribution.announcecCs|jD]}||qdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)rp run_command)r^rrrr run_commandss zDistribution.run_commandscCsD|j|rdStd|||}||d|j|<dS)aDo whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). Nz running %sr)rPrQr inforZensure_finalizedrun)r^rbrrrrrs   zDistribution.run_commandcCst|jp|jpgdkSNr)rrHrIrrrrhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkSr)rLrrrrrhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkSr)rJrrrrrhas_c_librariesszDistribution.has_c_librariescCs|p|Sr)rrrrrr has_modulesszDistribution.has_modulescCs|jot|jdkSr)rKrrrrr has_headersszDistribution.has_headerscCs|jot|jdkSr)rMrrrrr has_scriptsszDistribution.has_scriptscCs|jot|jdkSr)rNrrrrrhas_data_filesszDistribution.has_data_filescCs|o| o| Sr)rrrrrrris_pures zDistribution.is_pure)N)NNr8)N)r)N)r))r __module__ __qualname____doc__rrrr=rrhrSrtrrrrrr]rrrrrrrrrrr INFOrmrrrrrrrrrrrrrrr,s  ,  0 :C [  2(!" &  , ) rc@seZdZdZdZdBddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#ZeZd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#d@dAZ$dS)Cr?z]Dummy class to hold the distribution meta-data: name, version, author, and so forth. )r!r"r% author_emailr'maintainer_emailr)r*r,long_descriptionr/r-r$r(Z contact_emailr. download_urlr0r1r2NcCs|dk r|t|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dSr) read_pkg_fileopenr!r"r%rr'rr)r*r,rr/r-r.rr0r1r2)r^ryrrrrh s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ nd |_ |d|_ |d|_dkr|d d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|SNZUNKNOWNr)r!rrrr _read_field(sz7DistributionMetadata.read_pkg_file.._read_fieldcs|d}|gkrdS|Sr)Zget_all)r!valuesrrr _read_list.s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionr!r"Zsummaryr%Nr&z home-pager*z download-urlr,r/rplatformZ classifier1.1r1r0r2)rr!r"r,r%r'rrr)r*rrrnr/r-r.r1r0r2)r^filerrZmetadata_versionrrrr$s:                 z"DistributionMetadata.read_pkg_filec Cs2ttj|dddd}||W5QRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwzUTF-8)encodingN)rrxryr}write_pkg_file)r^Zbase_dirZpkg_inforrrwrite_pkg_infoXs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|d||d||d||d||d| |d| |d | |d | |jr|d |jt |}|d |d |}|r|d|||d|||d|||d|||d|||d|dS)z9Write the PKG-INFO format data to a file object. z1.0rzMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r0r1r2r.rrXget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr} get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)r^rr"Z long_descr/rrrr_s6 z#DistributionMetadata.write_pkg_filecCs |D]}|d||fqdS)Nz%s: %s )rX)r^rr!rrrrrrsz DistributionMetadata._write_listcCs |jpdSr)r!rrrrrszDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r"rrrrrsz DistributionMetadata.get_versioncCsd||fS)Nz%s-%s)rrrrrr get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdSr)r%rrrr get_authorszDistributionMetadata.get_authorcCs |jpdSr)rrrrrget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdSr)r'rrrrget_maintainersz#DistributionMetadata.get_maintainercCs |jpdSr)rrrrrget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdSr)r'r%rrrrr sz DistributionMetadata.get_contactcCs|jp|jpdSr)rrrrrrr sz&DistributionMetadata.get_contact_emailcCs |jpdSr)r)rrrrrszDistributionMetadata.get_urlcCs |jpdSr)r*rrrrr sz DistributionMetadata.get_licensecCs |jpdSr)r,rrrrrsz$DistributionMetadata.get_descriptioncCs |jpdSr)rrrrrr sz)DistributionMetadata.get_long_descriptioncCs |jpgSr)r/rrrrr sz!DistributionMetadata.get_keywordscCst|d|_dS)Nr/)rr/r^rrrr set_keywordssz!DistributionMetadata.set_keywordscCs |jp dgSr)r-rrrrrsz"DistributionMetadata.get_platformscCst|d|_dS)Nr-)rr-rrrr set_platformssz"DistributionMetadata.set_platformscCs |jpgSr)r.rrrrrsz$DistributionMetadata.get_classifierscCst|d|_dS)Nr.)rr.rrrrset_classifierssz$DistributionMetadata.set_classifierscCs |jpdSr)rrrrrget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgSr)r1rrrrrsz!DistributionMetadata.get_requirescCs,ddl}|D]}|j|q t||_dSr)distutils.versionpredicateversionpredicateVersionPredicaterr1r^rrurrrr set_requiressz!DistributionMetadata.set_requirescCs |jpgSr)r0rrrrrsz!DistributionMetadata.get_providescCs6dd|D}|D]}ddl}|j|q||_dS)NcSsg|] }|qSrr)r4rrrrr6sz5DistributionMetadata.set_provides..r)rrZsplit_provisionr0)r^rrrurrr set_providess z!DistributionMetadata.set_providescCs |jpgSr)r2rrrrrsz"DistributionMetadata.get_obsoletescCs,ddl}|D]}|j|q t||_dSr)rrr rr2r!rrr set_obsoletessz"DistributionMetadata.set_obsoletes)N)%rrrrrArhrrrrrrrrrrrr r rr Z get_licencerr r rrrrrrrr"rr#rr$rrrrr?sD 4"r?cCs$g}|D]}||ddq|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r)r9Z new_optionsZ help_tuplerrrrsr)rrVrxreZemailrrTrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrur Zdistutils.debugr compilerrrr?rrrrrs4      ZcPK]-!__pycache__/errors.cpython-38.pycnu[U e5d @s8dZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N__name__ __module__ __qualname____doc__rr(/usr/lib64/python3.8/distutils/errors.pyr src@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).Nrrrrrr sr c@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.Nrrrrrr sr c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.Nrrrrrr sr c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.Nrrrrrr sr c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.Nrrrrrr $sr c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.Nrrrrrr*src@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.Nrrrrrr3src@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.Nrrrrrr8src@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).Nrrrrrr>src@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).NrrrrrrCsrc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.NrrrrrrHsrc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.NrrrrrrKsrc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.NrrrrrrOsrc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.NrrrrrrRsrc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.NrrrrrrUsrc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.NrrrrrrXsrc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.Nrrrrrr\src@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.Nrrrrrr`srN)r Exceptionrr r r r r rrrrrrrrrrrrrrrrrs&  PK]#T^%%%__pycache__/util.cpython-38.opt-2.pycnu[U e5dQ@sddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZddZd d Zd d Zd dZdaddZddZd)ddZdaaaddZddZd*ddZddZd+dd Zd!d"Zd,d#d$Z d-d%d&Z!Gd'd(d(Z"dS).N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc CstjdkrFdtjkrdSdtjkr.dSdtjkr@dStjSdtjkrZtjdStjd ksnttd sttjSt\}}}}}| d d }| d d}| d d}|dddkrd||fS|dddkr,|ddkrd}dt |dd|ddf}ddd}|d|tj 7}n|dddkrLd|||fS|dd d!krd!}t d"t j}||}|r|}n>|dd d#krddl}ddl} || j|||\}}}d$|||fS)%NntZamd64 win-amd64z(arm) win-arm32z(arm64)z win-arm64Z_PYTHON_HOST_PLATFORMposixuname/ _-Zlinuxz%s-%sZsunosr5Zsolarisz%d.%sZ32bitZ64bit)ilz.%sZaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr replaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigZget_platform_osxZ sysconfigZget_config_vars) ZosnameZhostreleasermachineZbitnessZrel_remr( distutilsr-&/usr/lib64/python3.8/distutils/util.pyget_host_platformsR           r/cCs8tjdkr.dddd}|tjdp,tStSdS)NrZwin32rr )Zx86Zx64ZarmZVSCMD_ARG_TGT_ARCH)rrgetrr/)ZTARGET_TO_PLATr-r-r. get_platformas r1cCsztjdkr|S|s|S|ddkr.td||ddkrFtd||d}d|krd|dqP|sntjStjj|S)Nr rzpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)rsep ValueErrorsplitremovecurdirpathjoin)pathnamepathsr-r-r. convert_pathls       r=cCstjdkr) _environ_checkedrrrpwdgetpwuidgetuid ImportErrorKeyErrorr1)rEr-r-r. check_environs   rJc CsVt|fdd}ztd||WStk rP}ztd|W5d}~XYnXdS)NcSs,|d}||krt||Stj|SdS)Nr>)r'strrr)r& local_varsZvar_namer-r-r._substs  zsubst_vars.._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s')rJr#subrIr5)srLrMvarr-r-r. subst_varss  rQerror: cCs |t|SN)rK)excprefixr-r-r.grok_environment_errorsrVcCs(tdtjatdatdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r#r$string whitespace _wordchars_re _squote_re _dquote_rer-r-r-r. _init_regexs r\cCstdkrt|}g}d}|rt||}|}|t|krZ||d|q||tjkr||d|||d }d}n||dkr|d|||dd}|d}n||dkrt ||}n*||dkrt ||}nt d|||dkr t d|||\}}|d|||d|d||d}|d}|t|kr||qq|S) Nrr?r>'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rYr\stripr&endlenappendrWrXlstriprZr[ RuntimeErrorr5span)rOZwordsposr+r`Zbegr-r-r. split_quoteds@        ,   rgcCsP|dkr6d|j|f}|dddkr6|ddd}t||sL||dS)Nz%s%rz,)r))__name__rinfo)funcargsmsgverbosedry_runr-r-r.executes  rqcCs2|}|dkrdS|dkr dStd|fdS)N)yZyesttrueZon1r>)nZnofZfalseZoff0rzinvalid truth value %r)rr5)valr-r-r. strtobool2s rzr>c CsTddl}tjrtd|dkr*do(|dk}|s@zddlm} | d\} } Wn.tk rzddlm} d| d} } YnXt d| |s| dk rt | d} n t | d} | B| d | d tt|d | d |||||fW5QRXtjg}|||| t||d tt j| fd| |d nddlm}|D]}|dddkrjqP|dkr|dkrdn|}tjj||d}n tj|}|}|r|dt||krtd||f|t|d}|rt j||}t j |}|rP|st!||r>t d|||sL||||nt"d||qPdS)Nrzbyte-compiling is disabled.F)mkstemp.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) )rpz removing %s)r$r ) optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)# subprocessrdont_write_bytecoderZtempfiler{rHr}rrkrfdopenopenwriter:maprepr executableextendZ"_optim_args_from_interpreter_flagsrbrrqr7 py_compiler$ importlibutilcache_from_sourcerar5r9basenamerdebug)Zpy_filesoptimizeZforcerUZbase_dirrorpZdirectrr{Z script_fdZ script_namer}Zscriptcmdr$fileoptcfiledfileZ cfile_baser-r-r. byte_compileBsx$               rcCs|d}d}||S)N z )r6r:)headerlinesr4r-r-r. rfc822_escapes rcCsV|sdSddlm}m}Gddd|}|dkr8|d}|||d}|j|dddS) Nr)RefactoringToolget_fixers_from_packagec@s$eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj|f|dSrS)rerror)selfrnrmkwr-r-r. log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dSrS)rrkrrnrmr-r-r. log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dSrS)rrrr-r-r. log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)rj __module__ __qualname__rrrr-r-r-r.DistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrr-r-r.run_2to3s  rc Csddlm}ddlm}ddlm}|} t} t|z | W5t| X| j | j dd<|r| D]} | } | sqr| | qrg} | j D]L} tj|| }|tj||tj|| |dd}|dr| |qtdd| D|||d | S) Nr)mkpath) copy_file)FileListr>)updatecSsg|]}|dr|qS)r|)rendswith).0fnr-r-r. sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrrgetcwdchdirfindallZallfilesr splitlinesr_Zprocess_template_liner9r:dirnamerbr)srcdesttemplaterrrrrrZfilelistr8lineZcopiedfilenameZoutnameresr-r-r.copydir_run_2to3s:          rc@s eZdZdZdZdZddZdS) Mixin2to3NcCst||j|j|jSrS)rrrr)rrr-r-r.r-szMixin2to3.run_2to3)rjrrrrrrr-r-r-r.rsr)rR)Nrr)rrNNr>rN)NNN)NNNN)#rr#importlib.utilrrWrZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrr,rrr/r1r=rBrDrJrQrVrYrZr[r\rgrqrzrrrrrr-r-r-r.sL     O   =    !PK](AA*__pycache__/ccompiler.cpython-38.opt-2.pycnu[U e5dI@sddlZddlZddlZddlTddlmZddlmZddlm Z ddl m Z m Z ddl mZmZddlmZGd d d Zd Zdd d ZddddddZddZdddZddZddZdS)N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ ddddddZ dddgZ dpddZ d d Zd d Zd dZddZdqddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Z drd/d0Z!d1d2Z"d3d4Z#d5d6Z$d7d8Z%dsd9d:Z&dtd;d<Z'd=d>Z(dud?d@Z)dAZ*dBZ+dCZ,dvdDdEZ-dwdFdGZ.dxdHdIZ/dydJdKZ0dLdMZ1dNdOZ2dPdQZ3dzdRdSZ4d{dTdUZ5d|dWdXZ6d}dYdZZ7d~d[d\Z8dd^d_Z9ddadbZ:dcddZ;dedfZdkdlZ?ddndoZ@dS) CCompilerNczc++Zobjc).cz.ccz.cppz.cxxz.mrcCsb||_||_||_d|_g|_g|_g|_g|_g|_g|_ |j D]}| ||j |qFdSN) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrrrkeyr+/usr/lib64/python3.8/distutils/ccompiler.py__init__UszCCompiler.__init__cKs<|D]2}||jkr&td||jjf||||qdS)Nz$unknown executable '%s' for class %s)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dSr) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}|jD] }|d|kr"|S|d7}q dS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCs`|D]V}t|trFt|dkrFt|dts8|ddkrFt|dtstd|ddqdS)N)r*r*rzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r&tuplelenr' TypeError)rZ definitionsr-rrr_check_macro_definitionss     z"CCompiler._check_macro_definitionscCs.||}|dk r|j|=|j||fdSrr.rappend)rr+r)r,rrr define_macros zCCompiler.define_macrocCs0||}|dk r|j|=|f}|j|dSrr4)rr+r,Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|j|dSr)rr5rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dSrrrdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|j|dSr)rr5)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dSr)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|j|dSr)rr5r8rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dSr)rr<rrrset_library_dirs szCCompiler.set_library_dirscCs|j|dSr)rr5r8rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dSr)rr<rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|j|dSr)rr5)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dSr)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t ||}i} t t |D]B} || } || } t j | d} |t j | | | f| | <q||||| fS)N%'output_dir' must be a string or None/'macros' (if supplied) must be a list of tuples6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr*)rr&r'r2rlistrr0object_filenamesgen_preprocess_optionsranger1ospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr,srcobjextrrr_setup_compile6s<   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrWdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)NrIrJrK)rr&r'r2rrMrr0)rrrrrrr_fix_compile_argsjs"   zCCompiler._fix_compile_argscCs|j||d}|ifS)N)r)rN)rrUrrVrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)Nz,'objects' must be a list or tuple of stringsrI)r&rMr0r2rr')rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr&rMr0r2rr)rrrrrrr _fix_lib_argss,zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)NTnewer)Zmissing)rrr)rr output_filerdrrr _need_links  zCCompiler._need_linkc Cs~t|ts|g}d}t|j}|D]V}tj|\}}|j|}z |j |}||kr`|}|}Wq"t k rvYq"Xq"|Sr) r&rMr1language_orderrQrRrS language_mapgetindexr!) rrUZlangrjsourcebaser[ZextlangZextindexrrrdetect_languages    zCCompiler.detect_languagecCsdSrr)rrkrerr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc  Csx|||||||\}} }} } || ||} | D]B} z| | \}}Wntk r\Yq0YnX|| ||| || q0| Sr)r\r_KeyError_compile)rrUrrrr]rnrorVrrWrXr^rZrYr[rrrcompiles6   zCCompiler.compilecCsdSrr)rrZrYr[r^rorWrrrrrCszCCompiler._compilecCsdSrr)rroutput_libnamerr] target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdSrNotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsr]rnro build_temprurrrlinkis9zCCompiler.linkc Cs2|tj||j|dd||||||| | | | dS)Nshared)lib_type)r}r SHARED_LIBRARYlibrary_filename) rrrtrrrrr{r]rnror|rurrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|tj||||||||| | | | dSr)r}r SHARED_OBJECT) rrrzrrrrr{r]rnror|rurrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|tj|||||||d||| d| dSr)r}r EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrr]rnrorurrrlink_executables zCCompiler.link_executablecCstdSrrxr8rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdSrrxr8rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdSrrx)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}t|d} z*|D]} | d| q^| d|W5| Xz|j|g|d} Wntk rYd SXz|j| d ||d Wnt t fk rYd SXdS) Nrr T)textwz#include "%s" z=int main (int argc, char **argv) { %s(); return 0; } r;Fza.out)rr) tempfileZmkstemprQfdopenclosewritersZ CompileErrorrZ LinkErrorr2) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions<     zCCompiler.has_functioncCstdSrrx)rr=rr]rrrfind_library_file$szCCompiler.find_library_filecCs|dkr d}g}|D]|}tj|\}}tj|d}|tj|d}||jkrftd||f|rvtj|}|tj |||j q|S)Nrr*z"unknown file type '%s' (from '%s')) rQrRrS splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer5join obj_extension)rZsource_filenamesrLrZ obj_namesZsrc_namerlr[rrrrNOs"    zCCompiler.object_filenamescCs$|rtj|}tj|||jSr)rQrRrrshared_lib_extensionrrrLrrrrshared_object_filename`s z CCompiler.shared_object_filenamecCs(|rtj|}tj|||jp"dS)Nr)rQrRrr exe_extensionrrrrrfs zCCompiler.executable_filenamestaticc Cs`|dkrtdt||d}t||d}tj|\}}|||f} |rPd}tj||| S)N)rr~ZdylibZ xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)r!getattrrQrRsplitr) rr?rrLrZfmtr[r9rlfilenamerrrrls zCCompiler.library_filenamer*cCst|dSr)r r])rmsglevelrrrannounceszCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdSr)r r)rfuncargsrrrrrr szCCompiler.executecCst||jddSN)r)rr)rcmdrrrrszCCompiler.spawncCst|||jdSr)rr)rrYZdstrrrrszCCompiler.move_filecCst|||jddSr)rr)rr+moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r*)Nr*)r)Ar# __module__ __qualname__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrrhrgr r%rr.r3r6r7r:r>r@rArBrCrDrErGrHr\r_r`rarbrcrfrmrprsrrrvrrrr}rrrrrrrrrNrrrrrrr rrrrrrrr s  $   +  "   D  A    , +      r ))zcygwin.*unix)posixr)ntmsvccCsV|dkrtj}|dkrtj}tD]0\}}t||dk sHt||dk r |Sq dS)Nr)rQr+rplatform_default_compilersrematch)Zosnamerpatterncompilerrrrget_default_compilers   r)Z unixccompilerZ UnixCCompilerzstandard UNIX-style compiler)Z _msvccompilerZ MSVCCompilerzMicrosoft Visual C++)cygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Z bcppcompilerZ BCPPCompilerzBorland C++ Compiler)rrcygwinZmingw32ZbcppcCsXddlm}g}tD] }|d|dt|dfq|||}|ddS)Nr) FancyGetoptz compiler=r/zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr5sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss    rc Cs|dkrtj}z"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXz*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rQr+rrrqZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) ZplatrrrrZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers:    rcCsg}|D]}t|tr0dt|kr.dkss6       --PK] )__pycache__/dep_util.cpython-38.opt-2.pycnu[U e5d @s2ddlZddlmZddZddZd dd ZdS) N)DistutilsFileErrorcCs`tj|s tdtj|tj|s0dSddlm}t||}t||}||kS)Nzfile '%s' does not existrST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r */usr/lib64/python3.8/distutils/dep_util.pynewer s    rcCsht|t|krtdg}g}tt|D]2}t||||r,||||||q,||fS)Nz+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r rnewer_pairwise srerrorcCstj|sdSddlm}t||}|D]P}tj|sb|dkrHn|dkrTq.n|dkrbdSt||}||kr.dSq.dS)Nrrrrignorer)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s    r)r)rZdistutils.errorsrrrrr r r rs PK]zw\HH0__pycache__/cygwinccompiler.cpython-38.opt-2.pycnu[U e5d^@@sddlZddlZddlZddlmZmZmZddlZddlm Z m Z ddl m Z ddl mZddlmZmZmZmZddlmZddlmZdd lmZd d ZGd d d e ZGdddeZdZdZdZddZ e!dZ"ddZ#ddZ$ddZ%dS)N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)NzMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )sysversionfind ValueError)Zmsc_posZmsc_verr1/usr/lib64/python3.8/distutils/cygwinccompiler.py get_msvcr?s rc @sNeZdZdZdZdZdZdZdZdZ dd d Z d d Z dddZ dddZ d S)CygwinCCompilercygwinz.o.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|tk rB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrap2.13-shared -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %sZcompiler compiler_soZ compiler_cxxZ linker_exeZ linker_so2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr%dsN     zCygwinCCompiler.__init__c Cs|dks|dkrVz|dd|d|gWqtk rR}z t|W5d}~XYqXnNz"||j||d|g|Wn*tk r}z t|W5d}~XYnXdS)N.rc.resZwindresz-iz-o)Zspawnr r r#)r0objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsPt| p g} t|pg}t|p&g}||j|dk r||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}|D]}| |q| t ||fd||jd kr| d |g| d |gn | || s(| d t||||||||d| | | | | dS) Nrrz.deflibrz LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr/Z EXECUTABLEr-ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r0Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr:Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrGsR          zCygwinCCompiler.linkcCs|dkr d}g}|D]}tjtj|\}}||jddgkrRtd||f|rbtj|}|dkr|tj||||j q|tj|||j q|S)NrKr5r6z"unknown file type '%s' (from '%s'))r6r5) r@rArCnormcaseZsrc_extensionsr rDrFrE obj_extension)r0Zsource_filenamesZ strip_dirrHZ obj_namesZsrc_namebaser9rrrobject_filenamess&    z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrK)__name__ __module__ __qualname__r,rMZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr%r<rGrOrrrrrYs* ; Nrc@seZdZdZdddZdS)Mingw32CCompilerZmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nrr r!r$z--entry _DllMain@12rKz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %sr") rr%r+r* is_cygwingccr r.r-r/r)r0r1r2r3r4Z entry_pointrrrr%s.   zMingw32CCompiler.__init__N)rrr)rPrQrRr,r%rrrrrSsrSokznot okZ uncertainc Csddlm}dtjkrtdfS|}zLt|}z4d|krPtd|fWWSt d|fWWSW5|XWn8t k r}zt d||j ffWYSd}~XYnXdS) Nr) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s) distutilsrVrrr'Zget_config_h_filenameopenclosereadCONFIG_H_NOTOKOSErrorCONFIG_H_UNCERTAINstrerror)rVfnZconfig_hexcrrrr&Hs    r&s(\d+\.\d+(\.\d+)*)cCsl|d}t|dkrdSt|dtdj}z |}W5|Xt|}|dkrZdSt | d S)NrT)shellstdout) splitrrrrbrYrZ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rncCsdddg}tdd|DS)Nzgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rn).0rirrr sz get_versions..)tuple)Zcommandsrrrr)s r)cCstddg}|dS)Nrz -dumpmachinescygwin)rstripendswith)rlrrrrTs rT)&r@rr> subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rWr Zdistutils.versionrZdistutils.spawnrrrrSr'r[r]r&compilerernr)rTrrrr0s.     ;1+ PK]{<'__pycache__/archive_util.cpython-38.pycnu[U e5d|!@sDdZddlZddlmZddlZz ddlZWnek rDdZYnXddlmZddl m Z ddl m Z ddl mZzddlmZWnek rdZYnXzdd lmZWnek rdZYnXd d Zd d Zd#ddZd$ddZedgdfedgdfedgdfedgdfedgdfegdfdZdd Zd%d!d"ZdS)&zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns a gid, given a group name.N)rKeyErrornameresultr./usr/lib64/python3.8/distutils/archive_util.py_get_gids  rcCsNtdks|dkrdSz t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns an uid, given a user name.Nr )rr r rrr_get_uid+s  rgzipcs.dddddd}dddd d }|d k r:||kr:td |d } |dkrZ| ||d7} ttj| |ddd l} t dt t fdd} |s| | d||} z| j|| dW5| X|dkr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. Zgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrNzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarrdry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinforgroupownerrrr _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropencloseaddrPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer(r tarZcompressed_namecmdrrr make_tarball7sB          r5c Cs|d}ttj||dtdkrp|r.d}nd}ztd|||g|dWn tk rjtd|YnXn8td|||sztj |d tj d }Wn&t k rtj |d tj d }YnX||tj krtjtj|d }|||td |t|D]\}} } | D]6} tjtj|| d }|||td |q| D]B} tjtj|| }tj|rV|||td |qVq W5QRX|S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.ziprNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr%r&r'zipfilerrrr)ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfile) r0r1r2rZ zip_filenameZ zipoptionsr6r&dirpathZdirnames filenamesr rrr make_zipfilesV          rB)rrzgzip'ed tar-file)rrzbzip2'ed tar-file)rrzxz'ed tar-file)rrzcompressed tar file)rNzuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr3r6cCs|D]}|tkr|SqdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatrrrcheck_archive_formatss rEc Cst}|dk r6td|tj|}|s6t||dkrDtj}d|i} z t|} Wn t k rxt d|YnX| d} | dD]\} } | | | <q|dkr|| d<|| d <z| ||f| }W5|dk rtd |t|X|S) aCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. Nzchanging into '%s'rzunknown archive format '%s'rr6rrzchanging back to '%s') r%getcwdrdebugr&abspathchdirr:rCr r#)r0rDZroot_dirr1r2rrrZsave_cwdkwargsZ format_infofuncargvalfilenamerrr make_archives2       rP)rrrNN)rr)NNrrNN)__doc__r%warningsrr.r8 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr5rBrCrErPrrrrsN            H =       PK]6m2m2.__pycache__/_msvccompiler.cpython-38.opt-1.pycnu[U e5dRN@sdZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZdd Zd d Zd d dddZddZddZdddZd ddddZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc CsztjtjdtjtjBd}Wn tk r>tdYdSXd}d}|tD]}zt ||\}}}Wntk rYqYnX|rT|tj krTt j |rTztt|}Wnttfk rYqTYnX|dkrT||krT||}}qTW5QRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registeredNNr)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivZvc_dirZvtversionr //usr/lib64/python3.8/distutils/_msvccompiler.py _find_vc2015s2     r"c Csddl}tjdptjd}|s(dSz8tjtj|dddd d d d d dddg ddd}Wntj t t fk r~YdSXtj|ddd}tj |rd|fSdS)aJReturns "15, path" based on the result of invoking vswhere.exe If no install is found, returns "None, None" The version is returned to avoid unnecessarily changing the function result. It may be ignored when the path is not None. If vswhere.exe is not available, by definition, VS 2017 is not installed. rNzProgramFiles(x86)Z ProgramFilesr zMicrosoft Visual StudioZ Installerz vswhere.exez-latestz -prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyZinstallationPathz -products*mbcsstrict)encodingerrorsZVCZ AuxiliaryZBuild) jsonrenvironget subprocess check_outputrjoinstripCalledProcessErrorrUnicodeDecodeErrorr)r)rootrr r r! _find_vc2017:s2  r3x86Zx64ZarmZarm64)r4 x86_amd64x86_arm x86_arm64cCs\t\}}|st\}}|s*tddStj|d}tj|sTtd|dS|dfS)Nz$No suitable Visual C++ version foundr z vcvarsall.batz%s cannot be found)r3r"r rrrr.isfile) plat_spec_rr vcvarsallr r r!_find_vcvarsallcs     r<c CstdrddtjDSt|\}}|s6tdz&tjd||tj dj ddd }Wn@tj k r}z t |jtd |jW5d}~XYnXd dd d |DD}|S)NZDISTUTILS_USE_SDKcSsi|]\}}||qSr lower).0rvaluer r r! wsz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r'zError executing {}cSs$i|]\}}}|r|r||qSr r=)r?rr:r@r r r!rAs css|]}|dVqdS)=N) partition)r?liner r r! sz_get_vc_env..)rgetenvr*itemsr<rr,r-formatZSTDOUTdecoder0r erroroutputcmd splitlines)r9r;r:outexcenvr r r! _get_vc_envus0     rScCsN|stdtj}|D].}tjtj||}tj|r|Sq|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rrHsplitpathseprr.abspathr8)Zexepathspfnr r r! _find_exes   rZr5r6r7)Zwin32z win-amd64z win-arm32z win-arm64c seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd(ddZd)ddZd*ddZd+ddZd,ddZd-ddZfddZd d!Zd"d#Zd$d%Zd.d&d'ZZS)/ MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer r r!r]szMSVCCompiler.__init__NcCs|dkrt}|tkr(tdttt|}t|}|sDtd|dd|_|jt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_|d dt j D]}|r||t jq|d dt j D]}|r||t jqd|_d dddddg|_d dddddg|_d ddg}d dddg}|d |_|d!|_|d"|_|d#|_||_||_tj df|jtj df|jtj df|jtj!df|jtj!df|jtj!df|jtj"df|jtj"df|jtj"df|ji |_#d|_$dS)$Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rd)rd)rerfrg)rerfrg)%r PLAT_TO_VCVARSrrJtuplerSr+_pathsrTrrUrZcclinkerrcrcmcZmtZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionscompile_options_debugZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsr_)r`r^r9Zvc_envrWdirldflagsZ ldflags_debugr r r! initializes           zMSVCCompiler.initializerbcsTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }|jqSr ) obj_extensionr?extr`r r!rA&sz1MSVCCompiler.object_filenames..csi|] }|jqSr ) res_extensionrxrzr r!rA'srbcstj|\}}r"tj|}n2tj|\}}|tjjtjjfrT|dd}ztj||WSt k rt d |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithrpaltsepr. LookupErrorrrJ)rXbaseryr:)ext_map output_dir strip_dirr r! make_out_path,s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)r`Zsource_filenamesrrrr )rrr`rr!object_filenames!s zMSVCCompiler.object_filenamesc  Cs|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jd}| D]}z| |\}}Wntk rYqhYnX|rtj |}||j krd|}nD||j krd|}d}n*||j kr@|}d|}z||jg| ||gWqhtk r:}z t|W5d}~XYqhXqhn||jkrtj |}tj |}z\||jd|d||gtj tj |\}}tj ||d }||jd||gWqhtk r}z t|W5d}~XYqhXqhntd |||jg| | }|r"|d |||d |||z||Wqhtk r~}z t|W5d}~XYqhXqh| S) Nz/cFz/Tcz/TpTz/foz-hz-rr\z"Don't know how to compile {} to {}z/EHscz/Fo)r_rvZ_setup_compileappendextendrrrqKeyErrorrrrV _c_extensions_cpp_extensionsrspawnrmrrrdirnamernr}r~r.rJrk)r`ZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcryZ input_optZ output_optmsgZh_dirZrc_dirrr:Zrc_fileargsr r r!compileBsx               zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz,td|jd|| |jg|Wqt k r}z t |W5d}~XYqXn td|dS)N)r/OUT:Executing "%s" %s skipping %s (up-to-date)) r_rv_fix_object_argslibrary_filename _need_linkr rrcr.rrr) r`rZoutput_libnamerr target_langoutput_filenameZlib_argsrr r r!create_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|j || f}dd|pgD}||||d|g}tj |d} |dk r tj tj|\}}tj | ||}|d|| r| |dd<| r.|| tj tj|}||z,td|jd |||jg|Wn,tk r}z t|W5d}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r )r?Zsymr r r! sz%MSVCCompiler.link..rrz/IMPLIB:rrr)r_rvrZ _fix_lib_argswarnstrrrrr.rrsrr}r~rrrrVZmkpathr rrlrrr)r`Z target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsruZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr r r!links`       zMSVCCompiler.linkc s8td}z|jtjd<t|WS|tjd<XdS)Nr)rrHr*rjsuperr)r`rNZold_path __class__r r!rs   zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r r`rtr r r!library_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)rrr r r!runtime_library_dir_option sz'MSVCCompiler.runtime_library_dir_optioncCs ||S)N)r)r`rcr r r!library_optionszMSVCCompiler.library_optioncCs\|r|d|g}n|g}|D]:}|D]0}tj|||}tj|r$|Sq$qdS)NZ_d)rrr.rr8)r`dirsrcrZ try_namesrtnameZlibfiler r r!find_library_files zMSVCCompiler.find_library_file)rrr)N)rrb)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesrrrrrr{rwZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr]rvrrrrrrrrr __classcell__r r rr!r[sf   P " ]  E r[)N)rrZshutilstatr,rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r"r3ZPLAT_SPEC_TO_RUNTIMEr<rSrZrhr[r r r r!s4   # PK]))'__pycache__/fancy_getopt.cpython-38.pycnu[U e5dxE@sdZddlZddlZddlZddlZddlTdZedeZedeefZ e ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrdZdD]*ZedeedeeeeqdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZd d d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZddZd"ddZd#ddZdS)$ FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsN||_i|_|jr|i|_i|_g|_g|_i|_i|_i|_ g|_ dSN) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_orderselfrr./usr/lib64/python3.8/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs(|j|jD]}||j|d<qdS)Nr)rclearr)roptionrrrr Qs  zFancyGetopt._build_indexcCs||_|dSr)rr rrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|j|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs   zFancyGetopt.add_optioncCs ||jkS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)rrrrrr has_optioncszFancyGetopt.has_optioncCs |tS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores. translate longopt_xlaterrrr get_attr_namehszFancyGetopt.get_attr_namecCs\t|tst|D]@\}}||jkr:td|||f||jkrtd|||fqdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined) isinstancedictAssertionErroritemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs||d||_dS)z'Set the aliases for this option parser.r N)r*r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs||d||_dS)zSet the negative aliases for this option parser. 'negative_alias' should be a dictionary mapping option names to option names, both the key and value must already be defined in the option table.znegative aliasN)r*r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|ji|_|jD]}t|dkrD|\}}}d}n(t|dkr^|\}}}}ntd|ft|t rt|dkrt d||dkst|t rt|dkst d |||j|<|j ||d d kr|r|d }|dd }d|j |<nF|j |}|dk r:|j |r0t d ||f||jd <d|j |<|j|}|dk r|j ||j |krt d||ft|st d||||j|<|r"|j |||j|d<q"dS)zPopulate the various data structures that keep tabs on the option table. Called by 'getopt()' before it can do anything worthwhile. rzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r rrrepeatrlen ValueErrorr$strrrrr getr longopt_rematchr#r)rrlongshorthelpr4Zalias_torrr_grok_option_tablest                    zFancyGetopt._grok_option_tablec Cs|dkrtjdd}|dkr*t}d}nd}|d|j}zt|||j\}}Wn,tjk r}z t |W5d}~XYnX|D]\}}t |dkr|ddkr|j |d}n,t |dkr|ddd kst |dd}|j |} | r| }|j|s:|d kst d |j|} | r6| }d}nd}|j|} |rl|j| dk rlt|| dd}t|| ||j||fq|r||fS|SdS) aParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. Nr0TF r/rrz--zboolean option can't have value)sysargv OptionDummyr>joinr getoptr errorZDistutilsArgErrorr5rr&r r8rr rr4getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr)valr attrrrrrEsF          zFancyGetopt.getoptcCs|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsjd}|jD]L}|d}|d}t|}|ddkr:|d}|dk rJ|d}||kr |}q |ddd}d}||} d |} |r|g} nd g} |jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| d ||| dfn| d ||fn:d||f}| r4| d ||| dfn| d|| ddD]}| | |qNq| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr0r1r2Nr/Nr?zOption summary:r-z --%-*s %sz --%-*s z%s (-%s)z --%-*s)rr5 wrap_textr)rheaderZmax_optrr;r<lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr=textZ opt_namesrrr generate_helpsH         zFancyGetopt.generate_helpcCs0|dkrtj}||D]}||dqdS)N )rAstdoutrWwrite)rrSfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname____doc__rr rrrr#r*r+r,r>rErOrWr]rrrrrs (  M = OrcCst|}|||||Sr)rr,rE)optionsZ negative_optrJrIparserrrr fancy_getoptos rdcCsi|]}t|dqS)r?)ord).0Z_wscharrrr usrgcCs|dkr gSt||kr|gS|}|t}td|}dd|D}g}|rg}d}|rt|d}|||kr||d|d=||}q\|r|dddkr|d=qq\|r|dkr||dd||d|d|d<|dddkr|d=|d|qN|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|] }|r|qSrr)rfZchrrr szwrap_text..rr1r?r@)r5 expandtabsr!WS_TRANSresplitrrD)rVwidthZchunksrUZcur_lineZcur_lenrTrrrrRws:      rRcCs |tS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". r )r)rrrtranslate_longoptsrnc@seZdZdZgfddZdS)rCz_Dummy class just used as a place to hold command-line option values as instance attributes.cCs|D]}t||dqdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rH)rrbr)rrrrszOptionDummy.__init__N)r^r_r`rarrrrrrCsrC__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %drX)rarAstringrkrEZdistutils.errorsZ longopt_patcompiler9Z neg_alias_rer7 maketransr"rrdZ whitespacerjrRrnrCr^rVwprintrDrrrrs*  T6  PK]G$__pycache__/ccompiler.cpython-38.pycnu[U e5dI@sdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd Zdd dZddddddZddZdddZddZddZdS)zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddZ dddgZ dqdd Zd d Zd d ZddZddZdrddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d.d/Z!dsd0d1Z"d2d3Z#d4d5Z$d6d7Z%d8d9Z&dtd:d;Z'dudd?Z)dvd@dAZ*dBZ+dCZ,dDZ-dwdEdFZ.dxdGdHZ/dydIdJZ0dzdKdLZ1dMdNZ2dOdPZ3dQdRZ4d{dSdTZ5d|dUdVZ6d}dXdYZ7d~dZd[Z8dd\d]Z9dd_d`Z:ddbdcZ;dddeZdjdkZ?dldmZ@ddodpZAdS) CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nczc++Zobjc).cz.ccz.cppz.cxxz.mrcCsb||_||_||_d|_g|_g|_g|_g|_g|_g|_ |j D]}| ||j |qFdSN) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrrrkeyr+/usr/lib64/python3.8/distutils/ccompiler.py__init__UszCCompiler.__init__cKs<|D]2}||jkr&td||jjf||||qdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dSr) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}|jD] }|d|kr"|S|d7}q dS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCs`|D]V}t|trFt|dkrFt|dts8|ddkrFt|dtstd|ddqdS)zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. )r*r*Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r&tuplelenr' TypeError)rZ definitionsr-rrr_check_macro_definitionss     z"CCompiler._check_macro_definitionscCs.||}|dk r|j|=|j||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) Nr.rappend)rr+r)r,rrr define_macros zCCompiler.define_macrocCs0||}|dk r|j|=|f}|j|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. Nr4)rr+r,Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|j|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr5rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. Nrrdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|j|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr5)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|j|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr5r8rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)rr<rrrset_library_dirs szCCompiler.set_library_dirscCs|j|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr5r8rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)rr<rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|j|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr5)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs*|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t |t |kst t ||}i} t t |D]B} || } || } t j| d} |t j| | | f| | <q||||| fS)z;Process arguments and decide which source files to compile.N%'output_dir' must be a string or None/'macros' (if supplied) must be a list of tuples6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr*)rr&r'r2rlistrr0object_filenamesr1AssertionErrorgen_preprocess_optionsrangeospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr,srcobjextrrr_setup_compile6s>   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrXdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. NrIrJrK)rr&r'r2rrMrr0)rrrrrrr_fix_compile_argsjs"   zCCompiler._fix_compile_argscCs*|j||d}t|t|ks"t|ifS)a+Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. )r)rNr1rO)rrVrrWrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)zTypecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. z,'objects' must be a list or tuple of stringsNrI)r&rMr0r2rr')rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)a;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr&rMr0r2rr)rrrrrrr _fix_lib_argss,zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. Tnewer)ZmissingN)rrr)rr output_filererrr _need_links  zCCompiler._need_linkc Cs~t|ts|g}d}t|j}|D]V}tj|\}}|j|}z |j |}||kr`|}|}Wq"t k rvYq"Xq"|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r&rMr1language_orderrRrSrT language_mapgetindexr!) rrVZlangrksourcebaser\ZextlangZextindexrrrdetect_languages    zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrlrfrr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc  Csx|||||||\}} }} } || ||} | D]B} z| | \}}Wntk r\Yq0YnX|| ||| || q0| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepend/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )r]r`KeyError_compile)rrVrrrr^rorprWrrXrYr_r[rZr\rrrcompiles6   zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rr[rZr\r_rprXrrrrsCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerr^ target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. NNotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsr^rorp build_temprvrrrlinkis9zCCompiler.linkc Cs2|tj||j|dd||||||| | | | dS)Nshared)lib_type)r~r SHARED_LIBRARYlibrary_filename) rrrurrrrr|r^rorpr}rvrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|tj||||||||| | | | dSr)r~r SHARED_OBJECT) rrr{rrrrr|r^rorpr}rvrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|tj|||||||d||| d| dSr)r~r EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrr^rorprvrrrlink_executables zCCompiler.link_executablecCstdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. Nryr8rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. Nryr8rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. Nry)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}t|d} z*|D]} | d| q^| d|W5| Xz|j|g|d } Wntk rYd SXz|j| d ||d Wnt t fk rYd SXdS) zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNr T)textwz#include "%s" z=int main (int argc, char **argv) { %s(); return 0; } r;Fza.out)rr) tempfileZmkstemprRfdopenclosewritertZ CompileErrorrZ LinkErrorr2) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions<     zCCompiler.has_functioncCstdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. Nry)rr=rr^rrrfind_library_file$szCCompiler.find_library_filecCs|dkr d}g}|D]|}tj|\}}tj|d}|tj|d}||jkrftd||f|rvtj|}|tj |||j q|S)Nrr*z"unknown file type '%s' (from '%s')) rRrSrT splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer5join obj_extension)rZsource_filenamesrLrZ obj_namesZsrc_namermr\rrrrNOs"    zCCompiler.object_filenamescCs0|dk s t|rtj|}tj|||jSr)rOrRrSrrshared_lib_extensionrrrLrrrrshared_object_filename`s  z CCompiler.shared_object_filenamecCs4|dk s t|rtj|}tj|||jp.dS)Nr)rOrRrSrr exe_extensionrrrrrfs  zCCompiler.executable_filenamestaticc Csl|dk s t|dkrtdt||d}t||d}tj|\}}|||f} |r\d}tj||| S)N)rrZdylibZ xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rOr!getattrrRrSsplitr) rr?rrLrZfmtr\r9rmfilenamerrrrls  zCCompiler.library_filenamer*cCst|dSr)r r^)rmsglevelrrrannounceszCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdSr)r r)rfuncargsrrrrrr szCCompiler.executecCst||jddSN)r)rr)rcmdrrrrszCCompiler.spawncCst|||jdSr)rr)rrZZdstrrrrszCCompiler.move_filecCst|||jddSr)rr)rr+moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r*)Nr*)r)Br# __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrrirhr r%rr.r3r6r7r:r>r@rArBrCrDrErGrHr]r`rarbrcrdrgrnrqrtrsrwrrrr~rrrrrrrrrNrrrrrrr rrrrrrrr s  $   +  "   D  A    , +      r ))zcygwin.*unix)posixr)ntmsvccCsV|dkrtj}|dkrtj}tD]0\}}t||dk sHt||dk r |Sq dS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rRr+rplatform_default_compilersrematch)Zosnamerpatterncompilerrrrget_default_compilers   r)Z unixccompilerZ UnixCCompilerzstandard UNIX-style compiler)Z _msvccompilerZ MSVCCompilerzMicrosoft Visual C++)cygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Z bcppcompilerZ BCPPCompilerzBorland C++ Compiler)rrcygwinZmingw32ZbcppcCsXddlm}g}tD] }|d|dt|dfq|||}|ddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr/zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr5sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss    rc Cs|dkrtj}z"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXz*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rRr+rrrrZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) ZplatrrrrZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers:    rcCsg}|D]}t|tr0dt|kr.dkss8       --PK]ht+99-__pycache__/msvccompiler.cpython-38.opt-1.pycnu[U e5d \ @sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZz,ddlZdZeZejZejZejZejZWnhek rz4ddlZddlZdZeZejZejZejZejZWnek redYnXYnXerejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkre+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnzt||}Wntk r$YdSXg}d}zt||}Wntk rTYqjYnX|||d7}q.|S)zReturn list of registry keys.Nr) RegOpenKeyExRegError RegEnumKeyappend)basekeyhandleLikr./usr/lib64/python3.8/distutils/msvccompiler.py read_keys7s   rcCszt||}Wntk r$YdSXi}d}zt||\}}}Wntk rZYq~YnX|}t||t|<|d7}q.|S)zXReturn dict of registry keys and values. All names are converted to lowercase. Nrr )r r RegEnumValuelower convert_mbcs)rrrdrnamevaluetyperrr read_valuesHs  r cCs:t|dd}|dk r6z |d}Wntk r4YnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr]s  rc@s,eZdZddZddZddZddZd S) MacroExpandercCsi|_||dSN)macros load_macros)selfversionrrr__init__gszMacroExpander.__init__cCs2tD](}t||}|r|||jd|<q.qdS)Nz$(%s))HKEYSr r()r*Zmacropathrrrrrr set_macroks  zMacroExpander.set_macroc Csd|}|d|dd|d|ddd}|d|d z*|d krX|d |d n|d |d Wn*tk r}z tdW5d}~XYnXd}tD]V}zt||}Wntk rYqYnXt|d}t|d||f} | d|jd<qdS)Nz%Software\Microsoft\VisualStudio\%0.1fZ VCInstallDirz \Setup\VCZ productdirZ VSInstallDirz \Setup\VSz Software\Microsoft\.NETFrameworkZ FrameworkDirZ installrootg@ZFrameworkSDKDirzsdkinstallrootv1.1ZsdkinstallrootaPython was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.z.Software\Microsoft\NET Framework Setup\Productrz%s\%sr+z$(FrameworkVersion)) r/KeyErrorrr-r r rr r() r*r+ZvsbaseZnetexcprhrrrrrr)rs,  zMacroExpander.load_macroscCs$|jD]\}}|||}q |Sr')r(itemsreplace)r*r%rvrrrsubszMacroExpander.subN)__name__ __module__ __qualname__r,r/r)r7rrrrr&fsr&cCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|d d d }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.N r g$@r)sysr+findlensplitint)prefixrr%restZ majorVersionZ minorVersionrrrget_build_versions  rIcCs@d}tj|}|dkrdStjd|}tj|t||S)zUReturn the processor architecture. Possible results are "Intel" or "AMD64". z bit (r;Intel))rBr+rCrD)rGrjrrrget_build_architectures  rMcCs0g}|D]"}tj|}||kr||q|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osr.normpathr)pathsZ reduced_pathsr2Znprrrnormalize_and_reduce_pathss   rQc @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd-ddZddZd.ddZd/ddZd0ddZd1ddZddZd d!Zd"d#Zd2d$d%Zd&d'Zd3d)d*Zd+d,ZdS)4 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCsvt||||t|_t|_|jdkr\|jdkrHd|_t|j|_nd|_d|j|_ nd|jd|_ d|_ dS) NrJzSoftware\Microsoft\VisualStudiozSoftware\Microsoft\DevstudiozVisual Studio version %szMicrosoft SDK compiler %sr<F) rr,rI_MSVCCompiler__versionrM_MSVCCompiler__arch_MSVCCompiler__rootr&_MSVCCompiler__macros_MSVCCompiler__product initialized)r*verboseZdry_runZforcerrrr,s  zMSVCCompiler.__init__cCsg|_dtjkrDdtjkrD|drDd|_d|_d|_d|_d|_nx| d|_t |jd krlt d |j |d|_|d|_|d|_|d|_|d|_| d | d z&tjdd D]}|j|qWntk rYnXt|j|_d |jtjd<d|_|jdkrPddddddg|_dddddddg|_n&ddddddg|_dddddddg|_dddg|_|jdkrddddg|_ndddddg|_dg|_d |_dS)!NZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer.rzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.libZinclude;rJz/nologoz/Oxz/MDz/W3z/GXz/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOrTz/INCREMENTAL:noz/DEBUGz /pdb:NoneT)_MSVCCompiler__pathsrNenvironfind_execclinkerr\rcmcget_msvc_pathsrDrrYset_path_env_varrErr0rQjoinZpreprocess_optionsrVcompile_optionscompile_options_debugldflags_sharedrUldflags_shared_debugZldflags_staticrZ)r*r2rrr initializesr                zMSVCCompiler.initializecCs|dkr d}g}|D]}tj|\}}tj|d}|tj|d}||jkrbtd||rrtj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j q|S)Nrmr zDon't know how to compile %s)rNr.splitext splitdriveisabssrc_extensionsrbasename_rc_extensionsrrg res_extension_mc_extensions obj_extension)r*Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenames8s.        zMSVCCompiler.object_filenamesNc  Csp|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |j| D]}z| |\}}Wntk rYqdYnX|rtj |}||j krd|}nT||j krd|}n>||j kr<|}d|}z"||jg| |g|gWqdtk r6}z t|W5d}~XYqdXqdn||jkrtj |}tj |}zl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqdtk r}z t|W5d}~XYqdXqdntd||fd |}z&||jg| | ||g|Wqdtk rh}z t|W5d}~XYqdXqd| S) Nz/cz/Tcz/Tpz/foz-hz-rrSz"Don't know how to compile %s to %sz/Fo)rZrlZ_setup_compilerextendrirhr0rNr.abspath _c_extensions_cpp_extensionsrsspawnrcrrrudirnamerdrnrrrgra)r*Zsourcesrwr(Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrxZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWs                   zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz||jg|Wqtk r}z t|W5d}~XYqXn t d|dS)N)rw/OUT:skipping %s (up-to-date)) rZrl_fix_object_argslibrary_filename _need_linkr~r\rrr r) r*rZoutput_libnamerwr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}|pgD]}|d|q||||d|g}|dk rHtjtj|\}}tj tj|d||}|d|| rZ| |dd<| rj|| |tj|z||jg|Wn,tk r}z t|W5d}~XYnXn td|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:rrz/IMPLIB:r)rZrlrZ _fix_lib_argswarnstrr rNr.rgrrZ EXECUTABLErkrjrrnrrrrrzZmkpathr~rbrrr r)r*Z target_descrrrwZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksj        zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:rr*dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz|jdkrt|j||dS||dSq>|jdkrtD]&}t|d|jdk r|d qqgS) zGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. z dirsrTz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr]r<z%s\6.0NzIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrUrWr-r rXr7rEr)r*r.platformrrrrrrreKs,      zMSVCCompiler.get_msvc_pathscCs6|dkr|d}n ||}|r2d|tj|<dS)zSet environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. r\Zlibraryr]N)rergrNr_)r*rr2rrrrfos   zMSVCCompiler.set_path_env_var)rrr)rrm)NNNrNNN)NrN) NNNNNrNNNN)r)r)r8r9r:__doc__Z compiler_typeZ executablesr|r}rsrurqrtrvZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr,rlryrrrrrrrr`rerfrrrrrRsj  B  X  S  $rRg @z3Importing new compiler from distutils.msvc9compiler)rR)r&).rrBrNZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr-rr rr&rIrMrQrRrZOldMSVCCompilerZdistutils.msvc9compilerrrrrs`       - 9   PK]^(==.__pycache__/msvc9compiler.cpython-38.opt-2.pycnu[U e5d/w@sNddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlZejZejZejZejZejejejejfZej dkoej!dkZ"e"rdZ#d Z$d Z%n d Z#d Z$d Z%dddZ&GdddZ'GdddZ(ddZ)ddZ*ddZ+ddZ,d#ddZ-e)Z.e.dkr:ed e.Gd!d"d"e Z/dS)$N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64r z win-amd64c@sLeZdZddZeeZddZeeZddZeeZddZeeZd S) RegcCs:tD](}|||}|r||kr||Sqt|dSN)HKEYS read_valuesKeyError)clspathkeybasedr//usr/lib64/python3.8/distutils/msvc9compiler.py get_value@s   z Reg.get_valuecCsnzt||}Wntk r$YdSXg}d}zt||}Wntk rTYqjYnX|||d7}q.|SNr) RegOpenKeyExRegError RegEnumKeyappend)rrrhandleLikrrr read_keysHs   z Reg.read_keysc Cszt||}Wntk r$YdSXi}d}zt||\}}}Wntk rZYqYnX|}|||||<|d7}q.|Sr)rr RegEnumValuelower convert_mbcs) rrrr"rr$namevaluetyperrrrZs  zReg.read_valuescCs:t|dd}|dk r6z |d}Wntk r4YnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr)ps  zReg.convert_mbcsN) __name__ __module__ __qualname__r classmethodr&rr) staticmethodrrrrr<src@s,eZdZddZddZddZddZd S) MacroExpandercCsi|_t||_||dSr)macrosVS_BASEvsbase load_macros)selfversionrrr__init__|s zMacroExpander.__init__cCst|||jd|<dS)Nz$(%s))rrr8)r<Zmacrorrrrr set_macroszMacroExpander.set_macroc Cs|d|jdd|d|jdd|dtdz$|dkrP|d td ntd Wntk rvtd YnX|d kr|d |jd|dtdnbd}tD]X}zt||}Wntk rYqYnXt |d}t |d||f}|d|j d<qdS)NZ VCInstallDirz \Setup\VC productdirZ VSInstallDirz \Setup\VSZ FrameworkDirZ installroot @ZFrameworkSDKDirzsdkinstallrootv2.0aPython was built with Visual Studio 2008; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2008 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.g"@ZFrameworkVersionz clr versionZ WindowsSdkDirZcurrentinstallfolderz.Software\Microsoft\NET Framework Setup\Productrz%s\%sr=z$(FrameworkVersion)) r?r:NET_BASErr WINSDK_BASErrrr rrr8)r<r=prhrrrrrr;s2    zMacroExpander.load_macroscCs$|jD]\}}|||}q |Sr)r8itemsreplace)r<r1r%vrrrsubszMacroExpander.subN)r2r3r4r>r?r;rIrrrrr7zsr7cCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|dd d }|dkrd }|dkr||SdS) NzMSC v. r g$@r)sysr=findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions  rXcCs0g}|D]"}tj|}||kr||q|Sr)osrnormpathr!)pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r\cCs<|tj}g}|D]}||kr||qtj|}|Sr)rTrYpathsepr!join)ZvariableZoldListZnewListr$Z newVariablerrrremoveDuplicatess   r_cCst|}ztd|d}Wn"tk r>tdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||stddStj |d }tj|r|Std dS) Nz %s\Setup\VCr@z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batUnable to find vcvarsall.bat)r9rrrr debugrYrisdirenvirongetr^pardirabspathisfile)r=r:r@ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls4        ric Cs8t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd}z| \}}| d krzt| d | d }| d D]d}t|}d |krq|}| d d \} } | } | |kr| tjr| dd} t| || <qW5|j|j Xt|t|kr4ttt||S)NincludelibZlibpathrr`z'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr. =rrJ)rirr ra subprocessPopenPIPErlclosermZ communicatewaitr-rTrr)stripr(endswithrYr]r_rS ValueErrorstrlistkeys) r=ZarchrhZ interestingresultpopenrlrmlinerr+rrrquery_vcvarsalls>         r~rAz(VC %0.1f is not supported by this modulec @seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd-ddZd.ddZd/ddZd0ddZd1ddZd2ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd3d)d*Zd+d,ZdS)4 MSVCCompilerZmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr>VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r<verboseZdry_runZforcerrrr>IszMSVCCompiler.__init__NcCs|dkrt}d}||kr(td|fdtjkrfdtjkrf|drfd|_d|_d|_d|_d |_ n|tksx|d krt |}nt td t |}t t |}|d  tj|_|d tjd <|dtjd<t|jdkrtd|j|d|_|d|_|d|_|d|_|d |_ z(tjd  dD]}|j|q:Wntk rfYnXt|j|_d|jtjd <d|_|jdkrdddddg|_ddddddg|_n&ddddddg|_dddddddg|_dddg|_|jdkrddd d!g|_dg|_d"|_dS)#Nrz--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer _rrkrjrzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.;r z/nologoz/Oxz/MDz/W3z/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOz/INCREMENTAL:noz/DEBUGT)r rrYrcfind_execclinkerrkrcmcPLAT_TO_VCVARSr~rrTr]rrSZ_MSVCCompiler__productr!rr\r^Zpreprocess_optionsrcompile_optionscompile_options_debugldflags_sharedrldflags_shared_debugZldflags_staticr)r<rZok_platsZ plat_specZvc_envrDrrr initializeTs~              zMSVCCompiler.initializecCs|dkr d}g}|D]}tj|\}}tj|d}|tj|d}||jkrbtd||rrtj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j q|S)NrrzDon't know how to compile %s)rYrsplitext splitdriveisabssrc_extensionsrbasename_rc_extensionsr!r^ res_extension_mc_extensions obj_extension)r<Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenamess.        zMSVCCompiler.object_filenamesc  Csp|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |j| D]}z| |\}}Wntk rYqdYnX|rtj |}||j krd|}nT||j krd|}n>||j kr<|}d|}z"||jg| |g|gWqdtk r6}z t|W5d}~XYqdXqdn||jkrtj |}tj |}zl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqdtk r}z t|W5d}~XYqdXqdntd||fd |}z&||jg| | ||g|Wqdtk rh}z t|W5d}~XYqdXqd| S) Nz/cz/Tcz/Tpz/foz-hz-rrz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compiler!extendrrrrYrrf _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr^r)r<Zsourcesrr8Z include_dirsra extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompiles                   zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz||jg|Wqtk r}z t|W5d}~XYqXn t d|dS)N)r/OUT:skipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrkrrr ra) r<rZoutput_libnamerra target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsT|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rD|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}|pgD]}|d|q||||d|g}tj|d} |dk rLtjtj|\}}tj | ||}|d|||| || rl| |dd<| r||| |tj|z||jg|Wn,tk r}z t|W5d}~XYnX|||}|dk rP|\}}d||f}z|dd d ||gWn,tk r@}z t|W5d}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:rrz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestr)rrrZ _fix_lib_argswarnrxr rYrr^rr EXECUTABLErrr!rrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor ra)r< target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrarr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6s             zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifest/MANIFESTFILE:)rYrr^rr!)r<rrr temp_manifestrrrrs z"MSVCCompiler.manifest_setup_ldargscCs^|D]"}|dr|ddd}q,qdS|tjkr|)rz*\s*zI|)w) openrsreadrerDOTALLrIsearchwriteOSError)r<Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs2      z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:rr<dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nzrrrrrrrrrrrrrrrrrr+sj  W  X  _ + r)r )0rYrprQrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyr Z EnumValuer'errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r9rCrBrrr7rXr\r_rir~rrrrrrsN  >. # )  PK]z%)__pycache__/__init__.cpython-38.opt-1.pycnu[U e5d@s&dZddlZejdejdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr*/usr/lib64/python3.8/distutils/__init__.pys PK] ,JJ.__pycache__/unixccompiler.cpython-38.opt-1.pycnu[U &.e;@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedZarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execs@t|||\}}}td}|r6||kr6|||||fS)z'Remove standard library path from rpathZLIBDIR)super _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir __class__//usr/lib64/python3.8/distutils/unixccompiler.pyrUs    zUnixCCompiler._fix_lib_argsc Cs|d||}|\}}}t||} |j| } |r>| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |z| | Wn*t k r} z t | W5d} ~ XYnXdS)N-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr"r"r# preprocess^s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}z ||||d|g|Wn*tk rj}z t|W5d}~XYnXdS)Nr r$)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r"r"r#_compilexs  zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j rz||j |gWqt k r}z t |W5d}~XYqXn t d|dS)N) output_dirskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr@Zoutput_libnamer;rA target_langoutput_filenamer2r"r"r#create_static_libs$   zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|z|tjkr|jdd}n|jdd}| dkrr|jrrd}tj|ddkr@d}d||kr@|d7}q&tj||d kr\d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|W5d}~XYnXn td |dS) Nz%'output_dir' must be a string or Noner$z-grzc++env=Z ld_so_aixr r<)r=rr isinstancestrtype TypeErrorr(r)joinr?r@r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r rA)rZ target_descr@rCr;rrrZexport_symbolsrAr-r.Z build_temprBr/Zlib_optsZld_argsZlinkerioffsetr2r"r"r#linksZ       zUnixCCompiler.linkcCsd|S)N-Lr")rdirr"r"r#library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r")rZ compiler_namer"r"r#_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NCCrr rQZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rMrrr4r5rT)rrRrr"r"r#runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr")rlibr"r"r#library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkr|td}td|} | dkrrttd } n | d } |D] } t j | |} t j | |} t j | |}t j | |}tjdkrL| d s| d rL| d sLt j | | d d|} t j | | d d|} t j | | d d|}t j | | d d|}t j | rb| St j |rx|St j | r| St j |r|SqdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)rUrFz/System/z/usr/z /usr/local/)r>r4r5rrresearchr6Z_default_sysrootgroupr(r)rL startswithexists)rdirsrYrAZshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrRr[r\r^r]r"r"r#find_library_filesF        zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rDrPrSrTrXrZrf __classcell__r"r"r r#r -sb        B*r )__doc__r(r4r_Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r"r"r"r#s    PK]|&__pycache__/spawn.cpython-38.opt-1.pycnu[U e5d@sdZddlZddlZddlmZmZddlmZddlm Z dddZ d d Z dd d Z ej d krjdadadddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkresz _spawn_posix...cSsg|] }t|qSrr*r,rrrr/kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r(zunable to execute %r: %s rz(unable to execute %r for unknown reasonsrrz"command %r terminated by signal %drz1unknown error executing %r: termination status %d)#rrr r execvpexecvsysplatform _cfg_target distutilsr'Zget_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr#rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr$Zexec_fnenvr'Z cur_targetZmy_msgpideZstatusr%Z exit_statusrrrr Ws           r c Cstj|\}}tjdkr*|dkr*|d}tj|r:|S|dkrtjdd}|dkrztd}Wnt t fk rtj }YnX|sdS| tj }|D]&}tj||}tj|r|SqdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. Zwin32z.exeNPATHCS_PATH)r pathsplitextr3r4isfiler9r:confstrAttributeError ValueErrordefpathr7pathsepr )r$rN_Zextpathspfrrrrs(     r)rrr)rrr)rrr)N)__doc__r3r Zdistutils.errorsrrZdistutils.debugrr6rrrrr4r5r8r rrrrrs      RPK]Z@+n/n/*__pycache__/sysconfig.cpython-38.opt-1.pycnu[U .eP@sdZddlZddlZddlZddlZddlmZddlmZm Z ej ej Z ej ejZej ejZej ejZdejkrej ejdZn&ejrej ej ejZneZddZeed dZejd krd d ZeeZeeZd dZeZ dZ!ze sej"Z!Wne#k r*YnXddZ$d-ddZ%d.ddZ&ddZ'ddZ(ddZ)d/ddZ*e+dZ,e+dZ-e+d Z.d0d!d"Z/d#d$Z0da1d%d&Z2d'd(Z3d)d*Z4d+d,Z5dS)1aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformError) get_platformget_host_platformZ_PYTHON_PROJECT_BASEcCs,dD]"}tjtj|d|rdSqdS)N)ZSetupz Setup.localZModulesTF)ospathisfilejoin)dfnr +/usr/lib64/python3.8/distutils/sysconfig.py_is_python_source_dir+sr_homentcCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)rrnormcase startswithr PREFIX)r r r r _fix_pcbuild4s rcCstr ttSttS)N) _sys_homer project_baser r r r _python_build<srcCsdtjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. z%d.%dN)sys version_infor r r r get_python_versionPsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjt dd}tj |Sdt t }tj|d|Stjdkrtrtj|dtjj tj|dStj|dStd tjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonZincluderPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXrname python_buildrrrr get_config_varnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr r r get_python_incXs*      r+cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tj||dt}|r`|Stj|dSnrendstartcloseitems isinstanceupdate)r rPrVrOZdoneZnotdonerQrRrSrTZtmpvZrenamed_variablesr#valuefounditemZafterkr r r parse_makefile/s                       rmcCsVt|pt|}|rR|\}}|d|||d||d}qqRq|S)aExpand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. rrN)r_r`raspangetrL)svarsrRZbegrcr r r expand_makefile_varss  *rrc CsVtjddjtjtjttjddd}t |t t dgd}|j }ia t |dS) z7Initialize the module as appropriate for POSIX systems.Z_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rCr)Zabir9Z multiarchbuild_time_varsrN)rr>rorDrabiflagsr9getattrrF __import__globalslocalsrsr<rh)r#Z_temprsr r r _init_posixs rycCs~i}tddd|d<tddd|d<tdd|d<td|d<d |d <td d |d <tjtj t j |d<|a dS)z+Initialize the module as appropriate for NTrrrBZLIBDESTZ BINLIBDESTr@Z INCLUDEPY EXT_SUFFIXz.exeZEXE.rZVERSIONZBINDIRN) r0r+_impextension_suffixesrr]rrdirnameabspathr executabler<)rPr r r _init_ntsrcGs\tdkr*tdtj}|r(|niattd<ttd<td}|dk rV|td<tdt}tjdkrtrtj t }tj ||}ntj t }tj tj |td<tr tjdkr t}tj tds |tkr tj |td}tj |td<tjd kr*d dl}|t|rTg}|D]}|t|q8|StSdS) aWith no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. NZ_init_r* exec_prefixrzSOrrr1r)r<rwrorr#rr.rr$rr~rGr rr&isabsgetcwdrr9r:Zcustomize_config_varsappend)argsfuncrrbaser:Zvalsr#r r r r=sB       r=cCs*|dkrddl}|dtdt|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) rrNz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningr=ro)r#rr r r r%!sr%)rN)rrN)N)N)6__doc__r|rrHrrXrutilrrrr&r*rrr. base_prefixr"base_exec_prefixr!r>rrrr~rrrurr#rrr$r'rtAttributeErrorrr+r0r;rArGrUrIr[r_rarmrrr<ryrr=r%r r r r s\       ( +I      jJPK]cE-__pycache__/fancy_getopt.cpython-38.opt-2.pycnu[U e5dxE@sddlZddlZddlZddlZddlTdZedeZedeefZe ddZ Gdd d Z d d Z d d ejDZddZddZGdddZedkrdZdD]*ZedeedeeeeqdS)N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdddZddZddZddd Zd d Zd d ZddZ ddZ ddZ ddZ d ddZ ddZd!ddZd"ddZdS)# FancyGetoptNcCsN||_i|_|jr|i|_i|_g|_g|_i|_i|_i|_ g|_ dSN) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_orderselfrr./usr/lib64/python3.8/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs(|j|jD]}||j|d<qdS)Nr)rclearr)roptionrrrr Qs  zFancyGetopt._build_indexcCs||_|dSr)rr rrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|j|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs   zFancyGetopt.add_optioncCs ||jkSr)rrrrrr has_optioncszFancyGetopt.has_optioncCs |tSr translate longopt_xlaterrrr get_attr_namehszFancyGetopt.get_attr_namecCsN|D]@\}}||jkr,td|||f||jkrtd|||fqdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs||d||_dS)Nr )r'r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs||d||_dS)Nznegative alias)r'r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|ji|_|jD]}t|dkrD|\}}}d}n(t|dkr^|\}}}}ntd|ft|t rt|dkrt d||dkst|t rt|dkst d|||j|<|j ||d d kr|r|d }|dd }d|j |<nF|j |}|dk r:|j |r0t d ||f||jd <d|j |<|j|}|dk r|j ||j |krt d ||ft|st d||||j|<|r"|j |||j|d<q"dS)Nrzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2z:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r rrrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchr#r)rrlongshorthelpr1Zalias_torrr_grok_option_tablest                    zFancyGetopt._grok_option_tablec Csn|dkrtjdd}|dkr*t}d}nd}|d|j}zt|||j\}}Wn,tjk r}z t |W5d}~XYnX|D]\}}t |dkr|ddkr|j |d}n |dd}|j |} | r| }|j|s|j |} | r| }d}nd}|j|} |r:|j | dk r:t|| dd}t|| ||j||fq|rf||fS|SdS)Nr-TF r,rr)sysargv OptionDummyr<joinr getoptr errorZDistutilsArgErrorr2rr r6rr rr1getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr&valr attrrrrrBsB         zFancyGetopt.getoptcCs|jdkrtdn|jSdS)Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsjd}|jD]L}|d}|d}t|}|ddkr:|d}|dk rJ|d}||kr |}q |ddd}d}||} d|} |r|g} nd g} |jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| d ||| dfn| d ||fn:d ||f}| r4| d ||| dfn| d|| ddD]}| | |qNq| S)Nrr-r.r/r,Nr=zOption summary:r*z --%-*s %sz --%-*s z%s (-%s)z --%-*s)rr2 wrap_textr)rheaderZmax_optrr9r:lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr;textZ opt_namesrrr generate_helpsH         zFancyGetopt.generate_helpcCs0|dkrtj}||D]}||dqdS)N )r>stdoutrTwrite)rrPfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname__rr rrrr#r'r(r)r<rBrLrTrZrrrrrs (  M = OrcCst|}|||||Sr)rr)rB)optionsZ negative_optrGrFparserrrr fancy_getoptos r`cCsi|]}t|dqS)r=)ord).0Z_wscharrrr usrccCs|dkr gSt||kr|gS|}|t}td|}dd|D}g}|rg}d}|rt|d}|||kr||d|d=||}q\|r|dddkr|d=qq\|r|dkr||dd||d|d|d<|dddkr|d=|d|qN|S)Nz( +|-+)cSsg|] }|r|qSrr)rbZchrrr szwrap_text..rr.r=)r2 expandtabsr!WS_TRANSresplitrrA)rSwidthZchunksrRZcur_lineZcur_lenrQrrrrOws:      rOcCs |tSrr )r&rrrtranslate_longoptsrkc@seZdZgfddZdS)r@cCs|D]}t||dqdSr)rE)rr^r&rrrrszOptionDummy.__init__N)r[r\r]rrrrrr@sr@__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %drU)r>stringrhrBZdistutils.errorsZ longopt_patcompiler7Z neg_alias_rer5 maketransr"rr`Z whitespacergrOrkr@r[rSwprintrArrrr s( T6  PK]|W!!*__pycache__/sysconfig.cpython-38.opt-2.pycnu[U .eP@sddlZddlZddlZddlZddlmZddlmZmZej ej Z ej ej Zej ejZej ejZdejkrej ejdZn&ejrej ej ejZneZddZeeddZejd krd d ZeeZeeZd d ZeZdZ zesej!Z Wne"k r&YnXddZ#d,ddZ$d-ddZ%ddZ&ddZ'ddZ(d.ddZ)e*dZ+e*dZ,e*dZ-d/d d!Z.d"d#Z/da0d$d%Z1d&d'Z2d(d)Z3d*d+Z4dS)0N)DistutilsPlatformError) get_platformget_host_platformZ_PYTHON_PROJECT_BASEcCs,dD]"}tjtj|d|rdSqdS)N)ZSetupz Setup.localZModulesTF)ospathisfilejoin)dfnr +/usr/lib64/python3.8/distutils/sysconfig.py_is_python_source_dir+sr_homentcCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)rrnormcase startswithr PREFIX)r r r r _fix_pcbuild4s rcCstr ttSttS)N) _sys_homer project_baser r r r _python_build<srcCsdtjddS)Nz%d.%d)sys version_infor r r r get_python_versionPsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjt dd}tj |Sdt t }tj|d|Stjdkrtrtj|dtjj tj|dStj|dStdtjdS) NposixsrcdirZIncludepythonZincluderPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXrname python_buildrrrr get_config_varnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr r r get_python_incXs*      r+cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tj||dt}|r`|Stj|dSnrendstartcloseitems isinstanceupdate)r rPrVrOZdoneZnotdonerQrRrSrTZtmpvZrenamed_variablesr#valuefounditemZafterkr r r parse_makefile/s                       rmcCsVt|pt|}|rR|\}}|d|||d||d}qqRq|S)Nrr)r_r`raspangetrL)svarsrRZbegrcr r r expand_makefile_varss  *rrc CsVtjddjtjtjttjddd}t |t t dgd}|j }ia t |dS)NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rCr)Zabir9Z multiarchbuild_time_varsr)rr>rorDrabiflagsr9getattrrF __import__globalslocalsrsr<rh)r#Z_temprsr r r _init_posixs rycCs~i}tddd|d<tddd|d<tdd|d<td|d<d |d <td d |d <tjtj t j |d<|a dS)NrrrBZLIBDESTZ BINLIBDESTr@Z INCLUDEPY EXT_SUFFIXz.exeZEXE.rZVERSIONZBINDIR) r0r+_impextension_suffixesrr]rrdirnameabspathr executabler<)rPr r r _init_ntsrcGs\tdkr*tdtj}|r(|niattd<ttd<td}|dk rV|td<tdt}tjdkrtrtj t }tj ||}ntj t }tj tj |td<tr tjdkr t}tj tds |tkr tj |td}tj |td<tjdkr*d dl}|t|rTg}|D]}|t|q8|StSdS) NZ_init_r* exec_prefixrzSOrrr1r)r<rwrorr#rr.rr$rr~rGr rr&isabsgetcwdrr9r:Zcustomize_config_varsappend)argsfuncrrbaser:Zvalsr#r r r r=sB       r=cCs*|dkrddl}|dtdt|S)Nrrz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningr=ro)r#rr r r r%!sr%)rN)rrN)N)N)5r|rrHrrXrutilrrrr&r*rrr. base_prefixr"base_exec_prefixr!r>rrrr~rrrurr#rrr$r'rtAttributeErrorrr+r0r;rArGrUrIr[r_rarmrrr<ryrr=r%r r r r  sZ      ( +I      jJPK]/hhDhD(__pycache__/msvc9compiler.cpython-38.pycnu[U e5d/w@sRdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"dkZ#e#rd Z$d Z%d Z&n d Z$d Z%dZ&dddZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,ddZ-d$ddZ.e*Z/e/d kr>ed!e/Gd"d#d#e Z0dS)%a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64r z win-amd64c@sPeZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCs:tD](}|||}|r||kr||Sqt|dSN)HKEYS read_valuesKeyError)clspathkeybasedr//usr/lib64/python3.8/distutils/msvc9compiler.py get_value@s   z Reg.get_valuecCsnzt||}Wntk r$YdSXg}d}zt||}Wntk rTYqjYnX|||d7}q.|S)zReturn list of registry keys.Nr) RegOpenKeyExRegError RegEnumKeyappend)rrrhandleLikrrr read_keysHs   z Reg.read_keysc Cszt||}Wntk r$YdSXi}d}zt||\}}}Wntk rZYqYnX|}|||||<|d7}q.|S)z`Return dict of registry keys and values. All names are converted to lowercase. Nrr)rr RegEnumValuelower convert_mbcs) rrrr!rr#namevaluetyperrrrZs  zReg.read_valuescCs:t|dd}|dk r6z |d}Wntk r4YnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr(ps  zReg.convert_mbcsN) __name__ __module__ __qualname____doc__r classmethodr%rr( staticmethodrrrrr<src@s,eZdZddZddZddZddZd S) MacroExpandercCsi|_t||_||dSr)macrosVS_BASEvsbase load_macros)selfversionrrr__init__|s zMacroExpander.__init__cCst|||jd|<dS)Nz$(%s))rrr8)r<Zmacrorrrrr set_macroszMacroExpander.set_macroc Cs|d|jdd|d|jdd|dtdz$|dkrP|d td ntd Wntk rvtd YnX|d kr|d |jd|dtdnbd}tD]X}zt||}Wntk rYqYnXt |d}t |d||f}|d|j d<qdS)NZ VCInstallDirz \Setup\VC productdirZ VSInstallDirz \Setup\VSZ FrameworkDirZ installroot @ZFrameworkSDKDirzsdkinstallrootv2.0aPython was built with Visual Studio 2008; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2008 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.g"@ZFrameworkVersionz clr versionZ WindowsSdkDirZcurrentinstallfolderz.Software\Microsoft\NET Framework Setup\Productrz%s\%sr=z$(FrameworkVersion)) r?r:NET_BASErr WINSDK_BASErrrrrrr8)r<r=prhrrrrrr;s2    zMacroExpander.load_macroscCs$|jD]\}}|||}q |Sr)r8itemsreplace)r<r0r$vrrrsubszMacroExpander.subN)r1r2r3r>r?r;rIrrrrr7zsr7cCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|d d d }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.N r g$@r)sysr=findlensplitint)prefixr#r0restZ majorVersionZ minorVersionrrrget_build_versions  rXcCs0g}|D]"}tj|}||kr||q|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osrnormpathr )pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r\cCs<|tj}g}|D]}||kr||qtj|}|S)z8Remove duplicate values of an environment variable. )rTrYpathsepr join)ZvariableZoldListZnewListr#Z newVariablerrrremoveDuplicatess   r_cCst|}ztd|d}Wn"tk r>tdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||std dStj |d }tj|r|Std dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCr@z%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batUnable to find vcvarsall.bat)r9rrrr debugrYrisdirenvirongetr^pardirabspathisfile)r=r:r@ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls4        ric Cs8t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd }z| \}}| d krzt| d | d }| d D]d}t|}d |krq|}| d d\} } | } | |kr| tjr| dd} t| || <qW5|j|j Xt|t|kr4ttt||S)zDLaunch vcvarsall.bat and read the settings from its environment includelibZlibpathrNr`z'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr- =rrJ)rirr ra subprocessPopenPIPErlclosermZ communicatewaitr,rTrr(stripr'endswithrYr]r_rS ValueErrorstrlistkeys) r=ZarchrhZ interestingresultpopenrlrmlinerr*rrrquery_vcvarsalls>         r~rAz(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd.ddZd/ddZd0ddZd1ddZd2ddZd3ddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd4d*d+Zd,d-ZdS)5 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr>VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r<verboseZdry_runZforcerrrr>IszMSVCCompiler.__init__NcCs(|jrtd|dkrt}d}||kr6td|fdtjkrtdtjkrt|drtd|_d|_d|_ d |_ d |_ n|tks|d krt |}nt td t |}t t|}|d tj|_|dtjd<|dtjd<t|jdkrtd|j|d|_|d|_|d|_ |d |_ |d |_ z(tjd dD]}|j|qHWntk rtYnXt|j|_d|jtjd <d|_|jdkrdddddg|_ddddddg|_n&ddddddg|_dddddddg|_dddg|_|jd krddd!d"g|_dg|_d#|_dS)$Nzdon't init multiple timesrz--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer _rrkrjrzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.;r z/nologoz/Oxz/MDz/W3z/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOz/INCREMENTAL:noz/DEBUGT) rAssertionErrorr rrYrcfind_execclinkerrkrcmcPLAT_TO_VCVARSr~rrTr]rrSZ_MSVCCompiler__productr rr\r^Zpreprocess_optionsrcompile_optionscompile_options_debugldflags_sharedrldflags_shared_debugZldflags_static)r<rZok_platsZ plat_specZvc_envrDrrr initializeTs              zMSVCCompiler.initializecCs|dkr d}g}|D]}tj|\}}tj|d}|tj|d}||jkrbtd||rrtj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j q|S)NrrzDon't know how to compile %s)rYrsplitext splitdriveisabssrc_extensionsrbasename_rc_extensionsr r^ res_extension_mc_extensions obj_extension)r<Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenamess.        zMSVCCompiler.object_filenamesc  Csp|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |j| D]}z| |\}}Wntk rYqdYnX|rtj |}||j krd|}nT||j krd|}n>||j kr<|}d|}z"||jg| |g|gWqdtk r6}z t|W5d}~XYqdXqdn||jkrtj |}tj |}zl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqdtk r}z t|W5d}~XYqdXqdntd||fd |}z&||jg| | ||g|Wqdtk rh}z t|W5d}~XYqdXqd| S) Nz/cz/Tcz/Tpz/foz-hz-rrz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compiler extendrrrrYrrf _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr^r)r<Zsourcesrr8Z include_dirsra extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompiles                   zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz||jg|Wqtk r}z t|W5d}~XYqXn t d|dS)N)r/OUT:skipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrkrrr ra) r<rZoutput_libnamerra target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsT|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rD|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}|pgD]}|d|q||||d|g}tj|d} |dk rLtjtj|\}}tj | ||}|d|||| || rl| |dd<| r||| |tj|z||jg|Wn,tk r}z t|W5d}~XYnX|||}|dk rP|\}}d||f}z|dd d ||gWn,tk r@}z t|W5d}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:rrz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestr)rrrZ _fix_lib_argswarnrxr rYrr^rr EXECUTABLErrr rrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor ra)r< target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrarr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6s             zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifest/MANIFESTFILE:)rYrr^rr )r<rrr temp_manifestrrrrs z"MSVCCompiler.manifest_setup_ldargscCs^|D]"}|dr|ddd}q,qdS|tjkr|)rz*\s*zI|)w) openrsreadrerDOTALLrIsearchwriteOSError)r<Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs2      z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:rr<dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nzrrrrrrrrrrrrrrrrrr+sl  W  X  _ + r)r )1r4rYrprQrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyrZ EnumValuer&errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r9rCrBrrr7rXr\r_rir~rrrrrrsP  >. # )  PK]v #__pycache__/dep_util.cpython-38.pycnu[U e5d @s6dZddlZddlmZddZddZd d d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCs`tj|s tdtj|tj|s0dSddlm}t||}t||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existrST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r */usr/lib64/python3.8/distutils/dep_util.pynewer s    rcCsht|t|krtdg}g}tt|D]2}t||||r,||||||q,||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r rnewer_pairwise srerrorcCstj|sdSddlm}t||}|D]P}tj|sb|dkrHn|dkrTq.n|dkrbdSt||}||kr.dSq.dS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rrrrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s    r)r)__doc__rZdistutils.errorsrrrrr r r rs  PK]$  *__pycache__/text_file.cpython-38.opt-2.pycnu[U e5d0@s"ddlZddlZGdddZdS)Nc@speZdZddddddddZdddZdd Zd d Zdd d ZdddZdddZ ddZ ddZ ddZ dS)TextFilerstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtd|jD]0}||kr@t||||q"t|||j|q"|D]}||jkr\td|q\|dkr||n||_||_d|_g|_ dS)Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsoptr+/usr/lib64/python3.8/distutils/text_file.py__init__Ns   zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)Nr)r r)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|dSN)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}||jdt|ttfrD|dt|n|d||t|d|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|||dS)Nzerror: ) ValueErrorr(rr&r'rrrerrorszTextFile.errorcCs tjd|||ddS)Nz warning:  )sysstderrwriter(r*rrrwarnsz TextFile.warncCs|jr|jd}|jd=|Sd}|j}|dkr6d}|jr|r|d}|dkrTnX|dksl||ddkr|ddkr|dp~d}|d||}|dkrq n |dd}|jr|r|dkr|d |S|j r| }||}t |j t r |j dd|j d<n|j |j dg|_ n:|dkr,dSt |j t rL|j dd|_ n |j d|_ |jrr|jrr|}n"|jr| }n|jr|}|dks|dkr|jrq |jr|ddkr|dd}q |d dd kr|dd d}q |S) Nr#rr\r,z\#z2continuation line immediately precedes end-of-filez\ )rrreadlinerfindstripreplacer r0r lstripr!rr"rrrstripr)rr'Z buildup_lineposZeolrrrr5sf           zTextFile.readlinecCs(g}|}|dkr|S||qdSr)r5r )rlinesr'rrr readliness zTextFile.readlinescCs|j|dSr)rr )rr'rrr unreadlineszTextFile.unreadline)NN)N)N)N) __name__ __module__ __qualname__r rrrr(r+r0r5r=r>rrrrr s"; !  x r)r-rrrrrrsPK]| __pycache__/spawn.cpython-38.pycnu[U e5d@sdZddlZddlZddlmZmZddlmZddlm Z dddZ d d Z dd d Z ej d krjdadadddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkresz _spawn_posix...cSsg|] }t|qSrr*r,rrrr/kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r(zunable to execute %r: %s rz(unable to execute %r for unknown reasonsrrz"command %r terminated by signal %drz1unknown error executing %r: termination status %d)#rrr r execvpexecvsysplatform _cfg_target distutilsr'Zget_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr#rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr$Zexec_fnenvr'Z cur_targetZmy_msgpideZstatusr%Z exit_statusrrrr Ws           r c Cstj|\}}tjdkr*|dkr*|d}tj|r:|S|dkrtjdd}|dkrztd}Wnt t fk rtj }YnX|sdS| tj }|D]&}tj||}tj|r|SqdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. Zwin32z.exeNPATHCS_PATH)r pathsplitextr3r4isfiler9r:confstrAttributeError ValueErrordefpathr7pathsepr )r$rN_Zextpathspfrrrrs(     r)rrr)rrr)rrr)N)__doc__r3r Zdistutils.errorsrrZdistutils.debugrr6rrrrr4r5r8r rrrrrs      RPK]ht+99'__pycache__/msvccompiler.cpython-38.pycnu[U e5d \ @sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZz,ddlZdZeZejZejZejZejZWnhek rz4ddlZddlZdZeZejZejZejZejZWnek redYnXYnXerejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkre+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnzt||}Wntk r$YdSXg}d}zt||}Wntk rTYqjYnX|||d7}q.|S)zReturn list of registry keys.Nr) RegOpenKeyExRegError RegEnumKeyappend)basekeyhandleLikr./usr/lib64/python3.8/distutils/msvccompiler.py read_keys7s   rcCszt||}Wntk r$YdSXi}d}zt||\}}}Wntk rZYq~YnX|}t||t|<|d7}q.|S)zXReturn dict of registry keys and values. All names are converted to lowercase. Nrr )r r RegEnumValuelower convert_mbcs)rrrdrnamevaluetyperrr read_valuesHs  r cCs:t|dd}|dk r6z |d}Wntk r4YnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr]s  rc@s,eZdZddZddZddZddZd S) MacroExpandercCsi|_||dSN)macros load_macros)selfversionrrr__init__gszMacroExpander.__init__cCs2tD](}t||}|r|||jd|<q.qdS)Nz$(%s))HKEYSr r()r*Zmacropathrrrrrr set_macroks  zMacroExpander.set_macroc Csd|}|d|dd|d|ddd}|d|d z*|d krX|d |d n|d |d Wn*tk r}z tdW5d}~XYnXd}tD]V}zt||}Wntk rYqYnXt|d}t|d||f} | d|jd<qdS)Nz%Software\Microsoft\VisualStudio\%0.1fZ VCInstallDirz \Setup\VCZ productdirZ VSInstallDirz \Setup\VSz Software\Microsoft\.NETFrameworkZ FrameworkDirZ installrootg@ZFrameworkSDKDirzsdkinstallrootv1.1ZsdkinstallrootaPython was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32, by passing "-c mingw32" to setup.py.z.Software\Microsoft\NET Framework Setup\Productrz%s\%sr+z$(FrameworkVersion)) r/KeyErrorrr-r r rr r() r*r+ZvsbaseZnetexcprhrrrrrr)rs,  zMacroExpander.load_macroscCs$|jD]\}}|||}q |Sr')r(itemsreplace)r*r%rvrrrsubszMacroExpander.subN)__name__ __module__ __qualname__r,r/r)r7rrrrr&fsr&cCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|d d d }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.N r g$@r)sysr+findlensplitint)prefixrr%restZ majorVersionZ minorVersionrrrget_build_versions  rIcCs@d}tj|}|dkrdStjd|}tj|t||S)zUReturn the processor architecture. Possible results are "Intel" or "AMD64". z bit (r;Intel))rBr+rCrD)rGrjrrrget_build_architectures  rMcCs0g}|D]"}tj|}||kr||q|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osr.normpathr)pathsZ reduced_pathsr2Znprrrnormalize_and_reduce_pathss   rQc @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd-ddZddZd.ddZd/ddZd0ddZd1ddZddZd d!Zd"d#Zd2d$d%Zd&d'Zd3d)d*Zd+d,ZdS)4 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxx.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCsvt||||t|_t|_|jdkr\|jdkrHd|_t|j|_nd|_d|j|_ nd|jd|_ d|_ dS) NrJzSoftware\Microsoft\VisualStudiozSoftware\Microsoft\DevstudiozVisual Studio version %szMicrosoft SDK compiler %sr<F) rr,rI_MSVCCompiler__versionrM_MSVCCompiler__arch_MSVCCompiler__rootr&_MSVCCompiler__macros_MSVCCompiler__product initialized)r*verboseZdry_runZforcerrrr,s  zMSVCCompiler.__init__cCsg|_dtjkrDdtjkrD|drDd|_d|_d|_d|_d|_nx| d|_t |jd krlt d |j |d|_|d|_|d|_|d|_|d|_| d | d z&tjdd D]}|j|qWntk rYnXt|j|_d |jtjd<d|_|jdkrPddddddg|_dddddddg|_n&ddddddg|_dddddddg|_dddg|_|jdkrddddg|_ndddddg|_dg|_d |_dS)!NZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer.rzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.libZinclude;rJz/nologoz/Oxz/MDz/W3z/GXz/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOrTz/INCREMENTAL:noz/DEBUGz /pdb:NoneT)_MSVCCompiler__pathsrNenvironfind_execclinkerr\rcmcget_msvc_pathsrDrrYset_path_env_varrErr0rQjoinZpreprocess_optionsrVcompile_optionscompile_options_debugldflags_sharedrUldflags_shared_debugZldflags_staticrZ)r*r2rrr initializesr                zMSVCCompiler.initializecCs|dkr d}g}|D]}tj|\}}tj|d}|tj|d}||jkrbtd||rrtj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j q|S)Nrmr zDon't know how to compile %s)rNr.splitext splitdriveisabssrc_extensionsrbasename_rc_extensionsrrg res_extension_mc_extensions obj_extension)r*Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenames8s.        zMSVCCompiler.object_filenamesNc  Csp|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |j| D]}z| |\}}Wntk rYqdYnX|rtj |}||j krd|}nT||j krd|}n>||j kr<|}d|}z"||jg| |g|gWqdtk r6}z t|W5d}~XYqdXqdn||jkrtj |}tj |}zl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqdtk r}z t|W5d}~XYqdXqdntd||fd |}z&||jg| | ||g|Wqdtk rh}z t|W5d}~XYqdXqd| S) Nz/cz/Tcz/Tpz/foz-hz-rrSz"Don't know how to compile %s to %sz/Fo)rZrlZ_setup_compilerextendrirhr0rNr.abspath _c_extensions_cpp_extensionsrsspawnrcrrrudirnamerdrnrrrgra)r*Zsourcesrwr(Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrxZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWs                   zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJz||jg|Wqtk r}z t|W5d}~XYqXn t d|dS)N)rw/OUT:skipping %s (up-to-date)) rZrl_fix_object_argslibrary_filename _need_linkr~r\rrr r) r*rZoutput_libnamerwr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}|pgD]}|d|q||||d|g}|dk rHtjtj|\}}tj tj|d||}|d|| rZ| |dd<| rj|| |tj|z||jg|Wn,tk r}z t|W5d}~XYnXn td|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:rrz/IMPLIB:r)rZrlrZ _fix_lib_argswarnstrr rNr.rgrrZ EXECUTABLErkrjrrnrrrrrzZmkpathr~rbrrr r)r*Z target_descrrrwZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksj        zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:rr*dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz|jdkrt|j||dS||dSq>|jdkrtD]&}t|d|jdk r|d qqgS) zGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. z dirsrTz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr]r<z%s\6.0NzIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrUrWr-r rXr7rEr)r*r.platformrrrrrrreKs,      zMSVCCompiler.get_msvc_pathscCs6|dkr|d}n ||}|r2d|tj|<dS)zSet environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. r\Zlibraryr]N)rergrNr_)r*rr2rrrrfos   zMSVCCompiler.set_path_env_var)rrr)rrm)NNNrNNN)NrN) NNNNNrNNNN)r)r)r8r9r:__doc__Z compiler_typeZ executablesr|r}rsrurqrtrvZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr,rlryrrrrrrrr`rerfrrrrrRsj  B  X  S  $rRg @z3Importing new compiler from distutils.msvc9compiler)rR)r&).rrBrNZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr-rr rr&rIrMrQrRrZOldMSVCCompilerZdistutils.msvc9compilerrrrrs`       - 9   PK]˰&__pycache__/spawn.cpython-38.opt-2.pycnu[U e5d@s~ddlZddlZddlmZmZddlmZddlmZdddZ dd Z dd d Z ej d krfda dadd dZdddZdS)N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkresz _spawn_posix...cSsg|] }t|qSrr*r,rrrr/kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r(zunable to execute %r: %s rz(unable to execute %r for unknown reasonsrrz"command %r terminated by signal %drz1unknown error executing %r: termination status %d)#rrr r execvpexecvsysplatform _cfg_target distutilsr'Zget_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr#rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr$Zexec_fnenvr'Z cur_targetZmy_msgpideZstatusr%Z exit_statusrrrr Ws           r c Cstj|\}}tjdkr*|dkr*|d}tj|r:|S|dkrtjdd}|dkrztd}Wnt t fk rtj }YnX|sdS| tj }|D]&}tj||}tj|r|SqdS)NZwin32z.exePATHCS_PATH)r pathsplitextr3r4isfiler9r:confstrAttributeError ValueErrordefpathr7pathsepr )r$rN_Zextpathspfrrrrs(     r)rrr)rrr)rrr)N)r3r Zdistutils.errorsrrZdistutils.debugrr6rrrrr4r5r8r rrrrr s      RPK]~!!*__pycache__/cygwinccompiler.cpython-38.pycnu[U e5d^@@sdZddlZddlZddlZddlmZmZmZddlZddl m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZdd lmZd d ZGd dde ZGdddeZdZdZdZ ddZ!e"dZ#ddZ$ddZ%ddZ&dS)adistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)sysversionfind ValueError)Zmsc_posZmsc_verr1/usr/lib64/python3.8/distutils/cygwinccompiler.py get_msvcr?s rc @sReZdZdZdZdZdZdZdZdZ dZ dd d Z d d Z dddZ dddZdS)CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. cygwinz.o.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|tk rB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrap2.13-shared -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %sZcompiler compiler_soZ compiler_cxxZ linker_exeZ linker_so2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr%dsN     zCygwinCCompiler.__init__c Cs|dks|dkrVz|dd|d|gWqtk rR}z t|W5d}~XYqXnNz"||j||d|g|Wn*tk r}z t|W5d}~XYnXdS)z:Compiles the source by spawning GCC and windres if needed..rc.resZwindresz-iz-oN)Zspawnr r r#)r0objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsPt| p g} t|pg}t|p&g}||j|dk r||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}|D]}| |q| t ||fd ||jd kr| d |g| d |gn | || s(| d t||||||||d| | | | | dS)zLink the objects.Nrrz.deflibrz LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr/Z EXECUTABLEr-ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r0Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr:Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrGsR          zCygwinCCompiler.linkcCs|dkr d}g}|D]}tjtj|\}}||jddgkrRtd||f|rbtj|}|dkr|tj||||j q|tj|||j q|S)z#Adds supports for rc and res files.NrKr5r6z"unknown file type '%s' (from '%s'))r6r5) r@rArCnormcaseZsrc_extensionsr rDrFrE obj_extension)r0Zsource_filenamesZ strip_dirrHZ obj_namesZsrc_namebaser9rrrobject_filenamess&    z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrK)__name__ __module__ __qualname____doc__r,rMZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr%r<rGrOrrrrrYs, ; Nrc@seZdZdZdZdddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nrr r!r$z--entry _DllMain@12rKz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %sr") rr%r+r* is_cygwingccr r.r-r/r)r0r1r2r3r4Z entry_pointrrrr%s.   zMingw32CCompiler.__init__N)rrr)rPrQrRrSr,r%rrrrrTsrTokznot okZ uncertainc Csddlm}dtjkrtdfS|}zLt|}z4d|krPtd|fWWSt d|fWWSW5|XWn8t k r}zt d||j ffWYSd }~XYnXd S) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %sN) distutilsrWrrr'Zget_config_h_filenameopenclosereadCONFIG_H_NOTOKOSErrorCONFIG_H_UNCERTAINstrerror)rWfnZconfig_hexcrrrr&Hs    r&s(\d+\.\d+(\.\d+)*)cCsl|d}t|dkrdSt|dtdj}z |}W5|Xt|}|dkrZdSt | d S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNT)shellstdout) splitrrrrcrZr[ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rocCsdddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)ro).0rjrrr sz get_versions..)tuple)Zcommandsrrrr)s r)cCstddg}|dS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rmrrrrUs rU)'rSr@rr> subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rXr Zdistutils.versionrZdistutils.spawnrrrrTr'r\r^r&compilerfror)rUrrrrs0/     ;1+ PK]Ɓk k *__pycache__/extension.cpython-38.opt-2.pycnu[U e5d)@s*ddlZddlZGdddZddZdS)Nc@seZdZdddZddZdS) ExtensionNcKst|tstdt|tr.tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}dt|}d |}t|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr+/usr/lib64/python3.8/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs6              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*r'r,rrrrrs D /rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}z^g}| } | dkrdq| | rpqP| d| dkrdkrnn| d | qP|| |} || } | d} t | g} d} | ddD]}| dk r| |d} qtj|d}|dd }|d d}|d kr2| j |q|d krJ| j |q|d kr|d}|dkrz| j |dfn$| j |d|||d dfq|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr*| j} q|dkr<| j} q|dkrN| j} q|dkrr| j ||s| j} q|dkr| j |q| d|q| | qPW5|X|S)Nr)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_ws*z'%s' lines not handled yet)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr.r/r0Zdistutils.text_filer1Zdistutils.utilr2closereadlinematchr#rappendospathsplitextrrfindrrrrrrrr)filenamer.r/r0r1r2varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                         rH)r<r"rrHrrrrs zPK])"-command/__pycache__/build_clib.cpython-38.pycnu[U e5dV@sTdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nrshow_compilers)distutils.ccompilerrrr 4/usr/lib64/python3.8/distutils/command/build_clib.pyrs rc@sleZdZdZdddddgZddgZd d d efgZd d ZddZ ddZ ddZ ddZ ddZ ddZd S) build_clibz/build C/C++ libraries used by Python extensions)z build-clib=bz%directory to build C/C++ libraries to)z build-temp=tz,directory to put temporary build by-products)debuggz"compile with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler typerrz help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompilerselfr r r initialize_options4szbuild_clib.initialize_optionscCsh|dddddd|jj|_|jr0||j|jdkrH|jjpDg|_t|jtrd|jtj |_dS)NZbuild)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathseprr r r finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|j|j|j dk rv|j D]\}}|j ||q^|j dk r|j D]}|j |q| |jdS)Nr) new_compiler)rdry_runr)rrr#rr$rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)rr#namevalueZmacror r r run^s"      zbuild_clib.runcCst|tstd|D]z}t|ts8t|dkr8td|\}}t|tsRtdd|ksntjdkr~tj|kr~td|dt|tstdqd S) a`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) rlistDistutilsSetupErrortuplelenrr sepdict)rrlibr& build_infor r r rvs,   zbuild_clib.check_library_listcCs,|js dSg}|jD]\}}||q|S)N)rappend)rZ lib_nameslib_namer2r r r get_library_namess  zbuild_clib.get_library_namescCsZ||jg}|jD]>\}}|d}|dks>t|ttfsJtd|||q|S)Nsourcesfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)rrgetrr+r-r,extend)r filenamesr4r2r6r r r get_source_filess   zbuild_clib.get_source_filescCs|D]\}}|d}|dks,t|ttfs8td|t|}td||d}|d}|jj||j |||j d}|jj |||j |j dqdS)Nr6r7zbuilding '%s' librarymacrosr) output_dirr<rr)r=r) r8rr+r-r,rinforcompilerrZcreate_static_libr )rrr4r2r6r<rZobjectsr r r r%s,      zbuild_clib.build_libraries)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsrr"r(rr5r;r%r r r r r s( $ r ) __doc__r Zdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr r r r r s   PK]5S5command/__pycache__/install_data.cpython-38.opt-1.pycnu[U e5d @s<dZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) install_datazinstall data files)z install-dir=dzIbase directory for installing data files (default: installation base dir))zroot=Nzs PK]ZLiTT(command/__pycache__/bdist.cpython-38.pycnu[U e5d@sHdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCsPddlm}g}tjD]"}|d|dtj|dfq||}|ddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr//usr/lib64/python3.8/distutils/command/bdist.py show_formats s    rc @seZdZdZddddefdddd d gZd gZd d defgZdZ dddZ dddddddddg Z ddddddd d!d"d# Z d$d%Z d&d'Zd(d)Zd S)*rz$create a built (binary) distribution)z bdist-base=bz4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s))rNz/formats for distribution (comma-separated list))z dist-dir=dz=directory to put final built distributions in [default: dist]) skip-buildNz2skip rebuilding everything (for testing/debugging))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]rz help-formatsNz$lists available distribution formats) bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsi)rzRPM distribution) bdist_dumbzgzip'ed tar file)r#zbzip2'ed tar file)r#zxz'ed tar file)r#zcompressed tar file)r#ztar file)Z bdist_wininstzWindows executable installer)r#zZIP file)Z bdist_msizMicrosoft Installer) rrrrrr r!rr"cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfrrrinitialize_optionsQszbdist.initialize_optionscCs|jdkr(|jrt|_n|dj|_|jdkrT|dj}tj|d|j|_| d|j dkrz|j tj g|_ Wn"t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r%r'rZget_finalized_commandr$ build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr&)r*r,rrrfinalize_optionsZs*        zbdist.finalize_optionsc Csg}|jD]>}z||j|dWq tk rFtd|Yq Xq tt|jD]h}||}||}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ | |qXdS)Nrzinvalid format '%s'r#r)r r r r2ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r)r(Z keep_tempZ run_command)r*Zcommandsr iZcmd_nameZsub_cmdrrrrunvs"    z bdist.run)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr6r0r r r+r3r8rrrrrsR   r) __doc__r-Zdistutils.corerZdistutils.errorsZdistutils.utilrrrrrrrs    PK]>++.command/__pycache__/sdist.cpython-38.opt-2.pycnu[U e5d=J@sddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z ddl m Z dd l mZdd lmZdd lmZdd lmZmZd dZGdddeZdS)N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCs`ddlm}ddlm}g}|D] }|d|d||dfq$|||ddS)Nr) FancyGetopt)ARCHIVE_FORMATSformats=z.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatr//usr/lib64/python3.8/distutils/command/sdist.py show_formatss     rc@s"eZdZdZddZdddddd d d d d ddddgZddddddgZdddefgZdddZ defgZ dZ ddZ d d!Z d"d#Zd$d%Zd&d'Zd(d)Zed*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZ dFdGZ!dHdIZ"dS)Jsdistz6create a source distribution (tarball, zip file, etc.)cCs|jSN)metadata_checkselfrrrchecking_metadata(szsdist.checking_metadata)z template=tz5name of manifest template file [default: MANIFEST.in])z manifest=mz)name of manifest file [default: MANIFEST]) use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults]) no-defaultsNz"don't include the default file set)pruneNzspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])no-pruneNz$don't automatically exclude anything) manifest-onlyozEjust regenerate the manifest and then stop (implies --force-manifest))force-manifestfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)rNz6formats for source distribution (comma-separated list)) keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])metadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r"r$r&r(r*r-z help-formatsNz#list available distribution formats)r#r%check)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr$ manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergrouprrrrinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|dt|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r3r2Zensure_string_listrZcheck_archive_formatsrr r7)rZ bad_formatrrrfinalize_options|s     zsdist.finalize_optionscCs>t|_|D]}||q||jr2dS|dSr)r filelistZget_sub_commandsZ run_command get_file_listr5make_distribution)rZcmd_namerrrruns  z sdist.runcCs*tdt|jd}||dS)Nzadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr0)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr@)rr0rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)Nz?manifest template '%s' does not exist (using default file list))ospathisfiler2_manifest_is_not_generated read_manifestr=rZremove_duplicatesrfindallr4 add_defaults read_templater$prune_file_listwrite_manifest)rZtemplate_existsrrrr>s(      zsdist.get_file_listcCs<|||||||dSr)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scriptsrrrrrJszsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|kS)NF)rDrEexistsabspathsplitlistdir)fspathrVZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}|D]~}t|trj|}d}|D]"}||r,d}|j|qPq,|s|dd |q||r|j|q|d|qdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESrBZ script_name isinstancetupler[r=rrjoin)rZ standardsfnZaltsZgot_itrrrrNs"    zsdist._add_defaults_standardscCs4ddg}|D]"}ttjjt|}|j|q dS)Nz test/test*.pyz setup.cfg)filterrDrErFrr=extend)rZoptionalpatternfilesrrrrOszsdist._add_defaults_optionalcCs\|d}|jr$|j||jD],\}}}}|D]}|jtj ||q:q*dS)Nbuild_py) get_finalized_commandrBZhas_pure_modulesr=rbget_source_files data_filesrrDrEr_)rreZpkgZsrc_dirZ build_dir filenamesrZrrrrPs   zsdist._add_defaults_pythoncCsz|jrv|jjD]b}t|trBt|}tj|rt|j |q|\}}|D]$}t|}tj|rN|j |qNqdSr) rBZhas_data_filesrhr]strr rDrErFr=r)ritemdirnamerir)rrrrQ$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)rBZhas_ext_modulesrfr=rbrg)rrmrrrrR5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)rBZhas_c_librariesrfr=rbrg)rrnrrrrS:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)rBZ has_scriptsrfr=rbrg)rrorrrrT?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zh|}|dkr:qz|j|Wq(tt fk r}z| d|j |j |fW5d}~XYq(Xq(W5|XdS)Nzreading manifest template '%s'r1)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsZ collapse_joinz%s, line %d: %s) r infor2rclosereadliner=Zprocess_template_liner ValueErrorrrZZ current_line)rr2linemsgrrrrKDs&   zsdist.read_templatecCs|d}|j}|jjd|jd|jjd|dtjdkrFd}nd}dddd d d d g}d |d||f}|jj|dddS)Nbuild)prefixZwin32z/|\\/ZRCSZCVSz\.svnz\.hgz\.gitz\.bzrZ_darcsz(^|%s)(%s)(%s).*|r1)Zis_regex) rfrB get_fullnamer=Zexclude_patternZ build_basesysplatformr_)rrvbase_dirZsepsZvcs_dirsZvcs_ptrnrrrrLas    zsdist.prune_file_listcCsX|rtd|jdS|jjdd}|dd|tj |j|fd|jdS)Nz5not writing to manually maintained manifest file '%s'rz*# file GENERATED by distutils, do NOT editzwriting manifest file '%s') rGr rpr3r=rdinsertZexecuterZ write_file)rZcontentrrrrMys zsdist.write_manifestcCs<tj|jsdSt|j}z |}W5|X|dkS)NFz+# file GENERATED by distutils, do NOT edit )rDrErFr3openrqrr)rfpZ first_linerrrrGs   z sdist._manifest_is_not_generatedc CsVtd|jt|j4}|D](}|}|ds|s:q|j|qW5QRXdS)Nzreading manifest file '%s'#)r rpr3rstrip startswithr=r)rr3rtrrrrHs zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t||D]<}tj |s|td|q^tj ||}|j |||dq^|j j|dS) Ndry_runlinkZhardzmaking hard links in %s...zcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r)ZmkpathrZ create_treerhasattrrDr rrprErFr_Z copy_filerBZmetadataZwrite_pkg_info)rr}rdrrufiledestrrrmake_release_trees      zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j krT|j |j |j d|j D]:}|j ||||j|jd}| ||jj dd|fqZ||_|jstj||jddS)NZtar)r}r9r:rr)rBrzrDrEr_r7rr=rdrrpopindexZ make_archiver9r:Z dist_filesr8r6rZ remove_treer)rr}Z base_namer8Zfmtrrrrr?s     zsdist.make_distributioncCs|jSr)r8rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsr\r;r<r@rCr>rJ staticmethodr[rNrOrPrQrRrSrTrKrLrMrGrHrr?rrrrrr$sp' (  *r)rDr{rwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs          PK]}Q ++.command/__pycache__/build.cpython-38.opt-1.pycnu[U e5d@sTdZddlZddlZddlmZddlmZddlmZddZ Gdd d eZ dS) zBdistutils.command.build Implements the Distutils 'build' command.N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nrshow_compilers)Zdistutils.ccompilerrrr//usr/lib64/python3.8/distutils/command/build.pyr s rc @seZdZdZdddddddd d efd d d ddg ZddgZdddefgZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#e fd$e fd%efd&efgZdS)'buildz"build everything needed to install)z build-base=bz base directory for build library)zbuild-purelib=Nz2build directory for platform-neutral distributions)zbuild-platlib=Nz3build directory for platform-specific distributions)z build-lib=NzWbuild directory for all distribution (defaults to either build-purelib or build-platlib)zbuild-scripts=Nzbuild directory for scripts)z build-temp=tztemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)debuggz;compile extensions and libraries with debugging information)forcefz2forcibly build everything (ignore file timestamps))z executable=ez5specify final destination interpreter path (build.py)rrz help-compilerNzlist available compilerscCsLd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nr r) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallelselfrrrinitialize_options8szbuild.initialize_optionscCsb|jdkrt|_ntjdkr&tdd|jftjdd}ttdrR|d7}|jdkrntj |j d|_|j dkrtj |j d||_ |j dkr|jjr|j |_ n|j|_ |jdkrtj |j d||_|jdkrtj |j d tjdd|_|jdkr tjr tj tj|_t|jtr^zt|j|_Wntk r\td YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z .%s-%d.%dZgettotalrefcountz-pydebuglibZtempz scripts-%d.%dzparallel should be an integer)rrosnamersys version_infohasattrrpathjoinrrr distributionZ ext_modulesrrrnormpath isinstancerstrint ValueError)rZplat_specifierrrrfinalize_optionsHsD             zbuild.finalize_optionscCs|D]}||qdSN)Zget_sub_commandsZ run_command)rZcmd_namerrrruns z build.runcCs |jSr1)r*has_pure_modulesrrrrr3szbuild.has_pure_modulescCs |jSr1)r*has_c_librariesrrrrr4szbuild.has_c_librariescCs |jSr1)r*has_ext_modulesrrrrr5szbuild.has_ext_modulescCs |jSr1)r* has_scriptsrrrrr6szbuild.has_scriptsZbuild_pyZ build_clibZ build_extr)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrr0r2r3r4r5r6Z sub_commandsrrrrr sH8 r ) __doc__r%r#Zdistutils.corerZdistutils.errorsrZdistutils.utilrrr rrrrs    PK]hğ^ ^ 6command/__pycache__/bdist_wininst.cpython-38.opt-2.pycnu[U e5d>@stddlZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGdd d eZdS) N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc seZdZdZddddefdddd d d d d dddg ZddddgZejdkZ fddZ ddZ ddZ ddZ ddZd'd!d"Zd#d$Zd%d&ZZS)( bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default) skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACr r rrwin32cs tj||tdtddS)Nz^bdist_wininst command is deprecated since Python 3.8, use bdist_wheel (wheel packages) instead)super__init__warningswarnDeprecationWarning)selfargskw __class__7/usr/lib64/python3.8/distutils/command/bdist_wininst.pyr?s zbdist_wininst.__init__cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)rr!r!r"initialize_optionsEsz bdist_wininst.initialize_optionscCs|dd|jdkrR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jr|jjD]}|jtj |krqqtd|jdS) Nbdist)r,r,ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specified)r)r))r$r$z(install_script '%s' not found in scripts)Zset_undefined_optionsr#r,r$ distributionZget_command_objget_finalized_command bdist_baseospathjoinr(has_ext_modulesrZDistutilsOptionErrorr-scriptsbasename)rr1r5Z short_versionscriptr!r!r"finalize_optionsUs>      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|sd tjdd }d |j |f}|d}tj|jd ||_d D],}|}|dkr|d}t|d||qtd|j |tjdtj|j d|tjd=ddlm}|} |j } |j!| d|j d} |"| | |j#|jrt$} nd} |jj%&d| |'| ft(d| t)| |j*st+|j |j,ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz%d.%drz.%s-%slib)ZpurelibZplatlibheadersr:datarCz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)-sysplatformr3r9Zhas_c_librariesZDistutilsPlatformErrorr,Z run_commandZreinitialize_commandr#rootZwarn_dirr$compileoptimizer( version_infor4r6r7r8Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerE get_fullnameZ make_archive create_exer*rZ dist_filesappendget_installer_filenamedebugremover%rrH) rr?rAr(Zplat_specifierr>keyvaluerEZarchive_basenamefullnamearcnameZ pyversionr!r!r"rS{sr            zbdist_wininst.runc CsZg}|jj}|d|jpdd}dd}dD]B}t||d}|r0|d|||f}|d|||fq0|d |jr|d |j|d |||d |j |d |j |j r|d|j |j r|d|j |j p|j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r2 cSs |ddS)Nr^z\n)replace)sr!r!r"escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r3metadatarVZlong_descriptiongetattr capitalizer-r&r'r(r/r+rTtime distutilsctime __version__r8) rlinesrerQrarcrDr+rhriZ build_infor!r!r" get_inidatas>   zbdist_wininst.get_inidataNc CsHddl}||j|}||}|d||r`t|d}|}W5QRXt|} nd} t|d} | | |r| |t |t r| d}|d}|jrt|jddd } |  d} W5QRX|| d }n|d}| ||d d t|| } | | t|d}| |W5QRXW5QRXdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs8          zbdist_wininst.get_exe_bytes)N)__name__ __module__ __qualname__rbrZ user_optionsZboolean_optionsrIrJZ _unsupportedrr0r=rSrmrUrWry __classcell__r!r!rr"r s>%  &Q. 7 r )r6rIrZdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrrirr r!r!r!r"s    PK]*0command/__pycache__/build_scripts.cpython-38.pycnu[U e5dX@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZed ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=dzdirectory to "build" (copy) to)forcefz1forcibly build everything (ignore file timestamps)z executable=ez*specify final destination interpreter pathr cCs"d|_d|_d|_d|_d|_dSN) build_dirscriptsr executableoutfilesselfr7/usr/lib64/python3.8/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|dddd|jj|_dS)NZbuild)r r)r r )rr)Zset_undefined_optionsZ distributionrrrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jSr)rrrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|dSr)r copy_scriptsrrrrrun/szbuild_scripts.runc Cs||jg}g}|jD]}d}t|}tj|jtj|}|||j slt ||slt d|qzt |d}Wn tk r|jsd}YnXXt|j\}}|d|} | s|d|qt| } | rd}| dpd } |rt d ||j|||jstjs*|j} n(tjtd d td tdf} t| } d| | d} z| dWn$tk rt d!| YnXz| |Wn&tk rt d!| |YnXt |d}|"| |#|$W5QRX|r8|%q|r"|%|||&||qtj'dkr|D]`}|jrdt d|nDt(|t)d@}|dBd@}||krJt d|||t*||qJ||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrZget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfiler encodinglinesZ first_liner1Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                   zbuild_scripts.copy_scriptsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&t|\}}|js||||fSr)r rr*Zrun_2to3)rrr@rrrrs zbuild_scripts_2to3.copy_scriptsN)rDrErFrrrrrrGsrG)__doc__r"rer>rZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr+compiler0r rGrrrrs       PK]Kxu 6command/__pycache__/bdist_wininst.cpython-38.opt-1.pycnu[U e5d>@sxdZddlZddlZddlZddlmZddlmZddlm Z m Z ddl Tddl m Z ddlmZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc seZdZdZddddefdddd d d d d dddg ZddddgZejdkZ fddZ ddZ ddZ ddZ ddZd'd!d"Zd#d$Zd%d&ZZS)( bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default) skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACr r rrwin32cs tj||tdtddS)Nz^bdist_wininst command is deprecated since Python 3.8, use bdist_wheel (wheel packages) instead)super__init__warningswarnDeprecationWarning)selfargskw __class__7/usr/lib64/python3.8/distutils/command/bdist_wininst.pyr?s zbdist_wininst.__init__cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)rr!r!r"initialize_optionsEsz bdist_wininst.initialize_optionscCs|dd|jdkrR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jr|jjD]}|jtj |krqqtd|jdS) Nbdist)r,r,ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specified)r)r))r$r$z(install_script '%s' not found in scripts)Zset_undefined_optionsr#r,r$ distributionZget_command_objget_finalized_command bdist_baseospathjoinr(has_ext_modulesrZDistutilsOptionErrorr-scriptsbasename)rr1r5Z short_versionscriptr!r!r"finalize_optionsUs>      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|sd tjdd }d |j |f}|d}tj|jd ||_d D],}|}|dkr|d}t|d||qtd|j |tjdtj|j d|tjd=ddlm}|} |j } |j!| d|j d} |"| | |j#|jrt$} nd} |jj%&d| |'| ft(d| t)| |j*st+|j |j,ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz%d.%drz.%s-%slib)ZpurelibZplatlibheadersr:datarCz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)-sysplatformr3r9Zhas_c_librariesZDistutilsPlatformErrorr,Z run_commandZreinitialize_commandr#rootZwarn_dirr$compileoptimizer( version_infor4r6r7r8Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerE get_fullnameZ make_archive create_exer*rZ dist_filesappendget_installer_filenamedebugremover%rrH) rr?rAr(Zplat_specifierr>keyvaluerEZarchive_basenamefullnamearcnameZ pyversionr!r!r"rS{sr            zbdist_wininst.runc CsZg}|jj}|d|jpdd}dd}dD]B}t||d}|r0|d|||f}|d|||fq0|d |jr|d |j|d |||d |j |d |j |j r|d|j |j r|d|j |j p|j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r2 cSs |ddS)Nr^z\n)replace)sr!r!r"escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r3metadatarVZlong_descriptiongetattr capitalizer-r&r'r(r/r+rTtime distutilsctime __version__r8) rlinesrerQrarcrDr+rhriZ build_infor!r!r" get_inidatas>   zbdist_wininst.get_inidataNc CsHddl}||j|}||}|d||r`t|d}|}W5QRXt|} nd} t|d} | | |r| |t |t r| d}|d}|jrt|jddd } |  d} W5QRX|| d }n|d}| ||d d t|| } | | t|d}| |W5QRXW5QRXdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs8          zbdist_wininst.get_exe_bytes)N)__name__ __module__ __qualname__rbrZ user_optionsZboolean_optionsrIrJZ _unsupportedrr0r=rSrmrUrWry __classcell__r!r!rr"r s>%  &Q. 7 r )__doc__r6rIrZdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrrirr r!r!r!r"s    PK]W550command/__pycache__/install.cpython-38.opt-1.pycnu[U &.ej@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZmZdd lmZdd l mZdd lmZdd lmZdZddddddZddddddddddddedZerdddddded <ddd!d"dded#<dZGd$d%d%eZdS)&zFdistutils.command.install Implements the Distutils 'install' command.N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@s:eZdZdZdddddddd d d d d ddddddgZdddgZer`edddefedddiZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEefdFefdGefdHefdIdJdKfgZdS)Linstallz'install everything from build directory)zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nzr)r%r&r+r(r)r*r,r-r r r.r select_schemer$r"r#hasattrrM base_prefixrGenvironr\normpath)r9Zadditionr:r:r;rKsZ          zinstall.finalize_unixcCs|jr8|jdkrtd|j|_|_|tjdn|jdk r\|j|_|_|dn\|j dkrvtj t j |_ |j |_|_z|tjWn"t k rtdtjYnXdS)z)Finalizes options for non-posix platformsNrmZ_userrz)I don't know how to install stuff on '%s')r r.rr%r&rorGrHr$r"r\rsrMKeyErrorr8r:r:r;rLs&    zinstall.finalize_othercCs<t|}tD]*}d|}t||dkr t||||q dS)z=Sets the install directories by applying the install schemes.install_N)INSTALL_SCHEMES SCHEME_KEYSrisetattr)r9rHZschemekeyattrnamer:r:r;ros zinstall.select_schemecCsX|D]N}t||}|dk rtjdks.tjdkr:tj|}t||j}t|||qdS)Nr=r)rirGrHr\ expanduserr rSrx)r9attrsattrrlr:r:r; _expand_attrss   zinstall._expand_attrscCs|dddgdS)zNCalls `os.path.expanduser` on install_base, install_platbase and root.r%r&r'Nr~r8r:r:r;rUszinstall.expand_basedirscCs|ddddddgdS)z+Calls `os.path.expanduser` on install dirs.r(r)r+r*r,r-Nrr8r:r:r;rWs zinstall.expand_dirscGs,|D]"}d|}t||tt||qdS)z!Call `convert_path` over `names`.ruN)rxrrir9namesrHr}r:r:r;rYszinstall.convert_pathscCs|jdkr|jj|_|jdk rtdt|jtrB|jd|_t|jdkr`|jd}}n"t|jdkrz|j\}}ntdt |}nd}d}||_ ||_ dS) z4Set `path_file` and `extra_dirs` using `extra_path`.NzIDistribution option extra_path is deprecated. See issue27919 for details.,r!rr?zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsr>) r1rQrrI isinstancestrrOlenr r path_filer^)r9rr^r:r:r;rZs(      zinstall.handle_extra_pathc Gs0|D]&}d|}t||t|jt||qdS)z:Change the install directories pointed by name using root.ruN)rxr r'rirr:r:r;r_szinstall.change_rootscCsb|js dSttjd}|jD]8\}}||r$tj|s$| d|t |dq$dS)zCreate directories under ~.N~zos.makedirs('%s', 0o700)i) r rrGr\r{rSitems startswithisdirZ debug_printmakedirs)r9r$rHr\r:r:r;rXszinstall.create_home_pathcCs"|js6|d|jdj}|jr6|tkr6td|D]}||q>|j r\| |j r| }|j rt|j }tt|D]}|||d||<q|t|j |fd|j ttjjtj}ttjj|}tjtj|j}|jr|j r|js||krtd|jdS)zRuns the command.rFz"Can't install when cross-compilingNz'writing list of installed files to '%s'zmodules installed to '%s', which is not in Python's module search path (sys.path) -- you'll have to change the search path yourself)r3Z run_commandrQZget_command_objZ plat_namer4r rget_sub_commandsrcreate_path_filer7 get_outputsr'rrangeexecutermaprGr\rsrMnormcaser+r2rre)r9Z build_platcmd_nameoutputsZroot_lenZcounterZsys_pathr+r:r:r;run(sD    z install.runcCsJtj|j|jd}|jr8|t||jgfd|n| d|dS)zCreates the .pth file.pthz creating %szpath file '%s' not createdN) rGr\r]r[rr2rrr^rI)r9filenamer:r:r;rTs  zinstall.create_path_filecCshg}|D].}||}|D]}||kr"||q"q |jrd|jrd|tj|j |jd|S)z.Assembles the outputs of all the sub-commands.r) rget_finalized_commandrappendrr2rGr\r]r[)r9rrcmdrr:r:r;rbs    zinstall.get_outputscCs.g}|D]}||}||q |S)z*Returns the inputs of all the sub-commands)rrextend get_inputs)r9Zinputsrrr:r:r;rss   zinstall.get_inputscCs|jp|jS)zSReturns true if the current distribution has any Python modules to install.)rQZhas_pure_modulesZhas_ext_modulesr8r:r:r;has_libs zinstall.has_libcCs |jS)zLReturns true if the current distribution has any headers to install.)rQ has_headersr8r:r:r;rszinstall.has_headerscCs |jS)zMReturns true if the current distribution has any scripts to. install.)rQ has_scriptsr8r:r:r;rszinstall.has_scriptscCs |jS)zJReturns true if the current distribution has any data to. install.)rQZhas_data_filesr8r:r:r;has_dataszinstall.has_datar+r*r,r-Zinstall_egg_infocCsdS)NTr:r8r:r:r;zinstall.) __name__ __module__ __qualname__Z descriptionrfZboolean_optionsrTrrrgr<r`rJrKrLror~rUrWrYrZr_rXrrrrrrrrZ sub_commandsr:r:r:r;rIsn ;  N3  " ,  r)__doc__rMrGZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrTZWINDOWS_SCHEMErvrwrr:r:r:r;sb             PK]1f] ? ?,command/__pycache__/build_ext.cpython-38.pycnu[U e5dP{@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZed Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nrshow_compilers)distutils.ccompilerr r r3/usr/lib64/python3.8/distutils/command/build_ext.pyr s r c@seZdZdZdejZdddddefdd d d efd d ddddefddddddddddgZddddd gZ d!d"d#e fgZ d$d%Z d&d'Z d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zejd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZd"S)H build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z build-lib=bz(directory for compiled extension modules)z build-temp=tz1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s))inplaceiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link withz library-dirs=Lz.directories to search for external C libraries)zrpath=Rz7directories to search for shared C libraries at runtime)z link-objects=Oz2extra explicit link objects to include in the link)debuggz'compile/link with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)swig-cppNz)make SWIG create C++ files (default is C))z swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)userNz#add user include, library and rpathrrr r$r%z help-compilerNzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsrr compilerswigswig_cpp swig_optsr%parallelselfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|ddddddd d |jdkr8|jj|_|jj|_|}|jd d }|j dkrn|jj pjg|_ t |j t r|j t j|_ tjtjkr|j t jtjd |j | t jj||kr|j | t jj|d|d|jdkrg|_|jdkrg|_nt |jt r:|j t j|_|jdkrNg|_nt |jt rl|j t j|_t jdkrh|jt jtjdtjtjkr|jt jtjd|jrt j|jd|_nt j|jd|_|j t jtt tdd}|r|j||j!dkr*d}n|j!dd}t jtjd}|r\t j||}|j|tj"dddkrtj#$t jtjdr|jt jtjddt%dn |jd|&dr|j's|j|&d n |jd|j(r|j( d!}d"d#|D|_(|j)r4|j) d!|_)|j*dkrHg|_*n|j* d$|_*|j+rt jt,d }t jt,d} t j-|r|j |t j-| r|j| |j| t |j.t rzt/|j.|_.Wnt0k rt1d%YnXdS)&Nr) sysconfigZbuild)r'r')r)r))r2r2)rr)r r )r6r6)r(r()Z plat_specificZincluder.r1ntZlibsZDebugZRelease_homewin32ZPCbuildcygwinbinlibpythonZconfig.Py_ENABLE_SHAREDZLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)2 distutilsr:Zset_undefined_optionsr* distributionZ ext_packageZ ext_modulesr&Zget_python_incr+ isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinextendZensure_string_listr.r/r0nameprefixrr)dirnamergetattrr(platform executable startswithrget_config_varZ python_buildr,r-r5r%r isdirr6int ValueErrorZDistutilsOptionError) r8r:Z py_includeZplat_py_includeZ _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                           zbuild_ext.finalize_optionscCsjddlm}|jsdS|jrL|d}|j|p:g|j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j |j|jdk r|j |j|jdk r|jD]\}}|j ||q|jdk r|jD]}|j |q|jdk r|j |j|j dk r*|j |j |jdk rD|j |j|j dk r^|j !|j |"dS)Nr) new_compiler build_clib)r2verbosedry_runr r<)#rrgr&rMZhas_c_librariesget_finalized_commandr.rYZget_library_namesr/rVrhr2rirjr rrQrZr(r Z initializer+Zset_include_dirsr,Z define_macror-Zundefine_macroZ set_librariesZset_library_dirsr0Zset_runtime_library_dirsr1Zset_link_objectsbuild_extensions)r8rgrhrZvaluemacrorrrruns@            z build_ext.runc Csvt|tstdt|D]T\}}t|tr0qt|trFt|dkrNtd|\}}td|t|t rvt |s~tdt|t stdt||d}dD]"}| |}|d k rt|||q| d |_d |krtd | d }|rhg|_g|_|D]b} t| tr"t| dks*tdt| dkrJ|j| dnt| dkr|j| q|||<qd S)aEnsure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sources)r+r/r. extra_objectsextra_compile_argsextra_link_argsNr0Zdef_filez9'def_file' element of build info dict no longer supportedmacros)r;rpz9'macros' element of build info dict must be 1- or 2-tupler;r)rNlistDistutilsSetupError enumeratertuplelenr warnrOextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrV) r8r&rextext_nameZ build_infokeyvalrurnrrrcheck_extensions_listVs^        zbuild_ext.check_extensions_listcCs,||jg}|jD]}||jq|SN)rr&rYrq)r8 filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs2||jg}|jD]}|||jq|Sr)rr&rVget_ext_fullpathrZ)r8Zoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(||j|jr|n|dSr)rr&r6_build_extensions_parallel_build_extensions_serialr7rrrrls  zbuild_ext.build_extensionsc sj}jdkrt}zddlm}Wntk r@d}YnX|dkrVdS||dPfddjD}tj|D]&\}} || W5QRXqW5QRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}j|qSr)Zsubmitbuild_extension)rIrZexecutorr8rrrJsz8build_ext._build_extensions_parallel..) r6rQ cpu_countZconcurrent.futuresr ImportErrorrr&zip_filter_build_errorsresult)r8ZworkersrZfuturesrZfutrrrrs"     z$build_ext._build_extensions_parallelc Cs0|jD]$}||||W5QRXqdSr)r&rr)r8rrrrrs  z"build_ext._build_extensions_serialc csTz dVWnDtttfk rN}z |js*|d|j|fW5d}~XYnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalr{rZ)r8rerrrrs zbuild_ext._filter_build_errorsc CsP|j}|dkst|ttfs*td|jt|}||j}||j}|jslt ||dslt d|jdSt d|j| ||}|jpg}|jdd}|jD]}||fq|jj||j||j|j ||jd}|dd|_|jr||j|jpg}|jp|j|} |jj|||||j|j|| ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrur+rextra_postargsdepends)r.r/rrexport_symbolsrr)Z target_lang)!rqrNrvryrwrZrrr rr rinfo swig_sourcesrsrrrVr2compiler)r+Z_built_objectsrrrYrtlanguageZdetect_languageZlink_shared_object get_librariesr/rget_export_symbols) r8rrqext_pathrZ extra_argsrur-ZobjectsrrrrrsX        zbuild_ext.build_extensioncCs$g}g}i}|jrtd|js6d|jks6d|jkrI don't know how to find (much less run) SWIG on platform '%s'N)rQrZrWrXisfileZDistutilsPlatformError)r8Zversfnrrrrgs    zbuild_ext.find_swigcCs||}|d}||d}|jsRtjj|dd|g}tj|j|Sd|dd}|d}tj | |}tj||S)zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). rErNrbuild_py) get_ext_fullnamerPget_ext_filenamerrQrWrXr'rkabspathZget_package_dir)r8rfullnamemodpathfilenamer*rZ package_dirrrrrs   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNrE)r*)r8rrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|d}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). rrarEZ EXT_SUFFIX)distutils.sysconfigrarPrQrWrX)r8rrarZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCsxd|jdd}z|dWn0tk rRd|dddd}YnXd |}||jkrr|j||jS) aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. _rErasciirZpunycode-_ZPyInit)rZrPencodeUnicodeEncodeErrorreplacedecoderrV)r8rreZ initfunc_namerrrrs"  zbuild_ext.get_export_symbolscCstjdkr^ddlm}t|j|sd}|jr4|d}|tjd?tjd?d@f}|j|gSndd l m }d }|d rt td rd }nr) MSVCCompilerz python%d%dZ_drFrFZgetandroidapilevelTrAZ_PYTHON_HOST_PLATFORMZANDROID_API_LEVELZMACHDEPZ LDVERSIONrD)rSr^Zdistutils._msvccompilerrrNr2r hexversionr.rrahasattrrQenviron)r8rrtemplateZ pythonlibraZlink_libpythonZ ldversionrrrrs4         zbuild_ext.get_libraries) __name__ __module__ __qualname__Z descriptionrQrRZsep_byr Z user_optionsZboolean_optionsr Z help_optionsr9rfrorrrrlrr contextlibcontextmanagerrrrrrrrrrrrrrr!sp +@N  K6  r)__doc__rrQrerSZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rLr Zsiter rr|r rrrrrs$       PK]˄66.command/__pycache__/clean.cpython-38.opt-1.pycnu[U e5d @sDdZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZd d Zd d Zd dZdS)cleanz-clean up temporary files from 'build' command)z build-base=bz2base build directory (default: 'build.build-base'))z build-lib=Nzs    PK]*6command/__pycache__/build_scripts.cpython-38.opt-1.pycnu[U e5dX@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZed ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=dzdirectory to "build" (copy) to)forcefz1forcibly build everything (ignore file timestamps)z executable=ez*specify final destination interpreter pathr cCs"d|_d|_d|_d|_d|_dSN) build_dirscriptsr executableoutfilesselfr7/usr/lib64/python3.8/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|dddd|jj|_dS)NZbuild)r r)r r )rr)Zset_undefined_optionsZ distributionrrrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jSr)rrrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|dSr)r copy_scriptsrrrrrun/szbuild_scripts.runc Cs||jg}g}|jD]}d}t|}tj|jtj|}|||j slt ||slt d|qzt |d}Wn tk r|jsd}YnXXt|j\}}|d|} | s|d|qt| } | rd}| dpd } |rt d ||j|||jstjs*|j} n(tjtd d td tdf} t| } d| | d} z| dWn$tk rt d!| YnXz| |Wn&tk rt d!| |YnXt |d}|"| |#|$W5QRX|r8|%q|r"|%|||&||qtj'dkr|D]`}|jrdt d|nDt(|t)d@}|dBd@}||krJt d|||t*||qJ||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrZget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfiler encodinglinesZ first_liner1Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                   zbuild_scripts.copy_scriptsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&t|\}}|js||||fSr)r rr*Zrun_2to3)rrr@rrrrs zbuild_scripts_2to3.copy_scriptsN)rDrErFrrrrrrGsrG)__doc__r"rer>rZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr+compiler0r rGrrrrs       PK]o4command/__pycache__/install_lib.cpython-38.opt-2.pycnu[U e5d @sHddlZddlZddlZddlmZddlmZdZGdddeZ dS)N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default]) no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]) skip-buildNzskip the build stepsrr r r cCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_buildselfr5/usr/lib64/python3.8/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtszt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr)rr)rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorrrrrrfinalize_options<s&     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dSN)buildr distributionhas_pure_modules byte_compilerZoutfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddSNbuild_py build_ext)rr"r#Z run_commandhas_ext_modulesrrrrr!fs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarnr%rrrrmszinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r$r)rrprefixdry_run)rrr/verboser0) sysdont_write_bytecoder.Zdistutils.utilr$get_finalized_commandrootr rr0rr1)rfilesr$Z install_rootrrrr$vs$    zinstall_lib.byte_compilec Csd|sgS||}|}t||}t|ttj}g}|D] } |tj|| |dq>|Sr ) r4 get_outputsgetattrlenr+sepappendr,join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss  zinstall_lib._mutate_outputscCsrg}|D]d}tjtj|d}|tkr.q|jrJ|tjj |dd|j dkr|tjj ||j dq|S)Nr) optimizationr) r+r,splitextnormcasePYTHON_SOURCE_EXTENSIONr r; importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)Nr(rr))r?r"r#rr rHr*)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr7s    zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||Sr')r"r#r4extendr7r*)rZinputsr(r)rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrr&r!rr$r?rHr7rJrrrrrs*   r) r+importlib.utilrEr2Zdistutils.corerZdistutils.errorsrrDrrrrrs   PK] (command/__pycache__/check.cpython-38.pycnu[U e5d@sdZddlmZddlmZzTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_t||||||||dSN)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr//usr/lib64/python3.8/distutils/command/check.pyrs zSilentReporter.__init__cOs6|j||||ftj|f|||j|d|S)N)leveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrszSilentReporter.system_message)Nrr r )__name__ __module__ __qualname__rrrrrrr s  r TFc@s`eZdZdZdZdddgZdddgZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)checkz6This command checks the meta-data of the package. z"perform some checks on the package)metadatamzVerify meta-data)restructuredtextrzEChecks if long string meta-data syntax are reStructuredText-compliant)strictsz(Will exit with an error if a check failsr#r%r'cCsd|_d|_d|_d|_dS)z Sets default values for options.rN)r%r#r' _warningsrrrrinitialize_options1szcheck.initialize_optionscCsdSr rr+rrrfinalize_options8szcheck.finalize_optionscCs|jd7_t||S)z*Counts the number of warnings that occurs.r))r*rwarn)rmsgrrrr.;sz check.warncCsL|jr||jr0tr"|n|jr0td|jrH|jdkrHtddS)zRuns the command.zThe docutils package is needed.rzPlease correct your package.N)r#check_metadatar% HAS_DOCUTILScheck_restructuredtextr'rr*r+rrrrun@s z check.runcCs|jj}g}dD]"}t||r(t||s||q|rL|dd||jrd|js|dn"|j r||j s|dn |ddS)zEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. )nameversionZurlzmissing required meta-data: %sz, zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be suppliedN) distributionr#hasattrgetattrrr.joinZauthorZ author_emailZ maintainerZmaintainer_email)rr#Zmissingattrrrrr0Ps   zcheck.check_metadatacCsX|j}||D]>}|dd}|dkr8|d}nd|d|f}||qdS)z4Checks if the long string fields are reST-compliant.lineNr)z %s (line %s))r6Zget_long_description_check_rst_datagetr.)rdataZwarningr<rrrr2ns  zcheck.check_restructuredtextc Cs|jjp d}t}tjtfd}d|_d|_d|_t ||j |j |j |j |j|jd}tj|||d}||dz|||Wn:tk r}z|jdd|d ifW5d}~XYnX|jS) z8Returns warnings when the provided data doesn't compile.zsetup.py)Z componentsN)rrrr)rr;z!Could not finish the parsing: %s.)r6Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rr? source_pathparserZsettingsZreporterrBerrrr=ys.  zcheck._check_rst_dataN)rr r!__doc__Z descriptionZ user_optionsZboolean_optionsr,r-r.r3r0r2r=rrrrr"$s  r"N)rHZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r1 Exceptionr"rrrrs        PK]x8command/__pycache__/install_headers.cpython-38.opt-2.pycnu[U e5d@s ddlmZGdddeZdS))Commandc@sFeZdZdZddgZdgZddZddZd d Zd d Z d dZ dS)install_headerszinstall C/C++ header files)z install-dir=dz$directory to install header files to)forcefz-force installation (overwrite existing files)rcCsd|_d|_g|_dS)Nr) install_dirroutfilesselfr 9/usr/lib64/python3.8/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|ddddS)NZinstall)rr)rr)Zset_undefined_optionsr r r r finalize_optionssz install_headers.finalize_optionscCsH|jj}|sdS||j|D]"}|||j\}}|j|q dSN) distributionheadersZmkpathrZ copy_filerappend)r rheaderout_r r r run!s zinstall_headers.runcCs |jjp gSr)rrr r r r get_inputs+szinstall_headers.get_inputscCs|jSr)rr r r r get_outputs.szinstall_headers.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsr rrrrr r r r r s rN)Zdistutils.corerrr r r r s PK]]L0L02command/__pycache__/bdist_rpm.cpython-38.opt-1.pycnu[U e5dIT@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z d9d:Z d;d<Z d=d>Z d?S)@ bdist_rpmzcreate an RPM distribution)z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package) no-autoreqNz+do not automatically calculate dependencies) keep-tempkz"don't clean up RPM build directory) no-keep-tempNz&clean up RPM build directory [default])use-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)no-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler) rpm3-modeNz"RPM 3 compatibility mode (default)) rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nz3/usr/lib64/python3.8/distutils/command/bdist_rpm.pyinitialize_optionssNzbdist_rpm.initialize_optionscCs|dd|jdkr6|js$tdtj|jd|_|jdkrX|j rPt j |_qfd|_n|j rftdtj dkr~t dtj |jr|jrtd |jsd |_|dd |dS) NZbdist)rrz)you must specify --rpm-base in RPM 2 moderpmZpython3z8--python and --fix-python are mutually exclusive optionsposixz9don't know how to create RPM distributions on platform %sz6cannot supply both '--source-only' and '--binary-only'r)rr)Zset_undefined_optionsrr9ZDistutilsOptionErrorospathjoinrrrsys executablenameZDistutilsPlatformErrorrr distributionhas_ext_modulesr8finalize_package_datar<r>r>r?finalize_optionss6        zbdist_rpm.finalize_optionscCsT|dd|dd|j|jf|d|dt|jtrxdD]&}tj |rP||jkrP|j |qP|dd |d |d |d | |j |_ |d |d|d|d|d|d|d|d|d|d|d|d|d|d|d|ddS)Nr zDevelopment/Librariesr#z%s <%s>r$r%)ZREADMEz README.txtr!1r"rr&r'r(r)r*r+r,r-r.r/r0r2r3r4r5r6r;)Z ensure_stringrIZ get_contactZget_contact_emailZensure_string_list isinstancer%listrCrDexistsappend_format_changelogr&Zensure_filename)r=Zreadmer>r>r?rKsB                        zbdist_rpm.finalize_package_datacCstrr>r?runs                            z bdist_rpm.runcCstj|jtj|S)N)rCrDrErre)r=rDr>r>r? _dist_pathszbdist_rpm._dist_pathc CsJd|jd|jddd|jd|jdddd|jg}td }d d d | D}d }d}|||}||kr| d| d|d | dddg|j r| dn | d| d|j d|jddg|js|js&| dn| d|jdD]V}t||}t|trb| d|d|fn|dk r*| d||fq*|jd kr| d!|j|jr| d"|j|jr| d#d|j|jr| d$tj|j|jr| d%| dd&|jgd'|jtjtj d(f}d)|} |j!rXd*| } d+|} d,d-d.| fd/d0| fd1d2d3d4d5d6g } | D]n\} } }t|| }|s|r| dd7| g|rt"|}| |#$d W5QRXn | |q| dd8d9g|j%r$| d:d|j%|j&rF| dd;g| |j&|S)r>r? sz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r1r(z&%setup -n %{name}-%{unmangled_version}Zbuildr)Zinstallr*)Zcleanr+zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr,N)Zprer-N)Zpostr.N)Zpreunr/N)Zpostunr0N%z%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rIrZZ get_versionreplacer!Zget_description subprocessZ getoutputrE splitlinesrQr]rZ get_licenser r;rJgetattrlowerrNrOZget_urlrr5r'rCrDrer:Zget_long_descriptionrrFargvr8openreadrcr%r&)r=Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultfr>r>r?r[s                       zbdist_rpm._make_spec_filecCs||s|Sg}|dD]N}|}|ddkrB|d|gq|ddkrZ||q|d|q|dsx|d=|S)zKFormat the changelog correctly and convert it to a list of strings rprrrormz )rbrcr]rQ)r=r&Z new_changelogrhr>r>r?rR1s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr@rLrKrkrlr[rRr>r>r>r?r sxm--*r )__doc__rvrFrCZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r>r>r>r?s      PK]GN 3command/__pycache__/install_egg_info.cpython-38.pycnu[U e5d+ @sddZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@s:eZdZdZdZdgZddZddZdd Zd d Z d S) install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file)z install-dir=dzdirectory to install tocCs d|_dSN) install_dirselfr :/usr/lib64/python3.8/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|dddtt|jtt|jftjdd}t j |j ||_ |j g|_dS)NZ install_lib)rrz%s-%s-py%d.%d.egg-info)Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinrtargetoutputs)r basenamer r r finalize_optionss  z!install_egg_info.finalize_optionsc Cs|j}tj|r0tj|s0tj||jdnNtj|rV| tj |jfd|n(tj|j s~| tj |j fd|j t d||jst|ddd}|jj|W5QRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkrmakedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s  zinstall_egg_info.runcCs|jSr)rr r r r get_outputs.szinstall_egg_info.get_outputsN) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr'r(r r r r r s rcCstdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. [^A-Za-z0-9.]+-)resubnamer r r r6srcCs|dd}tdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .r-r.)replacer/r0)versionr r r r>s rcCs |ddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r._)r5r1r r r rHsr) r,Z distutils.cmdrZ distutilsrrrrr/rrrrr r r r s + PK]N1command/__pycache__/register.cpython-38.opt-2.pycnu[U e5d-@s`ddlZddlZddlZddlZddlmZddlmZddl Tddl m Z GdddeZ dS)N)warn) PyPIRCCommand)*)logc@seZdZdZejddgZejdddgZddd fgZd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdddZdS) registerz7register the distribution with the Python package index)list-classifiersNz list the valid Trove classifiers)strictNzBWill stop the registering if the meta-data are not fully compliantverifyrrcheckcCsdS)NTselfr r 2/usr/lib64/python3.8/distutils/command/register.pyzregister.cCst|d|_d|_dS)Nr)rinitialize_optionslist_classifiersrr r r rrs zregister.initialize_optionscCs*t|d|jfdd}||jjd<dS)Nr)r)rrestructuredtextr )rfinalize_optionsr distributionZcommand_options)r Z check_optionsr r rr$s  zregister.finalize_optionscCsT|||D]}||q|jr8|n|jrH|n|dS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)r Zcmd_namer r rrun+s    z register.runcCs8tdt|jd}||j|_d|_|dS)Nzddistutils.command.register.check_metadata is deprecated, use the check command insteadr r)rPendingDeprecationWarningrZget_command_objZensure_finalizedrrr)r r r r rcheck_metadata:s zregister.check_metadatacCsz|}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_dS) Nusernamepassword repositoryrealmTZpypiz%s not found in .pypircF)Z _read_pypircrrr r! has_configZDEFAULT_REPOSITORY ValueError)r Zconfigr r rrDs     zregister._set_configcCs*|jd}tj|}t||dS)Nz?:action=list_classifiers)r urllibrequestZurlopenrinfo_read_pypi_response)r ZurlZresponser r rrUs  zregister.classifierscCs&||d\}}td||dS)Nr Server response (%s): %s)post_to_serverbuild_post_datarr&)r coderesultr r rr\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}d}||krd|dtjt}|sRd}q,||kr,tdq,|dkrl|s|td}qn|st d}q|t j }t j |jd }||j|||||d |\}}|d ||ftj|d kr|jr||j_nf|d tj|d|tjd}|dkrNtd}|s*d}q*|dkr|||nl|dkrddi} d| d<| d<| d<d| d<| dstd| d<q| d| dkr0| dst d| d<q| dst d| d<q| d| dkrd| d<d| d<tdq| dsJtd| d<q0|| \}}|d krrtd ||ntdtdnP|d krdd!i} d| d<| dstd"| d<q|| \}}td ||dS)#N1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitr(zAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2:actionusernamerZemailZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r"rrsplitannouncerINFOinputprintgetpassr$r%ZHTTPPasswordMgrparseZurlparser Z add_passwordr!r)r*rZ _get_rc_filelowerZ _store_pypircr&) r ZchoicerrchoicesauthZhostr+r,datar r rrcs                   zregister.send_metadatacCs|jj}|d|||||||| | | | | |||d}|ds|ds|drd|d<|S)Nz1.0)r5metadata_versionr7versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrJrKrLz1.1rD)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)r actionmetarCr r rr*s,zregister.build_post_dataNc Csd|kr$|d|d|jftjd}d|}|d}t}|D]~\}}t|tgtdfkrn|g}|D]R}t|}| || d|| d| ||rr|d d krr| d qrqH| || d | d }d |tt |d} t j|j|| } t jt jj|d} d}z| | } Wnxt jjk r} z"|jrd| j}| j| jf} W5d} ~ XYnJt jjk r} zdt| f} W5d} ~ XYnX|jr|| }d} |jrd d|df}||tj| S)Nr7zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--r z* Content-Disposition: form-data; name="%s"z   zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr/i)r0ZOKzK---------------------------------------------------------------------------)r:r rr;ioStringIOitemstypestrwritegetvalueencodelenr$r%ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr+msgZURLErrorr'join)r rCrBboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqZopenerr,er_r r rr)s^          zregister.post_to_server)N)__name__ __module__ __qualname__rGrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr*r)r r r rrs* zr) r>rRZ urllib.parser$Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs   PK]!   9command/__pycache__/install_egg_info.cpython-38.opt-2.pycnu[U e5d+ @s`ddlmZddlmZmZddlZddlZddlZGdddeZddZ dd Z d d Z dS) )Command)logdir_utilNc@s6eZdZdZdgZddZddZddZd d Zd S) install_egg_infoz8Install package's PKG-INFO metadata as an .egg-info file)z install-dir=dzdirectory to install tocCs d|_dSN) install_dirselfr :/usr/lib64/python3.8/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|dddtt|jtt|jftjdd}t j |j ||_ |j g|_dS)NZ install_lib)rrz%s-%s-py%d.%d.egg-info)Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinrtargetoutputs)r basenamer r r finalize_optionss  z!install_egg_info.finalize_optionsc Cs|j}tj|r0tj|s0tj||jdnNtj|rV| tj |jfd|n(tj|j s~| tj |j fd|j t d||jst|ddd}|jj|W5QRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkrmakedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s  zinstall_egg_info.runcCs|jSr)rr r r r get_outputs.szinstall_egg_info.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsr rr'r(r r r r r s rcCstdd|S)N[^A-Za-z0-9.]+-)resubnamer r r r6srcCs|dd}tdd|S)N .r,r-)replacer.r/)versionr r r r>s rcCs |ddS)Nr-_)r4r0r r r rHsr) Z distutils.cmdrZ distutilsrrrrr.rrrrr r r r s + PK]GN 9command/__pycache__/install_egg_info.cpython-38.opt-1.pycnu[U e5d+ @sddZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@s:eZdZdZdZdgZddZddZdd Zd d Z d S) install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file)z install-dir=dzdirectory to install tocCs d|_dSN) install_dirselfr :/usr/lib64/python3.8/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|dddtt|jtt|jftjdd}t j |j ||_ |j g|_dS)NZ install_lib)rrz%s-%s-py%d.%d.egg-info)Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinrtargetoutputs)r basenamer r r finalize_optionss  z!install_egg_info.finalize_optionsc Cs|j}tj|r0tj|s0tj||jdnNtj|rV| tj |jfd|n(tj|j s~| tj |j fd|j t d||jst|ddd}|jj|W5QRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkrmakedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s  zinstall_egg_info.runcCs|jSr)rr r r r get_outputs.szinstall_egg_info.get_outputsN) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr'r(r r r r r s rcCstdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. [^A-Za-z0-9.]+-)resubnamer r r r6srcCs|dd}tdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .r-r.)replacer/r0)versionr r r r>s rcCs |ddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r._)r5r1r r r rHsr) r,Z distutils.cmdrZ distutilsrrrrr/rrrrr r r r s + PK]<<  -command/__pycache__/bdist_dumb.cpython-38.pycnu[U e5d1@shdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZddddefdddd d d d g Zd ddgZdddZddZddZ ddZ dS) bdist_dumbz"create a "dumb" built distribution)z bdist-dir=dz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))zformat=fz>archive format to create (tar, gztar, bztar, xztar, ztar, zip)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=r z-directory to put final built distributions in) skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths (default: false))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r rrZgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr4/usr/lib64/python3.8/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|dj}tj|d|_|jdkrfz|jtj|_Wn"t k rdt dtjYnX| dddddS)NZbdistZdumbz@don't know how to create dumb built distributions on platform %s)rr)rr)rr) rZget_finalized_command bdist_baseospathjoinrdefault_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)rr"rrr finalize_options=s"    zbdist_dumb.finalize_optionscCs(|js|d|jddd}|j|_|j|_d|_td|j|dd|j |j f}t j |j|}|js~|j}nJ|jr|j|jkrtdt|jt|jfnt j |jt|j}|j||j||j|jd }|jrt}nd }|jjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirrranyr )dry_run) rZ run_commandZreinitialize_commandrrootZwarn_dirrinfoZ distributionZ get_fullnamerr#r$r%rrZhas_ext_modulesZ install_baseZinstall_platbaser)reprrZ make_archiverrrrZ dist_filesappendrrr.)rr+Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionrrr runOsR        zbdist_dumb.runN) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr&r!r*r4rrrr r s,  r )__doc__r#Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrr s    PK]0h((+command/__pycache__/build_py.cpython-38.pycnu[U e5d&C@szdZddlZddlZddlZddlZddlmZddlTddl m Z m Z ddl m Z GdddeZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)Command)*) convert_path Mixin2to3)logc@seZdZdZdddddgZddgZd diZd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1S)3build_pyz5"build" pure Python modules (copy to build directory))z build-lib=dzdirectory to "build" (copy) to)compileczcompile .py to .pyc) no-compileNz!don't compile .py files [default])z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])forcefz2forcibly build everything (ignore file timestamps)r r r cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer selfr2/usr/lib64/python3.8/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|ddd|jj|_|jj|_|jj|_i|_|jjr^|jjD]\}}t||j|<qF||_ t |j t sz,t |j |_ d|j krdksnt Wn tt fk rtdYnXdS)NZbuild)rr)r r rzoptimize must be 0, 1, or 2)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerintAssertionError ValueErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s$       zbuild_py.finalize_optionscCs:|jr||jr$||||jdddSNr)include_bytecode)r build_modulesrbuild_packagesbuild_package_data byte_compile get_outputsrrrrrunCs z build_py.runcsg}|js|S|jD]h}||}tjj|jg|d}d|rPt|dfdd|||D}| ||||fq|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples.rcsg|]}|dqSNr).0fileZplenrr ssz+build_py.get_data_files..) rget_package_dirosr%joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesrr4rras     zbuild_py.get_data_filescsd|jdg|j|g}g|D]:}ttjt|t|}fdd|Dq$S)z6Return filenames for package's data files in 'src_dir'cs$g|]}|krtj|r|qSr)r7r%isfile)r2fnfilesrrr5s z,build_py.find_data_files..) rgetglobr7r%r8escaperextend)rrr>ZglobspatternZfilelistrrDrr;ys  zbuild_py.find_data_filescCs`d}|jD]P\}}}}|D]>}tj||}|tj||jtj|||ddqq dS)z$Copy data files into build directoryNFZ preserve_mode)rr7r%r8mkpathdirname copy_file)rZlastdirrr>r?r@filenametargetrrrr+szbuild_py.build_package_datacCs|d}|js&|r tjj|SdSng}|rz|jd|}Wn*tk rl|d|d|d=Yq*X|d|tjj|Sq*|jd}|dk r|d||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r/rArN)r9rr7r%r8KeyErrorinsertrF)rrr%tailZpdirrrrr6s(       zbuild_py.get_package_dircCsj|dkr8tj|s td|tj|s8td||rftj|d}tj|rZ|Std|dS)NrAz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r7r%existsZDistutilsFileErrorisdirr8rBrwarn)rrrinit_pyrrr check_packages&   zbuild_py.check_packagecCs&tj|std||dSdSdS)Nz!file %s (for module %s) not foundFT)r7r%rBrrW)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|||ttjt|d}g}tj|jj}|D]P}tj|}||krtj tj |d}| |||fq>| d|q>|S)Nz*.pyrz excluding %s) rYrGr7r%r8rHabspathrZ script_namesplitextbasenamer<Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_frZrrrfind_package_moduless  zbuild_py.find_package_modulesc Csi}g}|jD]}|d}d|dd}|d}z||\}}Wn"tk rh||}d}YnX|s|||} |df||<| r||d| ftj||d} | || sq|||| fq|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r/rrQr0__init__.py) rr9r8rRr6rYr<r7r%r\) rrr`rZr%rZ module_basercheckedrXr[rrr find_moduless*       zbuild_py.find_modulescCsNg}|jr|||jrJ|jD]$}||}|||}||q$|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrIrerr6ra)rr`rrmrrrfind_all_moduless    zbuild_py.find_all_modulescCsdd|DS)NcSsg|] }|dqS)rQr)r2rZrrrr5-sz-build_py.get_source_files..)rgrrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nrc)listr7r%r8)rr?rrZZ outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler0cCs|}g}|D]p\}}}|d}||j||}|||r|jr^|tjj|dd|j dkr|tjj||j dq|dd|j D7}|S)Nr/rA) optimizationrcSs,g|]$\}}}}|D]}tj||qqSr)r7r%r8)r2rr>r?r@rOrrrr5Bs z(build_py.get_outputs..) rgr9rjrr<r importlibutilcache_from_sourcerr)rr(r`ZoutputsrrZr[rOrrrr-3s*      zbuild_py.get_outputscCsbt|tr|d}nt|ttfs,td||j||}tj |}| ||j ||ddS)Nr/z:'package' must be a string (dot-separated), list, or tuplerrK) r strr9rituple TypeErrorrjrr7r%rMrLrN)rrZr[rZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs*|}|D]\}}}||||q dSr1)rers)rr`rrZr[rrrr)Yszbuild_py.build_modulescCsP|jD]D}||}|||}|D]$\}}}||ks:t||||q$qdSr1)rr6rar"rs)rrrr`Zpackage_rZr[rrrr*bs    zbuild_py.build_packagescCstjr|ddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r,rQ)rr prefixdry_run) sysdont_write_bytecoderWdistutils.utilr,rr7sepr r rur)rrEr,rtrrrr,vs&    zbuild_py.byte_compileN)r0)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr&r.rr;r+r6rYr\rarergrhrjr-rsr)r*r,rrrrrs8    '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr||jr*||||j||jdddSr') updated_filesrr)rr*r+Zrun_2to3r,r-rrrrr.s zbuild_py_2to3.runcCs,t||||}|dr(|j|d|S)Nr0r)rrsr~r<)rrZr[rresrrrrsszbuild_py_2to3.build_moduleN)rzr{r|r.rsrrrrr}sr})__doc__r7importlib.utilrlrvrGZdistutils.corerZdistutils.errorsrxrrZ distutilsrrr}rrrrs  }PK]{1command/__pycache__/__init__.cpython-38.opt-2.pycnu[U e5d@s.dddddddddd d d d d dddddgZdS)ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__all__rr2/usr/lib64/python3.8/distutils/command/__init__.pys&PK] .command/__pycache__/check.cpython-38.opt-1.pycnu[U e5d@sdZddlmZddlmZzTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_t||||||||dSN)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr//usr/lib64/python3.8/distutils/command/check.pyrs zSilentReporter.__init__cOs6|j||||ftj|f|||j|d|S)N)leveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrszSilentReporter.system_message)Nrr r )__name__ __module__ __qualname__rrrrrrr s  r TFc@s`eZdZdZdZdddgZdddgZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)checkz6This command checks the meta-data of the package. z"perform some checks on the package)metadatamzVerify meta-data)restructuredtextrzEChecks if long string meta-data syntax are reStructuredText-compliant)strictsz(Will exit with an error if a check failsr#r%r'cCsd|_d|_d|_d|_dS)z Sets default values for options.rN)r%r#r' _warningsrrrrinitialize_options1szcheck.initialize_optionscCsdSr rr+rrrfinalize_options8szcheck.finalize_optionscCs|jd7_t||S)z*Counts the number of warnings that occurs.r))r*rwarn)rmsgrrrr.;sz check.warncCsL|jr||jr0tr"|n|jr0td|jrH|jdkrHtddS)zRuns the command.zThe docutils package is needed.rzPlease correct your package.N)r#check_metadatar% HAS_DOCUTILScheck_restructuredtextr'rr*r+rrrrun@s z check.runcCs|jj}g}dD]"}t||r(t||s||q|rL|dd||jrd|js|dn"|j r||j s|dn |ddS)zEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. )nameversionZurlzmissing required meta-data: %sz, zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be suppliedN) distributionr#hasattrgetattrrr.joinZauthorZ author_emailZ maintainerZmaintainer_email)rr#Zmissingattrrrrr0Ps   zcheck.check_metadatacCsX|j}||D]>}|dd}|dkr8|d}nd|d|f}||qdS)z4Checks if the long string fields are reST-compliant.lineNr)z %s (line %s))r6Zget_long_description_check_rst_datagetr.)rdataZwarningr<rrrr2ns  zcheck.check_restructuredtextc Cs|jjp d}t}tjtfd}d|_d|_d|_t ||j |j |j |j |j|jd}tj|||d}||dz|||Wn:tk r}z|jdd|d ifW5d}~XYnX|jS) z8Returns warnings when the provided data doesn't compile.zsetup.py)Z componentsN)rrrr)rr;z!Could not finish the parsing: %s.)r6Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rr? source_pathparserZsettingsZreporterrBerrrr=ys.  zcheck._check_rst_dataN)rr r!__doc__Z descriptionZ user_optionsZboolean_optionsr,r-r.r3r0r2r=rrrrr"$s  r"N)rHZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r1 Exceptionr"rrrrs        PK]<<  3command/__pycache__/bdist_dumb.cpython-38.opt-1.pycnu[U e5d1@shdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZddddefdddd d d d g Zd ddgZdddZddZddZ ddZ dS) bdist_dumbz"create a "dumb" built distribution)z bdist-dir=dz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))zformat=fz>archive format to create (tar, gztar, bztar, xztar, ztar, zip)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=r z-directory to put final built distributions in) skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths (default: false))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r rrZgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr4/usr/lib64/python3.8/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|dj}tj|d|_|jdkrfz|jtj|_Wn"t k rdt dtjYnX| dddddS)NZbdistZdumbz@don't know how to create dumb built distributions on platform %s)rr)rr)rr) rZget_finalized_command bdist_baseospathjoinrdefault_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)rr"rrr finalize_options=s"    zbdist_dumb.finalize_optionscCs(|js|d|jddd}|j|_|j|_d|_td|j|dd|j |j f}t j |j|}|js~|j}nJ|jr|j|jkrtdt|jt|jfnt j |jt|j}|j||j||j|jd }|jrt}nd }|jjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirrranyr )dry_run) rZ run_commandZreinitialize_commandrrootZwarn_dirrinfoZ distributionZ get_fullnamerr#r$r%rrZhas_ext_modulesZ install_baseZinstall_platbaser)reprrZ make_archiverrrrZ dist_filesappendrrr.)rr+Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionrrr runOsR        zbdist_dumb.runN) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr&r!r*r4rrrr r s,  r )__doc__r#Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrr s    PK] QLQL2command/__pycache__/bdist_msi.cpython-38.opt-1.pycnu[U e5d߉@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sFeZdZdZddZddZddd Zdd d ZdddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs>tj|f||jd}d|d}|dd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr3/usr/lib64/python3.8/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|ddddddd|dS) z,Set the title text of the dialog at the top.Title @<z{\VerdanaBold10}%sN)r )rtitlerrrr"#szPyDialog.titleBackc Cs,|r d}nd}||d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr$8 pushbuttonrrr"nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}||d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr%r$i0r'r(r)r*r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}||d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr%r$r'r(r)r*r,rrrr-@sz PyDialog.nextc Cs,||t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr'r(r)r%)r+intrr)rr.r"r-ZxposrrrxbuttonKszPyDialog.xbuttonN)r#r$)r2r$)r4r$) __name__ __module__ __qualname____doc__rr"r1r3r-r8rrrrrs  rc@seZdZdZddddefdddd d d d d g ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(Z d)d*Z d+d,Z d-d.Z d/d0Z d1d2Zd3d4Zd5d6Zd7S)8 bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in) skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionr?rArCrFz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|dd|jdkr2|dj}tj|d|_t}|jsN|j rN||_|jr|jg|_ |j s|j r|j|krt d|fn t|j|_ |ddd|jrt d|jr|j jD]}|jtj|krqqt d|jd|_dS) NZbdist)rMrMZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rLrL)rIrIz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsrHget_finalized_command bdist_baseospathjoinrrK distributionhas_ext_modulesrPrMrlist all_versionsrOrNZscriptsbasenameinstall_script_key)rrSZ short_versionZscriptrrrfinalize_optionssH      zbdist_msi.finalize_optionscCsz|js|d|jddd}|j|_|j|_d|_|d}d|_d|_|j r|j }|spdt j dd}d |j |f}|d}tj|jd ||_td |j|t jdtj|jd |t jd=||j|j}||}tj|}tj|r"t||jj }|j!} | s<|j"} | sFd } |#} dt$| j%} |j}|j r~d|j |f} nd|} t&'|t(| t&)| | |_*t&+|j*t,d| fg} |j-p|j.}|r| /d|f|j0r| /d|j0f| rt1|j*d| |2|3|4|5|j*6t7|jdr^d|j pJd|f}|jj8/||j9svt:|j|j;ddS)Nbuildinstallr$)Zreinit_subcommandsr install_libz%d.%dz.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr=any)dry_run) }|d?d%d@dAd%d)dB|d7d-dCdDd-d)dE|dFd-dGdHdddI| dJdKd-dLdHdMdNdOddd |jd1dPd1d/} | d0d1|j dPd }|d?d%d@dAd%d)d|d7d-d-dDd-d)d|dFd-ddHddd| ddd-ddHdddddd |ddndd d0d9t|d||||||ddd" }|d|dd%ddtddddXd }|dd ddd-d|dd ddd-d|jd#dd d!| dd"} | dddd| j d0d9dd|d"d} | ddst|d||||||d"d"d"d=d> }|d?d-d%dAd%d)d|dFddddwddġ|ddddd-ddơ|dd&d|d&d-dd} | ddF| ddddZddRddddd } | ddˡ|jddd=d!|j dd"d=d!|d"d# ddst|d||||||ddd" }|d͡|dd%ddHdhddС|dd%ddHddddXd }|dd ddAd{d֡|dd ddAd{d١|jddd=d!| dd"} | dddd| dddd@| ddddN| dddd| dddd| dddd| dddd| dddd| d0d9dd-|d"dѡ ddsdS)Nriri,z[ProductName] Setupr%r$ rc)Z DefaultUIFontDlgFont8)Z ErrorDialogErrorDlg)Z Progress1ZInstall)Z Progress2Zinstalls)MaintenanceForm_ActionRepair) WhichUsersALLZ TextStyle)rTahoma Nr)Z DlgFontBold8rNr$)Z VerdanaBold10VerdanarNr$)Z VerdanaRed9rrrr) PrepareDlgz(Not Privileged or Windows9x or Installed) WhichUsersDlgz.Privileged and not Windows9x and not Installed)SelectFeaturesDlgz Not Installedi)MaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectedi) ProgressDlgNi ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r/r2r#Z Description1rFrPr!z[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.)r.Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryF)Zbitmaprz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnorerreiZ ErrorTextr0rNxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r(r)ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.fr(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar4Z SpawnDialogrzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialograZFeaturesZ SelectionTreer ZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?rZ AdminInstallzGSelect whether to install [ProductName] for all users of this computer.rrzInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"rz({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressrz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrrrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallrz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rxrr rrrr"r1r3r-ZeventZcontrolrr+mappingrWrorPrZ conditionr8Z radiogroupadd)rrxxyrrr"ZmodalZmodelessZtrack_disk_spaceZfatalrBZ user_exitZ exit_dialogZinuseerrorr3ZcostingZprepZseldlgorderrvrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrr}sv                                                   zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rKrIrTrUrVrL)rrZ base_namerrrrrpsz bdist_msi.get_installer_filenameN)r9r:r;Z descriptionrZ user_optionsZboolean_optionsrZrrQr]rnr{rzr|r}rprrrrr=Ss^  ([66&@r=)r<rjrTZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrwr r r r r rrrr=rrrrs       >PK] V88(command/__pycache__/sdist.cpython-38.pycnu[U e5d=J@sdZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd l m Z dd lmZdd lmZdd lmZdd lmZmZddZGdddeZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCs`ddlm}ddlm}g}|D] }|d|d||dfq$|||ddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatr//usr/lib64/python3.8/distutils/command/sdist.py show_formatss     rc@s"eZdZdZddZdddddd d d d d ddddgZddddddgZdddefgZdddZ defgZ dZ ddZ d d!Z d"d#Zd$d%Zd&d'Zd(d)Zed*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZ dFdGZ!dHdIZ"dS)Jsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_checkselfrrrchecking_metadata(szsdist.checking_metadata)z template=tz5name of manifest template file [default: MANIFEST.in])z manifest=mz)name of manifest file [default: MANIFEST]) use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults]) no-defaultsNz"don't include the default file set)pruneNzspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])no-pruneNz$don't automatically exclude anything) manifest-onlyozEjust regenerate the manifest and then stop (implies --force-manifest))force-manifestfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)rNz6formats for source distribution (comma-separated list)) keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])metadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r!r#r%r'r)r,z help-formatsNz#list available distribution formats)r"r$check)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr# manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergrouprrrrinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|dt|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r2r1Zensure_string_listrZcheck_archive_formatsrr r6)rZ bad_formatrrrfinalize_options|s     zsdist.finalize_optionscCs>t|_|D]}||q||jr2dS|dSN)r filelistZget_sub_commandsZ run_command get_file_listr4make_distribution)rZcmd_namerrrruns  z sdist.runcCs*tdt|jd}||dS)zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr/N)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr@)rr/rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)aCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Nz?manifest template '%s' does not exist (using default file list))ospathisfiler1_manifest_is_not_generated read_manifestr=rZremove_duplicatesrfindallr3 add_defaults read_templater#prune_file_listwrite_manifest)rZtemplate_existsrrrr>s(      zsdist.get_file_listcCs<|||||||dS)a9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. N)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scriptsrrrrrJszsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|kS)z Case-sensitive path existence check >>> sdist._cs_path_exists(__file__) True >>> sdist._cs_path_exists(__file__.upper()) False F)rDrEexistsabspathsplitlistdir)fspathrVZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}|D]~}t|trj|}d}|D]"}||r,d}|j|qPq,|s|dd |q||r|j|q|d|qdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESrBZ script_name isinstancetupler[r=rrjoin)rZ standardsfnZaltsZgot_itrrrrNs"    zsdist._add_defaults_standardscCs4ddg}|D]"}ttjjt|}|j|q dS)Nz test/test*.pyz setup.cfg)filterrDrErFrr=extend)rZoptionalpatternfilesrrrrOszsdist._add_defaults_optionalcCs\|d}|jr$|j||jD],\}}}}|D]}|jtj ||q:q*dS)Nbuild_py) get_finalized_commandrBZhas_pure_modulesr=rbget_source_files data_filesrrDrEr_)rreZpkgZsrc_dirZ build_dir filenamesrZrrrrPs   zsdist._add_defaults_pythoncCsz|jrv|jjD]b}t|trBt|}tj|rt|j |q|\}}|D]$}t|}tj|rN|j |qNqdSr<) rBZhas_data_filesrhr]strr rDrErFr=r)ritemdirnamerir(rrrrQ$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)rBZhas_ext_modulesrfr=rbrg)rrmrrrrR5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)rBZhas_c_librariesrfr=rbrg)rrnrrrrS:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)rBZ has_scriptsrfr=rbrg)rrorrrrT?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zh|}|dkr:qz|j|Wq(tt fk r}z| d|j |j |fW5d}~XYq(Xq(W5|XdS)zRead and parse manifest template file named by self.template. (usually "MANIFEST.in") The parsing and processing is done by 'self.filelist', which updates itself accordingly. zreading manifest template '%s'r0)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsZ collapse_joinNz%s, line %d: %s) r infor1rclosereadliner=Zprocess_template_liner ValueErrorrrZZ current_line)rr1linemsgrrrrKDs&   zsdist.read_templatecCs|d}|j}|jjd|jd|jjd|dtjdkrFd}nd}ddd d d d d g}d|d||f}|jj|dddS)avPrune off branches that might slip into the file list as created by 'read_template()', but really don't belong there: * the build tree (typically "build") * the release tree itself (only an issue if we ran "sdist" previously with --keep-temp, or it aborted) * any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories buildN)prefixZwin32z/|\\/ZRCSZCVSz\.svnz\.hgz\.gitz\.bzrZ_darcsz(^|%s)(%s)(%s).*|r0)Zis_regex) rfrB get_fullnamer=Zexclude_patternZ build_basesysplatformr_)rrvbase_dirZsepsZvcs_dirsZvcs_ptrnrrrrLas    zsdist.prune_file_listcCsX|rtd|jdS|jjdd}|dd|tj |j|fd|jdS)zWrite the file list in 'self.filelist' (presumably as filled in by 'add_defaults()' and 'read_template()') to the manifest file named by 'self.manifest'. z5not writing to manually maintained manifest file '%s'Nrz*# file GENERATED by distutils, do NOT editzwriting manifest file '%s') rGr rpr2r=rdinsertZexecuterZ write_file)rZcontentrrrrMys zsdist.write_manifestcCs<tj|jsdSt|j}z |}W5|X|dkS)NFz+# file GENERATED by distutils, do NOT edit )rDrErFr2openrqrr)rfpZ first_linerrrrGs   z sdist._manifest_is_not_generatedc CsVtd|jt|j4}|D](}|}|ds|s:q|j|qW5QRXdS)zRead the manifest file (named by 'self.manifest') and use it to fill in 'self.filelist', the list of files to include in the source distribution. zreading manifest file '%s'#N)r rpr2rstrip startswithr=r)rr2rtrrrrHs zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t||D]<}tj |s|td|q^tj ||}|j |||d q^|j j|dS) aCreate the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. dry_runlinkZhardzmaking hard links in %s...Nzcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r)ZmkpathrZ create_treerhasattrrDr rrprErFr_Z copy_filerBZmetadataZwrite_pkg_info)rr}rdrrufiledestrrrmake_release_trees      zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j krT|j |j |j d|j D]:}|j ||||j|jd}| ||jj dd|fqZ||_|jstj||jddS)aCreate the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. Ztar)r}r8r9rrN)rBrzrDrEr_r6rr=rdrrpopindexZ make_archiver8r9Z dist_filesr7r5rZ remove_treer)rr}Z base_namer7Zfmtrrrrr?s     zsdist.make_distributioncCs|jS)zzReturn the list of archive files created when the command was run, or None if the command hasn't run yet. )r7rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsr\r:r;r@rCr>rJ staticmethodr[rNrOrPrQrRrSrTrKrLrMrGrHrr?rrrrrr$sp' (  *r)__doc__rDr{rwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs          PK]&p!!+command/__pycache__/__init__.cpython-38.pycnu[U e5d@s2dZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr2/usr/lib64/python3.8/distutils/command/__init__.pys(PK]Utw~ .command/__pycache__/bdist.cpython-38.opt-2.pycnu[U e5d@sDddlZddlmZddlTddlmZddZGdddeZdS) N)Command)*) get_platformcCsPddlm}g}tjD]"}|d|dtj|dfq||}|ddS)Nr) FancyGetoptformats=z'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr//usr/lib64/python3.8/distutils/command/bdist.py show_formats s    rc @seZdZdZddddefdddd d gZd gZd d defgZdZ dddZ dddddddddg Z ddddddd d!d"d# Z d$d%Z d&d'Zd(d)Zd S)*rz$create a built (binary) distribution)z bdist-base=bz4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s))rNz/formats for distribution (comma-separated list))z dist-dir=dz=directory to put final built distributions in [default: dist]) skip-buildNz2skip rebuilding everything (for testing/debugging))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]rz help-formatsNz$lists available distribution formats) bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsi)rzRPM distribution) bdist_dumbzgzip'ed tar file)r#zbzip2'ed tar file)r#zxz'ed tar file)r#zcompressed tar file)r#ztar file)Z bdist_wininstzWindows executable installer)r#zZIP file)Z bdist_msizMicrosoft Installer) rrrrrr r!rr"cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfrrrinitialize_optionsQszbdist.initialize_optionscCs|jdkr(|jrt|_n|dj|_|jdkrT|dj}tj|d|j|_| d|j dkrz|j tj g|_ Wn"t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r%r'rZget_finalized_commandr$ build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr&)r*r,rrrfinalize_optionsZs*        zbdist.finalize_optionsc Csg}|jD]>}z||j|dWq tk rFtd|Yq Xq tt|jD]h}||}||}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ | |qXdS)Nrzinvalid format '%s'r#r)r r r r2ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r)r(Z keep_tempZ run_command)r*Zcommandsr iZcmd_nameZsub_cmdrrrrunvs"    z bdist.run)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr6r0r r r+r3r8rrrrrsR   r)r-Zdistutils.corerZdistutils.errorsZdistutils.utilrrrrrrrs    PK] V88.command/__pycache__/sdist.cpython-38.opt-1.pycnu[U e5d=J@sdZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd l m Z dd lmZdd lmZdd lmZdd lmZmZddZGdddeZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCs`ddlm}ddlm}g}|D] }|d|d||dfq$|||ddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatr//usr/lib64/python3.8/distutils/command/sdist.py show_formatss     rc@s"eZdZdZddZdddddd d d d d ddddgZddddddgZdddefgZdddZ defgZ dZ ddZ d d!Z d"d#Zd$d%Zd&d'Zd(d)Zed*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZ dFdGZ!dHdIZ"dS)Jsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_checkselfrrrchecking_metadata(szsdist.checking_metadata)z template=tz5name of manifest template file [default: MANIFEST.in])z manifest=mz)name of manifest file [default: MANIFEST]) use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults]) no-defaultsNz"don't include the default file set)pruneNzspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])no-pruneNz$don't automatically exclude anything) manifest-onlyozEjust regenerate the manifest and then stop (implies --force-manifest))force-manifestfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)rNz6formats for source distribution (comma-separated list)) keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])metadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r!r#r%r'r)r,z help-formatsNz#list available distribution formats)r"r$check)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr# manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergrouprrrrinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|dt|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r2r1Zensure_string_listrZcheck_archive_formatsrr r6)rZ bad_formatrrrfinalize_options|s     zsdist.finalize_optionscCs>t|_|D]}||q||jr2dS|dSN)r filelistZget_sub_commandsZ run_command get_file_listr4make_distribution)rZcmd_namerrrruns  z sdist.runcCs*tdt|jd}||dS)zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr/N)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr@)rr/rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)aCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Nz?manifest template '%s' does not exist (using default file list))ospathisfiler1_manifest_is_not_generated read_manifestr=rZremove_duplicatesrfindallr3 add_defaults read_templater#prune_file_listwrite_manifest)rZtemplate_existsrrrr>s(      zsdist.get_file_listcCs<|||||||dS)a9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. N)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scriptsrrrrrJszsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|kS)z Case-sensitive path existence check >>> sdist._cs_path_exists(__file__) True >>> sdist._cs_path_exists(__file__.upper()) False F)rDrEexistsabspathsplitlistdir)fspathrVZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}|D]~}t|trj|}d}|D]"}||r,d}|j|qPq,|s|dd |q||r|j|q|d|qdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESrBZ script_name isinstancetupler[r=rrjoin)rZ standardsfnZaltsZgot_itrrrrNs"    zsdist._add_defaults_standardscCs4ddg}|D]"}ttjjt|}|j|q dS)Nz test/test*.pyz setup.cfg)filterrDrErFrr=extend)rZoptionalpatternfilesrrrrOszsdist._add_defaults_optionalcCs\|d}|jr$|j||jD],\}}}}|D]}|jtj ||q:q*dS)Nbuild_py) get_finalized_commandrBZhas_pure_modulesr=rbget_source_files data_filesrrDrEr_)rreZpkgZsrc_dirZ build_dir filenamesrZrrrrPs   zsdist._add_defaults_pythoncCsz|jrv|jjD]b}t|trBt|}tj|rt|j |q|\}}|D]$}t|}tj|rN|j |qNqdSr<) rBZhas_data_filesrhr]strr rDrErFr=r)ritemdirnamerir(rrrrQ$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)rBZhas_ext_modulesrfr=rbrg)rrmrrrrR5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)rBZhas_c_librariesrfr=rbrg)rrnrrrrS:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)rBZ has_scriptsrfr=rbrg)rrorrrrT?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zh|}|dkr:qz|j|Wq(tt fk r}z| d|j |j |fW5d}~XYq(Xq(W5|XdS)zRead and parse manifest template file named by self.template. (usually "MANIFEST.in") The parsing and processing is done by 'self.filelist', which updates itself accordingly. zreading manifest template '%s'r0)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsZ collapse_joinNz%s, line %d: %s) r infor1rclosereadliner=Zprocess_template_liner ValueErrorrrZZ current_line)rr1linemsgrrrrKDs&   zsdist.read_templatecCs|d}|j}|jjd|jd|jjd|dtjdkrFd}nd}ddd d d d d g}d|d||f}|jj|dddS)avPrune off branches that might slip into the file list as created by 'read_template()', but really don't belong there: * the build tree (typically "build") * the release tree itself (only an issue if we ran "sdist" previously with --keep-temp, or it aborted) * any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories buildN)prefixZwin32z/|\\/ZRCSZCVSz\.svnz\.hgz\.gitz\.bzrZ_darcsz(^|%s)(%s)(%s).*|r0)Zis_regex) rfrB get_fullnamer=Zexclude_patternZ build_basesysplatformr_)rrvbase_dirZsepsZvcs_dirsZvcs_ptrnrrrrLas    zsdist.prune_file_listcCsX|rtd|jdS|jjdd}|dd|tj |j|fd|jdS)zWrite the file list in 'self.filelist' (presumably as filled in by 'add_defaults()' and 'read_template()') to the manifest file named by 'self.manifest'. z5not writing to manually maintained manifest file '%s'Nrz*# file GENERATED by distutils, do NOT editzwriting manifest file '%s') rGr rpr2r=rdinsertZexecuterZ write_file)rZcontentrrrrMys zsdist.write_manifestcCs<tj|jsdSt|j}z |}W5|X|dkS)NFz+# file GENERATED by distutils, do NOT edit )rDrErFr2openrqrr)rfpZ first_linerrrrGs   z sdist._manifest_is_not_generatedc CsVtd|jt|j4}|D](}|}|ds|s:q|j|qW5QRXdS)zRead the manifest file (named by 'self.manifest') and use it to fill in 'self.filelist', the list of files to include in the source distribution. zreading manifest file '%s'#N)r rpr2rstrip startswithr=r)rr2rtrrrrHs zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t||D]<}tj |s|td|q^tj ||}|j |||d q^|j j|dS) aCreate the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. dry_runlinkZhardzmaking hard links in %s...Nzcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r)ZmkpathrZ create_treerhasattrrDr rrprErFr_Z copy_filerBZmetadataZwrite_pkg_info)rr}rdrrufiledestrrrmake_release_trees      zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j krT|j |j |j d|j D]:}|j ||||j|jd}| ||jj dd|fqZ||_|jstj||jddS)aCreate the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. Ztar)r}r8r9rrN)rBrzrDrEr_r6rr=rdrrpopindexZ make_archiver8r9Z dist_filesr7r5rZ remove_treer)rr}Z base_namer7Zfmtrrrrr?s     zsdist.make_distributioncCs|jS)zzReturn the list of archive files created when the command was run, or None if the command hasn't run yet. )r7rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsr\r:r;r@rCr>rJ staticmethodr[rNrOrPrQrRrSrTrKrLrMrGrHrr?rrrrrr$sp' (  *r)__doc__rDr{rwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs          PK]1f] ? ?2command/__pycache__/build_ext.cpython-38.opt-1.pycnu[U e5dP{@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZed Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nrshow_compilers)distutils.ccompilerr r r3/usr/lib64/python3.8/distutils/command/build_ext.pyr s r c@seZdZdZdejZdddddefdd d d efd d ddddefddddddddddgZddddd gZ d!d"d#e fgZ d$d%Z d&d'Z d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zejd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZd"S)H build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z build-lib=bz(directory for compiled extension modules)z build-temp=tz1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s))inplaceiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link withz library-dirs=Lz.directories to search for external C libraries)zrpath=Rz7directories to search for shared C libraries at runtime)z link-objects=Oz2extra explicit link objects to include in the link)debuggz'compile/link with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)swig-cppNz)make SWIG create C++ files (default is C))z swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)userNz#add user include, library and rpathrrr r$r%z help-compilerNzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsrr compilerswigswig_cpp swig_optsr%parallelselfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|ddddddd d |jdkr8|jj|_|jj|_|}|jd d }|j dkrn|jj pjg|_ t |j t r|j t j|_ tjtjkr|j t jtjd |j | t jj||kr|j | t jj|d|d|jdkrg|_|jdkrg|_nt |jt r:|j t j|_|jdkrNg|_nt |jt rl|j t j|_t jdkrh|jt jtjdtjtjkr|jt jtjd|jrt j|jd|_nt j|jd|_|j t jtt tdd}|r|j||j!dkr*d}n|j!dd}t jtjd}|r\t j||}|j|tj"dddkrtj#$t jtjdr|jt jtjddt%dn |jd|&dr|j's|j|&d n |jd|j(r|j( d!}d"d#|D|_(|j)r4|j) d!|_)|j*dkrHg|_*n|j* d$|_*|j+rt jt,d }t jt,d} t j-|r|j |t j-| r|j| |j| t |j.t rzt/|j.|_.Wnt0k rt1d%YnXdS)&Nr) sysconfigZbuild)r'r')r)r))r2r2)rr)r r )r6r6)r(r()Z plat_specificZincluder.r1ntZlibsZDebugZRelease_homewin32ZPCbuildcygwinbinlibpythonZconfig.Py_ENABLE_SHAREDZLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)2 distutilsr:Zset_undefined_optionsr* distributionZ ext_packageZ ext_modulesr&Zget_python_incr+ isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinextendZensure_string_listr.r/r0nameprefixrr)dirnamergetattrr(platform executable startswithrget_config_varZ python_buildr,r-r5r%r isdirr6int ValueErrorZDistutilsOptionError) r8r:Z py_includeZplat_py_includeZ _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                           zbuild_ext.finalize_optionscCsjddlm}|jsdS|jrL|d}|j|p:g|j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j |j|jdk r|j |j|jdk r|jD]\}}|j ||q|jdk r|jD]}|j |q|jdk r|j |j|j dk r*|j |j |jdk rD|j |j|j dk r^|j !|j |"dS)Nr) new_compiler build_clib)r2verbosedry_runr r<)#rrgr&rMZhas_c_librariesget_finalized_commandr.rYZget_library_namesr/rVrhr2rirjr rrQrZr(r Z initializer+Zset_include_dirsr,Z define_macror-Zundefine_macroZ set_librariesZset_library_dirsr0Zset_runtime_library_dirsr1Zset_link_objectsbuild_extensions)r8rgrhrZvaluemacrorrrruns@            z build_ext.runc Csvt|tstdt|D]T\}}t|tr0qt|trFt|dkrNtd|\}}td|t|t rvt |s~tdt|t stdt||d}dD]"}| |}|d k rt|||q| d |_d |krtd | d }|rhg|_g|_|D]b} t| tr"t| dks*tdt| dkrJ|j| dnt| dkr|j| q|||<qd S)aEnsure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sources)r+r/r. extra_objectsextra_compile_argsextra_link_argsNr0Zdef_filez9'def_file' element of build info dict no longer supportedmacros)r;rpz9'macros' element of build info dict must be 1- or 2-tupler;r)rNlistDistutilsSetupError enumeratertuplelenr warnrOextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrV) r8r&rextext_nameZ build_infokeyvalrurnrrrcheck_extensions_listVs^        zbuild_ext.check_extensions_listcCs,||jg}|jD]}||jq|SN)rr&rYrq)r8 filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs2||jg}|jD]}|||jq|Sr)rr&rVget_ext_fullpathrZ)r8Zoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(||j|jr|n|dSr)rr&r6_build_extensions_parallel_build_extensions_serialr7rrrrls  zbuild_ext.build_extensionsc sj}jdkrt}zddlm}Wntk r@d}YnX|dkrVdS||dPfddjD}tj|D]&\}} || W5QRXqW5QRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}j|qSr)Zsubmitbuild_extension)rIrZexecutorr8rrrJsz8build_ext._build_extensions_parallel..) r6rQ cpu_countZconcurrent.futuresr ImportErrorrr&zip_filter_build_errorsresult)r8ZworkersrZfuturesrZfutrrrrs"     z$build_ext._build_extensions_parallelc Cs0|jD]$}||||W5QRXqdSr)r&rr)r8rrrrrs  z"build_ext._build_extensions_serialc csTz dVWnDtttfk rN}z |js*|d|j|fW5d}~XYnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalr{rZ)r8rerrrrs zbuild_ext._filter_build_errorsc CsP|j}|dkst|ttfs*td|jt|}||j}||j}|jslt ||dslt d|jdSt d|j| ||}|jpg}|jdd}|jD]}||fq|jj||j||j|j ||jd}|dd|_|jr||j|jpg}|jp|j|} |jj|||||j|j|| ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrur+rextra_postargsdepends)r.r/rrexport_symbolsrr)Z target_lang)!rqrNrvryrwrZrrr rr rinfo swig_sourcesrsrrrVr2compiler)r+Z_built_objectsrrrYrtlanguageZdetect_languageZlink_shared_object get_librariesr/rget_export_symbols) r8rrqext_pathrZ extra_argsrur-ZobjectsrrrrrsX        zbuild_ext.build_extensioncCs$g}g}i}|jrtd|js6d|jks6d|jkrI don't know how to find (much less run) SWIG on platform '%s'N)rQrZrWrXisfileZDistutilsPlatformError)r8Zversfnrrrrgs    zbuild_ext.find_swigcCs||}|d}||d}|jsRtjj|dd|g}tj|j|Sd|dd}|d}tj | |}tj||S)zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). rErNrbuild_py) get_ext_fullnamerPget_ext_filenamerrQrWrXr'rkabspathZget_package_dir)r8rfullnamemodpathfilenamer*rZ package_dirrrrrs   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNrE)r*)r8rrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|d}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). rrarEZ EXT_SUFFIX)distutils.sysconfigrarPrQrWrX)r8rrarZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCsxd|jdd}z|dWn0tk rRd|dddd}YnXd |}||jkrr|j||jS) aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. _rErasciirZpunycode-_ZPyInit)rZrPencodeUnicodeEncodeErrorreplacedecoderrV)r8rreZ initfunc_namerrrrs"  zbuild_ext.get_export_symbolscCstjdkr^ddlm}t|j|sd}|jr4|d}|tjd?tjd?d@f}|j|gSndd l m }d }|d rt td rd }nr) MSVCCompilerz python%d%dZ_drFrFZgetandroidapilevelTrAZ_PYTHON_HOST_PLATFORMZANDROID_API_LEVELZMACHDEPZ LDVERSIONrD)rSr^Zdistutils._msvccompilerrrNr2r hexversionr.rrahasattrrQenviron)r8rrtemplateZ pythonlibraZlink_libpythonZ ldversionrrrrs4         zbuild_ext.get_libraries) __name__ __module__ __qualname__Z descriptionrQrRZsep_byr Z user_optionsZboolean_optionsr Z help_optionsr9rfrorrrrlrr contextlibcontextmanagerrrrrrrrrrrrrrr!sp +@N  K6  r)__doc__rrQrerSZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rLr Zsiter rr|r rrrrrs$       PK]5/command/__pycache__/upload.cpython-38.opt-2.pycnu[U &.e@sddlZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z mZddlmZddlmZddlmZGd d d eZdS) N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZddZddZd d Z d d Z d S)uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesr cCs,t|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr0/usr/lib64/python3.8/distutils/command/upload.pyr s  zupload.initialize_optionscCsrt||jr|jstd|}|ikrV|d|_|d|_|d|_|d|_ |jsn|j jrn|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rZconfigrrrr(s      zupload.finalize_optionscCs:|jjsd}t||jjD]\}}}||||qdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc"Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } z | } W5| X|j j } d d | | tj|| f||t| d | | | | | | | | | | | | | d}zt!| }WnPt"k r}z0d|}|#|t$j%ddl&m'}|s|W5d}~XYn X||d<d|d<|jrt|dd "} tj|d| f|d<W5QRX|j(d|j)*d}dt+|,d}d}d|*d}|d}t-.}|/D]\}}d|}t0|t1sP|g}|D]j}t2|t3kr|d|d7}|d}nt4|*d }|5||5|*d |5d!|5|qTq.|5||6}d"||jf}|#|t$j%d#|t4t7||d$}t8|j||d%}zt9|}|:}|j;} Wnftk r}z|#t4|t$j?W5d}~XYnX|d&kr|#d'|| ft$j%|j@r|A|}!d(Bd)|!d)f}|#|t$j%n"d*|| f}|#|t$j?tC|dS)+NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper Z sha256_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesz#calculating md5 checksum failed: %sr) get_fips_modeZ md5_digestrZcommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"zutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s zK---------------------------------------------------------------------------zUpload failed (%s): %s)DrrAssertionErrorr rr r$openclosereadrZmetadataZget_nameZ get_versionospathbasenamehashlibZsha256Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesZmd5 ValueErrorZannouncer INFOZ_hashlibr.rrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvaluelenrrZgetcoderrcodeOSErrorZERRORrZ_read_pypi_responsejoinr)"rrr r!ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr)metar2Zdigesterr.Z user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler3ZrequestresultZstatusreasontextrrrrBs       !           zupload.upload_fileN) __name__ __module__ __qualname__r+r Z user_optionsZboolean_optionsrrr"rrrrrr s r )r:rBr-r=base64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PK]7.command/__pycache__/check.cpython-38.opt-2.pycnu[U e5d@sddlmZddlmZzTddlmZddlmZddlm Z ddlm Z ddl m Z Gdd d eZ d ZWnek rd ZYnXGd d d eZdS))Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_t||||||||dSN)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr//usr/lib64/python3.8/distutils/command/check.pyrs zSilentReporter.__init__cOs6|j||||ftj|f|||j|d|S)N)leveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrszSilentReporter.system_message)Nrr r )__name__ __module__ __qualname__rrrrrrr s  r TFc@s\eZdZdZdddgZdddgZdd Zd d Zd d ZddZ ddZ ddZ ddZ dS)checkz"perform some checks on the package)metadatamzVerify meta-data)restructuredtextrzEChecks if long string meta-data syntax are reStructuredText-compliant)strictsz(Will exit with an error if a check failsr#r%r'cCsd|_d|_d|_d|_dS)Nr)r%r#r' _warningsrrrrinitialize_options1szcheck.initialize_optionscCsdSr rr+rrrfinalize_options8szcheck.finalize_optionscCs|jd7_t||S)Nr))r*rwarn)rmsgrrrr.;sz check.warncCsL|jr||jr0tr"|n|jr0td|jrH|jdkrHtddS)NzThe docutils package is needed.rzPlease correct your package.)r#check_metadatar% HAS_DOCUTILScheck_restructuredtextr'rr*r+rrrrun@s z check.runcCs|jj}g}dD]"}t||r(t||s||q|rL|dd||jrd|js|dn"|j r||j s|dn |ddS)N)nameversionZurlzmissing required meta-data: %sz, zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied) distributionr#hasattrgetattrrr.joinZauthorZ author_emailZ maintainerZmaintainer_email)rr#Zmissingattrrrrr0Ps   zcheck.check_metadatacCsX|j}||D]>}|dd}|dkr8|d}nd|d|f}||qdS)Nliner)z %s (line %s))r6Zget_long_description_check_rst_datagetr.)rdataZwarningr<rrrr2ns  zcheck.check_restructuredtextc Cs|jjp d}t}tjtfd}d|_d|_d|_t ||j |j |j |j |j|jd}tj|||d}||dz|||Wn:tk r}z|jdd|difW5d}~XYnX|jS) Nzsetup.py)Z components)rrrr)rr;z!Could not finish the parsing: %s.)r6Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rr? source_pathparserZsettingsZreporterrBerrrr=ys.  zcheck._check_rst_dataN) rr r!Z descriptionZ user_optionsZboolean_optionsr,r-r.r3r0r2r=rrrrr"$s  r"N)Zdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r1 Exceptionr"rrrrs        PK]̵ή8command/__pycache__/install_headers.cpython-38.opt-1.pycnu[U e5d@s$dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sFeZdZdZddgZdgZddZddZd d Zd d Z d dZ dS)install_headerszinstall C/C++ header files)z install-dir=dz$directory to install header files to)forcefz-force installation (overwrite existing files)rcCsd|_d|_g|_dS)Nr) install_dirroutfilesselfr 9/usr/lib64/python3.8/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|ddddS)NZinstall)rr)rr)Zset_undefined_optionsr r r r finalize_optionssz install_headers.finalize_optionscCsH|jj}|sdS||j|D]"}|||j\}}|j|q dSN) distributionheadersZmkpathrZ copy_filerappend)r rheaderout_r r r run!s zinstall_headers.runcCs |jjp gSr)rrr r r r get_inputs+szinstall_headers.get_inputscCs|jSr)rr r r r get_outputs.szinstall_headers.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsr rrrrr r r r r s rN)__doc__Zdistutils.corerrr r r r s PK]QN'')command/__pycache__/config.cpython-38.pycnu[U e5d=3@sldZddlZddlZddlmZddlmZddlmZddl m Z ddd Z Gd d d eZ dd d Z dS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZdddddddd d g Zd d Zd dZddZddZddZ ddZ ddZ ddZ ddZ d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddgfd,d-Zd6d.d/ZdS)7configzprepare to build)z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_filesselfr0/usr/lib64/python3.8/distutils/command/config.pyinitialize_options3szconfig.initialize_optionscCs|jdkr|jjpg|_nt|jtr6|jtj|_|jdkrHg|_nt|jtr^|jg|_|jdkrpg|_nt|jtr|jtj|_dSN) rZ distribution isinstancestrsplitospathseprrrrrrfinalize_optionsBs       zconfig.finalize_optionscCsdSrrrrrrrunRsz config.runcCszddlm}m}t|j|sv||j|jdd|_t|j|jrN|j|j|j rb|j |j |j rv|j |j dS)z^Check that 'self.compiler' really is a CCompiler object; if not, make it one. r) CCompiler new_compilerr)rdry_runZforceN) distutils.ccompilerr"r#rrr$rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr"r#rrr_check_compilerYs  zconfig._check_compilerc Csldt|}t|dL}|r>|D]}|d|q |d|||ddkr^|dW5QRX|S)NZ _configtestwz#include <%s>  )LANG_EXTopenwrite)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks     zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.ir)r3rextendrZ preprocess)rr-r.rr/srcoutrrr _preprocessws zconfig._preprocesscCs\||||}|jr"t|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':r4)r3r dump_filerZobject_filenamesrr5compile)rr-r.rr/r6objrrr_compile~szconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdk r\| |jj} |j | ||| fS)Nr)rrZ target_lang) r<rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr-r.rrrr/r6r;progrrr_links    z config._linkc GsT|s|j}g|_tdd||D](}zt|Wq&tk rLYq&Xq&dS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr0rrr_cleansz config._cleanNrcCsRddlm}|d}z|||||Wn|k rDd}YnX||S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r CompileErrorTF)r%rKr&r8rIrr-r.rr/rKokrrrtry_cpps  zconfig.try_cppc Csx||||||\}}t|tr0t|}t|.}d} |} | dkrPqb|| r>d} qbq>W5QRX| | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r&r8rrrer:r+readlinesearchrI) rpatternr-r.rr/r6r7r1matchlinerrr search_cpps     zconfig.search_cppcCsdddlm}|z|||||d}Wn|k rDd}YnXt|rRdpTd||S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. rrJTFsuccess!failure.)r%rKr&r<rrDrIrLrrr try_compiles  zconfig.try_compilec Cspddlm}m}|z|||||||d} Wn||fk rPd} YnXt| r^dp`d|| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. rrK LinkErrorTFrWrX)r%rKr[r&rBrrDrI) rr-r.rrrr/rKr[rMrrrtry_links  zconfig.try_linkc Csddlm}m}|z.|||||||\} } } || gd} Wn||tfk rdd} YnXt| rrdptd| | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. rrZTFrWrX) r%rKr[r&rBZspawnrrrDrI) rr-r.rrrr/rKr[r6r;ZexerMrrrtry_runs    zconfig.try_runrc Cst|g}|r|d||d|r<|d|n|d||dd|d}||||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r()r&r@rEr\) rfuncr.rrrZdeclZcallr-rrr check_funcs   zconfig.check_funccCs ||d|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r&r\)rZlibraryrr.rZother_librariesrrr check_lib4s  zconfig.check_libcCs|jd|g|dS)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. z /* No body */)r-r.r)rN)rr2rrr/rrr check_headerBs zconfig.check_header)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsrr r!r&r3r8r<rBrIrNrVrYr\r]r`rarbrrrrrs\         rcCsJ|dkrtd|n t|t|}zt|W5|XdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrDr+closeread)r0headr1rrrr9Ks r9)N)__doc__rrPZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr*rr9rrrrs      8PK]̵ή2command/__pycache__/install_headers.cpython-38.pycnu[U e5d@s$dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sFeZdZdZddgZdgZddZddZd d Zd d Z d dZ dS)install_headerszinstall C/C++ header files)z install-dir=dz$directory to install header files to)forcefz-force installation (overwrite existing files)rcCsd|_d|_g|_dS)Nr) install_dirroutfilesselfr 9/usr/lib64/python3.8/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|ddddS)NZinstall)rr)rr)Zset_undefined_optionsr r r r finalize_optionssz install_headers.finalize_optionscCsH|jj}|sdS||j|D]"}|||j\}}|j|q dSN) distributionheadersZmkpathrZ copy_filerappend)r rheaderout_r r r run!s zinstall_headers.runcCs |jjp gSr)rrr r r r get_inputs+szinstall_headers.get_inputscCs|jSr)rr r r r get_outputs.szinstall_headers.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsr rrrrr r r r r s rN)__doc__Zdistutils.corerrr r r r s PK] ! !1command/__pycache__/register.cpython-38.opt-1.pycnu[U e5d-@sddZddlZddlZddlZddlZddlmZddlm Z ddl Tddl m Z Gddde Z dS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejddgZejdddgZddd fgZd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdddZdS) registerz7register the distribution with the Python package index)list-classifiersNz list the valid Trove classifiers)strictNzBWill stop the registering if the meta-data are not fully compliantverifyrrcheckcCsdS)NTselfr r 2/usr/lib64/python3.8/distutils/command/register.pyzregister.cCst|d|_d|_dS)Nr)rinitialize_optionslist_classifiersrr r r rrs zregister.initialize_optionscCs*t|d|jfdd}||jjd<dS)Nr)r)rrestructuredtextr )rfinalize_optionsr distributionZcommand_options)r Z check_optionsr r rr$s  zregister.finalize_optionscCsT|||D]}||q|jr8|n|jrH|n|dS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)r Zcmd_namer r rrun+s    z register.runcCs8tdt|jd}||j|_d|_|dS)zDeprecated API.zddistutils.command.register.check_metadata is deprecated, use the check command insteadr rN)rPendingDeprecationWarningrZget_command_objZensure_finalizedrrr)r r r r rcheck_metadata:s zregister.check_metadatacCsz|}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_d S) z: Reads the configuration file and set attributes. usernamepassword repositoryrealmTZpypiz%s not found in .pypircFN)Z _read_pypircrrr r! has_configZDEFAULT_REPOSITORY ValueError)r Zconfigr r rrDs     zregister._set_configcCs*|jd}tj|}t||dS)z8 Fetch the list of classifiers from the server. z?:action=list_classifiersN)r urllibrequestZurlopenrinfo_read_pypi_response)r ZurlZresponser r rrUs  zregister.classifierscCs&||d\}}td||dS)zF Send the metadata to the package index server to be checked. r Server response (%s): %sN)post_to_serverbuild_post_datarr&)r coderesultr r rr\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}d}||krd|dtjt}|sRd}q,||kr,tdq,|dkrl|s|td}qn|st d}q|t j }t j |jd }||j|||||d |\}}|d ||ftj|d kr|jr||j_nf|d tj|d|tjd}|dkrNtd}|s*d}q*|dkr|||nl|dkrddi} d| d<| d<| d<d| d<| dstd| d<q| d| dkr0| dst d| d<q| dst d| d<q| d| dkrd| d<d| d<tdq| dsJtd| d<q0|| \}}|d krrtd ||ntdtd nP|d!krdd"i} d| d<| dstd#| d<q|| \}}td ||dS)$a_ Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. 1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitr(zAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2:actionusernamerZemailNZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r"rrsplitannouncerINFOinputprintgetpassr$r%ZHTTPPasswordMgrparseZurlparser Z add_passwordr!r)r*rZ _get_rc_filelowerZ _store_pypircr&) r ZchoicerrchoicesauthZhostr+r,datar r rrcs                   zregister.send_metadatacCs|jj}|d|||||||| | | | | |||d}|ds|ds|drd|d<|S)Nz1.0)r5metadata_versionr7versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrJrKrLz1.1rD)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)r actionmetarCr r rr*s,zregister.build_post_dataNc Csd|kr$|d|d|jftjd}d|}|d}t}|D]~\}}t|tgtdfkrn|g}|D]R}t|}| || d|| d| ||rr|d d krr| d qrqH| || d | d }d |tt |d} t j|j|| } t jt jj|d} d}z| | } Wnxt jjk r} z"|jrd| j}| j| jf} W5d} ~ XYnJt jjk r} zdt| f} W5d} ~ XYnX|jr|| }d} |jrd d|df}||tj| S)zC Post a query to the server, and return a string response. r7zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--r z* Content-Disposition: form-data; name="%s"z   zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr/Ni)r0ZOKzK---------------------------------------------------------------------------)r:r rr;ioStringIOitemstypestrwritegetvalueencodelenr$r%ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr+msgZURLErrorr'join)r rCrBboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqZopenerr,er_r r rr)s^          zregister.post_to_server)N)__name__ __module__ __qualname__rGrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr*r)r r r rrs* zr)__doc__r>rRZ urllib.parser$Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs   PK]g[a&4command/__pycache__/install_lib.cpython-38.opt-1.pycnu[U e5d @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default]) no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]) skip-buildNzskip the build stepsrr r r cCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_buildselfr5/usr/lib64/python3.8/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtszt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr)rr)rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorrrrrrfinalize_options<s&     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dSN)buildr distributionhas_pure_modules byte_compilerZoutfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddS)Nbuild_py build_ext)rr"r#Z run_commandhas_ext_modulesrrrrr!fs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarnr%rrrrmszinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r$r)rrprefixdry_run)rrr.verboser/) sysdont_write_bytecoder-Zdistutils.utilr$get_finalized_commandrootr rr/rr0)rfilesr$Z install_rootrrrr$vs$    zinstall_lib.byte_compilec Csd|sgS||}|}t||}t|ttj}g}|D] } |tj|| |dq>|Sr ) r3 get_outputsgetattrlenr*sepappendr+join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss  zinstall_lib._mutate_outputscCsrg}|D]d}tjtj|d}|tkr.q|jrJ|tjj |dd|j dkr|tjj ||j dq|S)Nr) optimizationr) r*r+splitextnormcasePYTHON_SOURCE_EXTENSIONr r: importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r'rr()r>r"r#rr rGr))rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr6s    zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r'r()r"r#r3extendr6r))rZinputsr'r(rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrr&r!rr$r>rGr6rIrrrrrs*   r) __doc__r*importlib.utilrDr1Zdistutils.corerZdistutils.errorsrrCrrrrrs  PK]m%110command/__pycache__/install.cpython-38.opt-2.pycnu[U &.ej@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZmZdd lmZdd l mZdd lmZdd lmZd ZddddddZddddddddddddedZerdddddded<ddd d!dded"<dZGd#d$d$eZdS)%N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@s:eZdZdZdddddddd d d d d ddddddgZdddgZer`edddefedddiZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEefdFefdGefdHefdIdJdKfgZdS)Linstallz'install everything from build directory)zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nzr)r%r&r+r(r)r*r,r-r r r.r select_schemer$r"r#hasattrrM base_prefixrGenvironr\normpath)r9Zadditionr:r:r;rKsZ          zinstall.finalize_unixcCs|jr8|jdkrtd|j|_|_|tjdn|jdk r\|j|_|_|dn\|j dkrvtj t j |_ |j |_|_z|tjWn"t k rtdtjYnXdS)NrmZ_userrz)I don't know how to install stuff on '%s')r r.rr%r&rorGrHr$r"r\rsrMKeyErrorr8r:r:r;rLs&    zinstall.finalize_othercCs<t|}tD]*}d|}t||dkr t||||q dSNZinstall_)INSTALL_SCHEMES SCHEME_KEYSrisetattr)r9rHZschemekeyattrnamer:r:r;ros zinstall.select_schemecCsX|D]N}t||}|dk rtjdks.tjdkr:tj|}t||j}t|||qdS)Nr=r)rirGrHr\ expanduserr rSrx)r9attrsattrrlr:r:r; _expand_attrss   zinstall._expand_attrscCs|dddgdS)Nr%r&r'r~r8r:r:r;rUszinstall.expand_basedirscCs|ddddddgdS)Nr(r)r+r*r,r-rr8r:r:r;rWs zinstall.expand_dirscGs,|D]"}d|}t||tt||qdSru)rxrrir9namesrHr}r:r:r;rYszinstall.convert_pathscCs|jdkr|jj|_|jdk rtdt|jtrB|jd|_t|jdkr`|jd}}n"t|jdkrz|j\}}ntdt |}nd}d}||_ ||_ dS)NzIDistribution option extra_path is deprecated. See issue27919 for details.,r!rr?zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsr>) r1rQrrI isinstancestrrOlenr r path_filer^)r9rr^r:r:r;rZs(      zinstall.handle_extra_pathc Gs0|D]&}d|}t||t|jt||qdSru)rxr r'rirr:r:r;r_szinstall.change_rootscCsb|js dSttjd}|jD]8\}}||r$tj|s$| d|t |dq$dS)N~zos.makedirs('%s', 0o700)i) r rrGr\r{rSitems startswithisdirZ debug_printmakedirs)r9r$rHr\r:r:r;rXszinstall.create_home_pathcCs"|js6|d|jdj}|jr6|tkr6td|D]}||q>|j r\| |j r| }|j rt|j }tt|D]}|||d||<q|t|j |fd|j ttjjtj}ttjj|}tjtj|j}|jr|j r|js||krtd|jdS)NrFz"Can't install when cross-compilingz'writing list of installed files to '%s'zmodules installed to '%s', which is not in Python's module search path (sys.path) -- you'll have to change the search path yourself)r3Z run_commandrQZget_command_objZ plat_namer4r rget_sub_commandsrcreate_path_filer7 get_outputsr'rrangeexecutermaprGr\rsrMnormcaser+r2rre)r9Z build_platcmd_nameoutputsZroot_lenZcounterZsys_pathr+r:r:r;run(sD    z install.runcCsJtj|j|jd}|jr8|t||jgfd|n| d|dS)N.pthz creating %szpath file '%s' not created) rGr\r]r[rr2rrr^rI)r9filenamer:r:r;rTs  zinstall.create_path_filecCshg}|D].}||}|D]}||kr"||q"q |jrd|jrd|tj|j |jd|S)Nr) rget_finalized_commandrappendrr2rGr\r]r[)r9rrcmdrr:r:r;rbs    zinstall.get_outputscCs.g}|D]}||}||q |SN)rrextend get_inputs)r9Zinputsrrr:r:r;rss   zinstall.get_inputscCs|jp|jSr)rQZhas_pure_modulesZhas_ext_modulesr8r:r:r;has_libs zinstall.has_libcCs |jSr)rQ has_headersr8r:r:r;rszinstall.has_headerscCs |jSr)rQ has_scriptsr8r:r:r;rszinstall.has_scriptscCs |jSr)rQZhas_data_filesr8r:r:r;has_dataszinstall.has_datar+r*r,r-Zinstall_egg_infocCsdS)NTr:r8r:r:r;zinstall.) __name__ __module__ __qualname__Z descriptionrfZboolean_optionsrTrrrgr<r`rJrKrLror~rUrWrYrZr_rXrrrrrrrrZ sub_commandsr:r:r:r;rIsn ;  N3  " ,  r)rMrGZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrTZWINDOWS_SCHEMErvrwrr:r:r:r;s`             PK]QN''/command/__pycache__/config.cpython-38.opt-1.pycnu[U e5d=3@sldZddlZddlZddlmZddlmZddlmZddl m Z ddd Z Gd d d eZ dd d Z dS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZdddddddd d g Zd d Zd dZddZddZddZ ddZ ddZ ddZ ddZ d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddgfd,d-Zd6d.d/ZdS)7configzprepare to build)z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_filesselfr0/usr/lib64/python3.8/distutils/command/config.pyinitialize_options3szconfig.initialize_optionscCs|jdkr|jjpg|_nt|jtr6|jtj|_|jdkrHg|_nt|jtr^|jg|_|jdkrpg|_nt|jtr|jtj|_dSN) rZ distribution isinstancestrsplitospathseprrrrrrfinalize_optionsBs       zconfig.finalize_optionscCsdSrrrrrrrunRsz config.runcCszddlm}m}t|j|sv||j|jdd|_t|j|jrN|j|j|j rb|j |j |j rv|j |j dS)z^Check that 'self.compiler' really is a CCompiler object; if not, make it one. r) CCompiler new_compilerr)rdry_runZforceN) distutils.ccompilerr"r#rrr$rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr"r#rrr_check_compilerYs  zconfig._check_compilerc Csldt|}t|dL}|r>|D]}|d|q |d|||ddkr^|dW5QRX|S)NZ _configtestwz#include <%s>  )LANG_EXTopenwrite)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks     zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.ir)r3rextendrZ preprocess)rr-r.rr/srcoutrrr _preprocessws zconfig._preprocesscCs\||||}|jr"t|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':r4)r3r dump_filerZobject_filenamesrr5compile)rr-r.rr/r6objrrr_compile~szconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdk r\| |jj} |j | ||| fS)Nr)rrZ target_lang) r<rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr-r.rrrr/r6r;progrrr_links    z config._linkc GsT|s|j}g|_tdd||D](}zt|Wq&tk rLYq&Xq&dS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr0rrr_cleansz config._cleanNrcCsRddlm}|d}z|||||Wn|k rDd}YnX||S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r CompileErrorTF)r%rKr&r8rIrr-r.rr/rKokrrrtry_cpps  zconfig.try_cppc Csx||||||\}}t|tr0t|}t|.}d} |} | dkrPqb|| r>d} qbq>W5QRX| | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r&r8rrrer:r+readlinesearchrI) rpatternr-r.rr/r6r7r1matchlinerrr search_cpps     zconfig.search_cppcCsdddlm}|z|||||d}Wn|k rDd}YnXt|rRdpTd||S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. rrJTFsuccess!failure.)r%rKr&r<rrDrIrLrrr try_compiles  zconfig.try_compilec Cspddlm}m}|z|||||||d} Wn||fk rPd} YnXt| r^dp`d|| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. rrK LinkErrorTFrWrX)r%rKr[r&rBrrDrI) rr-r.rrrr/rKr[rMrrrtry_links  zconfig.try_linkc Csddlm}m}|z.|||||||\} } } || gd} Wn||tfk rdd} YnXt| rrdptd| | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. rrZTFrWrX) r%rKr[r&rBZspawnrrrDrI) rr-r.rrrr/rKr[r6r;ZexerMrrrtry_runs    zconfig.try_runrc Cst|g}|r|d||d|r<|d|n|d||dd|d}||||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r()r&r@rEr\) rfuncr.rrrZdeclZcallr-rrr check_funcs   zconfig.check_funccCs ||d|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r&r\)rZlibraryrr.rZother_librariesrrr check_lib4s  zconfig.check_libcCs|jd|g|dS)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. z /* No body */)r-r.r)rN)rr2rrr/rrr check_headerBs zconfig.check_header)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsrr r!r&r3r8r<rBrIrNrVrYr\r]r`rarbrrrrrs\         rcCsJ|dkrtd|n t|t|}zt|W5|XdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrDr+closeread)r0headr1rrrr9Ks r9)N)__doc__rrPZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr*rr9rrrrs      8PK]GX@@)command/__pycache__/upload.cpython-38.pycnu[U &.e@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZddZddZd d Z d d Z d S)uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesr cCs,t|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr0/usr/lib64/python3.8/distutils/command/upload.pyr s  zupload.initialize_optionscCsrt||jr|jstd|}|ikrV|d|_|d|_|d|_|d|_ |jsn|j jrn|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rZconfigrrrr(s      zupload.finalize_optionscCs:|jjsd}t||jjD]\}}}||||qdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc"Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } z | } W5| X|j j } d d | | tj|| f||t| d | | | | | | | | | | | | | d}zt!| }WnPt"k r}z0d|}|#|t$j%ddl&m'}|s|W5d}~XYn X||d<d|d<|jrt|dd "} tj|d| f|d<W5QRX|j(d|j)*d}dt+|,d}d}d|*d}|d}t-.}|/D]\}}d|}t0|t1sP|g}|D]j}t2|t3kr|d|d7}|d}nt4|*d }|5||5|*d |5d!|5|qTq.|5||6}d"||jf}|#|t$j%d#|t4t7||d$}t8|j||d%}zt9|}|:}|j;} Wnftk r}z|#t4|t$j?W5d}~XYnX|d&kr|#d'|| ft$j%|j@r|A|}!d(Bd)|!d)f}|#|t$j%n"d*|| f}|#|t$j?tC|dS)+NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper Z sha256_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesz#calculating md5 checksum failed: %sr) get_fips_modeZ md5_digestrZcommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"zutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s zK---------------------------------------------------------------------------zUpload failed (%s): %s)DrrAssertionErrorr rr r$openclosereadrZmetadataZget_nameZ get_versionospathbasenamehashlibZsha256Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesZmd5 ValueErrorZannouncer INFOZ_hashlibr.rrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvaluelenrrZgetcoderrcodeOSErrorZERRORrZ_read_pypi_responsejoinr)"rrr r!ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr)metar2Zdigesterr.Z user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler3ZrequestresultZstatusreasontextrrrrBs       !           zupload.upload_fileN) __name__ __module__ __qualname__r+r Z user_optionsZboolean_optionsrrr"rrrrrr s r )__doc__r:rBr-r=base64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PK]$$1command/__pycache__/build_py.cpython-38.opt-2.pycnu[U e5d&C@svddlZddlZddlZddlZddlmZddlTddlm Z m Z ddl m Z GdddeZ Gdd d e e ZdS) N)Command)*) convert_path Mixin2to3)logc@seZdZdZdddddgZddgZd diZd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1S)3build_pyz5"build" pure Python modules (copy to build directory))z build-lib=dzdirectory to "build" (copy) to)compileczcompile .py to .pyc) no-compileNz!don't compile .py files [default])z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])forcefz2forcibly build everything (ignore file timestamps)r r r cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer selfr2/usr/lib64/python3.8/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|ddd|jj|_|jj|_|jj|_i|_|jjr^|jjD]\}}t||j|<qF||_ t |j t szt |j |_ Wn t tfk rtdYnXdS)NZbuild)rr)r r zoptimize must be 0, 1, or 2)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerint ValueErrorAssertionErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s$      zbuild_py.finalize_optionscCs:|jr||jr$||||jdddSNr)include_bytecode)r build_modulesrbuild_packagesbuild_package_data byte_compile get_outputsrrrrrunCs z build_py.runcsg}|js|S|jD]h}||}tjj|jg|d}d|rPt|dfdd|||D}| ||||fq|S)N.rcsg|]}|dqSNr).0fileZplenrr ssz+build_py.get_data_files..) rget_package_dirosr$joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesrr3rras     zbuild_py.get_data_filescsd|jdg|j|g}g|D]:}ttjt|t|}fdd|Dq$S)Ncs$g|]}|krtj|r|qSr)r6r$isfile)r1fnfilesrrr4s z,build_py.find_data_files..) rgetglobr6r$r7escaperextend)rrr=ZglobspatternZfilelistrrCrr:ys  zbuild_py.find_data_filescCs`d}|jD]P\}}}}|D]>}tj||}|tj||jtj|||ddqq dS)NFZ preserve_mode)rr6r$r7mkpathdirname copy_file)rZlastdirrr=r>r?filenametargetrrrr*szbuild_py.build_package_datacCs|d}|js&|r tjj|SdSng}|rz|jd|}Wn*tk rl|d|d|d=Yq*X|d|tjj|Sq*|jd}|dk r|d||rtjj|SdSdS)Nr.r@r)r8rr6r$r7KeyErrorinsertrE)rrr$tailZpdirrrrr5s(       zbuild_py.get_package_dircCsj|dkr8tj|s td|tj|s8td||rftj|d}tj|rZ|Std|dS)Nr@z%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r6r$existsZDistutilsFileErrorisdirr7rArwarn)rrrinit_pyrrr check_packages&   zbuild_py.check_packagecCs&tj|std||dSdSdS)Nz!file %s (for module %s) not foundFT)r6r$rArrV)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|||ttjt|d}g}tj|jj}|D]P}tj|}||krtj tj |d}| |||fq>| d|q>|S)Nz*.pyrz excluding %s) rXrFr6r$r7rGabspathrZ script_namesplitextbasenamer;Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_frYrrrfind_package_moduless  zbuild_py.find_package_modulesc Csi}g}|jD]}|d}d|dd}|d}z||\}}Wn"tk rh||}d}YnX|s|||} |df||<| r||d| ftj||d} | || sq|||| fq|S)Nr.rrPr/__init__.py) rr8r7rQr5rXr;r6r$r[) rrr_rYr$rZ module_basercheckedrWrZrrr find_moduless*       zbuild_py.find_modulescCsNg}|jr|||jrJ|jD]$}||}|||}||q$|Sr0)rrHrdrr5r`)rr_rrmrrrfind_all_moduless    zbuild_py.find_all_modulescCsdd|DS)NcSsg|] }|dqS)rPr)r1rYrrrr4-sz-build_py.get_source_files..)rfrrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nrb)listr6r$r7)rr>rrYZ outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler/cCs|}g}|D]p\}}}|d}||j||}|||r|jr^|tjj|dd|j dkr|tjj||j dq|dd|j D7}|S)Nr.r@) optimizationrcSs,g|]$\}}}}|D]}tj||qqSr)r6r$r7)r1rr=r>r?rNrrrr4Bs z(build_py.get_outputs..) rfr8rirr;r importlibutilcache_from_sourcerr)rr'r_ZoutputsrrYrZrNrrrr,3s*      zbuild_py.get_outputscCsbt|tr|d}nt|ttfs,td||j||}tj |}| ||j ||ddS)Nr.z:'package' must be a string (dot-separated), list, or tuplerrJ) rstrr8rhtuple TypeErrorrirr6r$rLrKrM)rrYrZrZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs*|}|D]\}}}||||q dSr0)rdrr)rr_rrYrZrrrr(Yszbuild_py.build_modulescCsD|jD]8}||}|||}|D]\}}}||||q$qdSr0)rr5r`rr)rrrr_Zpackage_rYrZrrrr)bs   zbuild_py.build_packagescCstjr|ddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r+rP)rr prefixdry_run) sysdont_write_bytecoderVdistutils.utilr+rr6sepr r rtr)rrDr+rsrrrr+vs&    zbuild_py.byte_compileN)r/)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr%r-rr:r*r5rXr[r`rdrfrgrir,rrr(r)r+rrrrrs8    '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr||jr*||||j||jdddSr&) updated_filesrr(rr)r*Zrun_2to3r+r,rrrrr-s zbuild_py_2to3.runcCs,t||||}|dr(|j|d|S)Nr/r)rrrr}r;)rrYrZrresrrrrrszbuild_py_2to3.build_moduleN)ryrzr{r-rrrrrrr|sr|)r6importlib.utilrkrurFZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr|rrrrs  }PK]W55*command/__pycache__/install.cpython-38.pycnu[U &.ej@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZmZdd lmZdd l mZdd lmZdd lmZdZddddddZddddddddddddedZerdddddded <ddd!d"dded#<dZGd$d%d%eZdS)&zFdistutils.command.install Implements the Distutils 'install' command.N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@s:eZdZdZdddddddd d d d d ddddddgZdddgZer`edddefedddiZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEefdFefdGefdHefdIdJdKfgZdS)Linstallz'install everything from build directory)zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nzr)r%r&r+r(r)r*r,r-r r r.r select_schemer$r"r#hasattrrM base_prefixrGenvironr\normpath)r9Zadditionr:r:r;rKsZ          zinstall.finalize_unixcCs|jr8|jdkrtd|j|_|_|tjdn|jdk r\|j|_|_|dn\|j dkrvtj t j |_ |j |_|_z|tjWn"t k rtdtjYnXdS)z)Finalizes options for non-posix platformsNrmZ_userrz)I don't know how to install stuff on '%s')r r.rr%r&rorGrHr$r"r\rsrMKeyErrorr8r:r:r;rLs&    zinstall.finalize_othercCs<t|}tD]*}d|}t||dkr t||||q dS)z=Sets the install directories by applying the install schemes.install_N)INSTALL_SCHEMES SCHEME_KEYSrisetattr)r9rHZschemekeyattrnamer:r:r;ros zinstall.select_schemecCsX|D]N}t||}|dk rtjdks.tjdkr:tj|}t||j}t|||qdS)Nr=r)rirGrHr\ expanduserr rSrx)r9attrsattrrlr:r:r; _expand_attrss   zinstall._expand_attrscCs|dddgdS)zNCalls `os.path.expanduser` on install_base, install_platbase and root.r%r&r'Nr~r8r:r:r;rUszinstall.expand_basedirscCs|ddddddgdS)z+Calls `os.path.expanduser` on install dirs.r(r)r+r*r,r-Nrr8r:r:r;rWs zinstall.expand_dirscGs,|D]"}d|}t||tt||qdS)z!Call `convert_path` over `names`.ruN)rxrrir9namesrHr}r:r:r;rYszinstall.convert_pathscCs|jdkr|jj|_|jdk rtdt|jtrB|jd|_t|jdkr`|jd}}n"t|jdkrz|j\}}ntdt |}nd}d}||_ ||_ dS) z4Set `path_file` and `extra_dirs` using `extra_path`.NzIDistribution option extra_path is deprecated. See issue27919 for details.,r!rr?zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsr>) r1rQrrI isinstancestrrOlenr r path_filer^)r9rr^r:r:r;rZs(      zinstall.handle_extra_pathc Gs0|D]&}d|}t||t|jt||qdS)z:Change the install directories pointed by name using root.ruN)rxr r'rirr:r:r;r_szinstall.change_rootscCsb|js dSttjd}|jD]8\}}||r$tj|s$| d|t |dq$dS)zCreate directories under ~.N~zos.makedirs('%s', 0o700)i) r rrGr\r{rSitems startswithisdirZ debug_printmakedirs)r9r$rHr\r:r:r;rXszinstall.create_home_pathcCs"|js6|d|jdj}|jr6|tkr6td|D]}||q>|j r\| |j r| }|j rt|j }tt|D]}|||d||<q|t|j |fd|j ttjjtj}ttjj|}tjtj|j}|jr|j r|js||krtd|jdS)zRuns the command.rFz"Can't install when cross-compilingNz'writing list of installed files to '%s'zmodules installed to '%s', which is not in Python's module search path (sys.path) -- you'll have to change the search path yourself)r3Z run_commandrQZget_command_objZ plat_namer4r rget_sub_commandsrcreate_path_filer7 get_outputsr'rrangeexecutermaprGr\rsrMnormcaser+r2rre)r9Z build_platcmd_nameoutputsZroot_lenZcounterZsys_pathr+r:r:r;run(sD    z install.runcCsJtj|j|jd}|jr8|t||jgfd|n| d|dS)zCreates the .pth file.pthz creating %szpath file '%s' not createdN) rGr\r]r[rr2rrr^rI)r9filenamer:r:r;rTs  zinstall.create_path_filecCshg}|D].}||}|D]}||kr"||q"q |jrd|jrd|tj|j |jd|S)z.Assembles the outputs of all the sub-commands.r) rget_finalized_commandrappendrr2rGr\r]r[)r9rrcmdrr:r:r;rbs    zinstall.get_outputscCs.g}|D]}||}||q |S)z*Returns the inputs of all the sub-commands)rrextend get_inputs)r9Zinputsrrr:r:r;rss   zinstall.get_inputscCs|jp|jS)zSReturns true if the current distribution has any Python modules to install.)rQZhas_pure_modulesZhas_ext_modulesr8r:r:r;has_libs zinstall.has_libcCs |jS)zLReturns true if the current distribution has any headers to install.)rQ has_headersr8r:r:r;rszinstall.has_headerscCs |jS)zMReturns true if the current distribution has any scripts to. install.)rQ has_scriptsr8r:r:r;rszinstall.has_scriptscCs |jS)zJReturns true if the current distribution has any data to. install.)rQZhas_data_filesr8r:r:r;has_dataszinstall.has_datar+r*r,r-Zinstall_egg_infocCsdS)NTr:r8r:r:r;zinstall.) __name__ __module__ __qualname__Z descriptionrfZboolean_optionsrTrrrgr<r`rJrKrLror~rUrWrYrZr_rXrrrrrrrrZ sub_commandsr:r:r:r;rIsn ;  N3  " ,  r)__doc__rMrGZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrTZWINDOWS_SCHEMErvrwrr:r:r:r;sb             PK]Y/command/__pycache__/config.cpython-38.opt-2.pycnu[U e5d=3@shddlZddlZddlmZddlmZddlmZddlm Z dddZ Gd d d eZ d d d Z dS)N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZdddddddd d g Zd d Zd dZddZddZddZ ddZ ddZ ddZ ddZ d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddgfd,d-Zd6d.d/ZdS)7configzprepare to build)z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_filesselfr0/usr/lib64/python3.8/distutils/command/config.pyinitialize_options3szconfig.initialize_optionscCs|jdkr|jjpg|_nt|jtr6|jtj|_|jdkrHg|_nt|jtr^|jg|_|jdkrpg|_nt|jtr|jtj|_dSN) rZ distribution isinstancestrsplitospathseprrrrrrfinalize_optionsBs       zconfig.finalize_optionscCsdSrrrrrrrunRsz config.runcCszddlm}m}t|j|sv||j|jdd|_t|j|jrN|j|j|j rb|j |j |j rv|j |j dS)Nr) CCompiler new_compilerr)rdry_runZforce) distutils.ccompilerr"r#rrr$rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr"r#rrr_check_compilerYs  zconfig._check_compilerc Csldt|}t|dL}|r>|D]}|d|q |d|||ddkr^|dW5QRX|S)NZ _configtestwz#include <%s>  )LANG_EXTopenwrite)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks     zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.ir)r3rextendrZ preprocess)rr-r.rr/srcoutrrr _preprocessws zconfig._preprocesscCs\||||}|jr"t|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':r4)r3r dump_filerZobject_filenamesrr5compile)rr-r.rr/r6objrrr_compile~szconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdk r\| |jj} |j | ||| fS)Nr)rrZ target_lang) r<rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr-r.rrrr/r6r;progrrr_links    z config._linkc GsT|s|j}g|_tdd||D](}zt|Wq&tk rLYq&Xq&dS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr0rrr_cleansz config._cleanNrcCsRddlm}|d}z|||||Wn|k rDd}YnX||S)Nr CompileErrorTF)r%rKr&r8rIrr-r.rr/rKokrrrtry_cpps  zconfig.try_cppc Csx||||||\}}t|tr0t|}t|.}d} |} | dkrPqb|| r>d} qbq>W5QRX| | S)NFT) r&r8rrrer:r+readlinesearchrI) rpatternr-r.rr/r6r7r1matchlinerrr search_cpps     zconfig.search_cppcCsdddlm}|z|||||d}Wn|k rDd}YnXt|rRdpTd||S)NrrJTFsuccess!failure.)r%rKr&r<rrDrIrLrrr try_compiles  zconfig.try_compilec Cspddlm}m}|z|||||||d} Wn||fk rPd} YnXt| r^dp`d|| SNr)rK LinkErrorTFrWrX)r%rKr[r&rBrrDrI) rr-r.rrrr/rKr[rMrrrtry_links  zconfig.try_linkc Csddlm}m}|z.|||||||\} } } || gd} Wn||tfk rdd} YnXt| rrdptd| | SrZ) r%rKr[r&rBZspawnrrrDrI) rr-r.rrrr/rKr[r6r;ZexerMrrrtry_runs    zconfig.try_runrc Cst|g}|r|d||d|r<|d|n|d||dd|d}||||||S)Nz int %s ();z int main () {z %s();z %s;}r()r&r@rEr\) rfuncr.rrrZdeclZcallr-rrr check_funcs   zconfig.check_funccCs ||d|||g||S)Nzint main (void) { })r&r\)rZlibraryrr.rZother_librariesrrr check_lib4s  zconfig.check_libcCs|jd|g|dS)Nz /* No body */)r-r.r)rN)rr2rrr/rrr check_headerBs zconfig.check_header)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsrr r!r&r3r8r<rBrIrNrVrYr\r]r`rarbrrrrrs\         rcCsJ|dkrtd|n t|t|}zt|W5|XdS)Nz%s)rrDr+closeread)r0headr1rrrr9Ks r9)N) rrPZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr*rr9rrrr s     8PK]˄66(command/__pycache__/clean.cpython-38.pycnu[U e5d @sDdZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZd d Zd d Zd dZdS)cleanz-clean up temporary files from 'build' command)z build-base=bz2base build directory (default: 'build.build-base'))z build-lib=Nzs    PK]fgf7f72command/__pycache__/build_ext.cpython-38.opt-2.pycnu[U e5dP{@sddlZddlZddlZddlZddlmZddlTddlmZm Z ddlm Z ddl m Z ddl mZddlmZdd lmZdd lmZed Zd d ZGdddeZdS)N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nrshow_compilers)distutils.ccompilerr r r3/usr/lib64/python3.8/distutils/command/build_ext.pyr s r c@seZdZdZdejZdddddefdd d d efd d ddddefddddddddddgZddddd gZ d!d"d#e fgZ d$d%Z d&d'Z d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zejd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZd"S)H build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z build-lib=bz(directory for compiled extension modules)z build-temp=tz1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s))inplaceiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link withz library-dirs=Lz.directories to search for external C libraries)zrpath=Rz7directories to search for shared C libraries at runtime)z link-objects=Oz2extra explicit link objects to include in the link)debuggz'compile/link with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)swig-cppNz)make SWIG create C++ files (default is C))z swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)userNz#add user include, library and rpathrrr r$r%z help-compilerNzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsrr compilerswigswig_cpp swig_optsr%parallelselfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|ddddddd d |jdkr8|jj|_|jj|_|}|jd d }|j dkrn|jj pjg|_ t |j t r|j t j|_ tjtjkr|j t jtjd |j | t jj||kr|j | t jj|d|d|jdkrg|_|jdkrg|_nt |jt r:|j t j|_|jdkrNg|_nt |jt rl|j t j|_t jdkrh|jt jtjdtjtjkr|jt jtjd|jrt j|jd|_nt j|jd|_|j t jtt tdd}|r|j||j!dkr*d}n|j!dd}t jtjd}|r\t j||}|j|tj"dddkrtj#$t jtjdr|jt jtjddt%dn |jd|&dr|j's|j|&d n |jd|j(r|j( d!}d"d#|D|_(|j)r4|j) d!|_)|j*dkrHg|_*n|j* d$|_*|j+rt jt,d }t jt,d} t j-|r|j |t j-| r|j| |j| t |j.t rzt/|j.|_.Wnt0k rt1d%YnXdS)&Nr) sysconfigZbuild)r'r')r)r))r2r2)rr)r r )r6r6)r(r()Z plat_specificZincluder.r1ntZlibsZDebugZRelease_homewin32ZPCbuildcygwinbinlibpythonZconfig.Py_ENABLE_SHAREDZLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)2 distutilsr:Zset_undefined_optionsr* distributionZ ext_packageZ ext_modulesr&Zget_python_incr+ isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinextendZensure_string_listr.r/r0nameprefixrr)dirnamergetattrr(platform executable startswithrget_config_varZ python_buildr,r-r5r%r isdirr6int ValueErrorZDistutilsOptionError) r8r:Z py_includeZplat_py_includeZ _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                           zbuild_ext.finalize_optionscCsjddlm}|jsdS|jrL|d}|j|p:g|j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j |j|jdk r|j |j|jdk r|jD]\}}|j ||q|jdk r|jD]}|j |q|jdk r|j |j|j dk r*|j |j |jdk rD|j |j|j dk r^|j !|j |"dS)Nr) new_compiler build_clib)r2verbosedry_runr r<)#rrgr&rMZhas_c_librariesget_finalized_commandr.rYZget_library_namesr/rVrhr2rirjr rrQrZr(r Z initializer+Zset_include_dirsr,Z define_macror-Zundefine_macroZ set_librariesZset_library_dirsr0Zset_runtime_library_dirsr1Zset_link_objectsbuild_extensions)r8rgrhrZvaluemacrorrrruns@            z build_ext.runc Csvt|tstdt|D]T\}}t|tr0qt|trFt|dkrNtd|\}}td|t|t rvt |s~tdt|t stdt||d}dD]"}| |}|dk rt|||q| d |_d |krtd | d }|rhg|_g|_|D]b} t| tr"t| d ks*tdt| dkrJ|j| dnt| dkr|j| q|||<qdS)Nz:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sources)r+r/r. extra_objectsextra_compile_argsextra_link_argsr0Zdef_filez9'def_file' element of build info dict no longer supportedmacros)r;rpz9'macros' element of build info dict must be 1- or 2-tupler;r)rNlistDistutilsSetupError enumeratertuplelenr warnrOextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrV) r8r&rextext_nameZ build_infokeyvalrurnrrrcheck_extensions_listVs^        zbuild_ext.check_extensions_listcCs,||jg}|jD]}||jq|SN)rr&rYrq)r8 filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs2||jg}|jD]}|||jq|Sr)rr&rVget_ext_fullpathrZ)r8Zoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(||j|jr|n|dSr)rr&r6_build_extensions_parallel_build_extensions_serialr7rrrrls  zbuild_ext.build_extensionsc sj}jdkrt}zddlm}Wntk r@d}YnX|dkrVdS||dPfddjD}tj|D]&\}} || W5QRXqW5QRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}j|qSr)Zsubmitbuild_extension)rIrZexecutorr8rrrJsz8build_ext._build_extensions_parallel..) r6rQ cpu_countZconcurrent.futuresr ImportErrorrr&zip_filter_build_errorsresult)r8ZworkersrZfuturesrZfutrrrrs"     z$build_ext._build_extensions_parallelc Cs0|jD]$}||||W5QRXqdSr)r&rr)r8rrrrrs  z"build_ext._build_extensions_serialc csTz dVWnDtttfk rN}z |js*|d|j|fW5d}~XYnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalr{rZ)r8rerrrrs zbuild_ext._filter_build_errorsc CsP|j}|dkst|ttfs*td|jt|}||j}||j}|jslt ||dslt d|jdSt d|j| ||}|jpg}|jdd}|jD]}||fq|jj||j||j|j ||jd}|dd|_|jr||j|jpg}|jp|j|} |jj|||||j|j|| ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrur+rextra_postargsdepends)r.r/rrexport_symbolsrr)Z target_lang)!rqrNrvryrwrZrrr rr rinfo swig_sourcesrsrrrVr2compiler)r+Z_built_objectsrrrYrtlanguageZdetect_languageZlink_shared_object get_librariesr/rget_export_symbols) r8rrqext_pathrZ extra_argsrur-ZobjectsrrrrrsX        zbuild_ext.build_extensioncCs$g}g}i}|jrtd|js6d|jks6d|jkrI don't know how to find (much less run) SWIG on platform '%s')rQrZrWrXisfileZDistutilsPlatformError)r8Zversfnrrrrgs    zbuild_ext.find_swigcCs||}|d}||d}|jsRtjj|dd|g}tj|j|Sd|dd}|d}tj | |}tj||S)NrErrbuild_py) get_ext_fullnamerPget_ext_filenamerrQrWrXr'rkabspathZget_package_dir)r8rfullnamemodpathfilenamer*rZ package_dirrrrrs   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)NrE)r*)r8rrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|d}|d}tjj||S)NrrarEZ EXT_SUFFIX)distutils.sysconfigrarPrQrWrX)r8rrarZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCsxd|jdd}z|dWn0tk rRd|dddd}YnXd |}||jkrr|j||jS) N_rErasciirZpunycode-_ZPyInit)rZrPencodeUnicodeEncodeErrorreplacedecoderrV)r8rreZ initfunc_namerrrrs"  zbuild_ext.get_export_symbolscCstjdkr^ddlm}t|j|sd}|jr4|d}|tjd?tjd?d@f}|j|gSndd l m }d }|d rt td rd }nr) MSVCCompilerz python%d%dZ_drFrFZgetandroidapilevelTrAZ_PYTHON_HOST_PLATFORMZANDROID_API_LEVELZMACHDEPZ LDVERSIONrD)rSr^Zdistutils._msvccompilerrrNr2r hexversionr.rrahasattrrQenviron)r8rrtemplateZ pythonlibraZlink_libpythonZ ldversionrrrrs4         zbuild_ext.get_libraries) __name__ __module__ __qualname__Z descriptionrQrRZsep_byr Z user_optionsZboolean_optionsr Z help_optionsr9rfrorrrrlrr contextlibcontextmanagerrrrrrrrrrrrrrr!sp +@N  K6  r)rrQrerSZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rLr Zsiter rr|r rrrrrs"       PK]g[a&.command/__pycache__/install_lib.cpython-38.pycnu[U e5d @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default]) no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]) skip-buildNzskip the build stepsrr r r cCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_buildselfr5/usr/lib64/python3.8/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtszt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr)rr)rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorrrrrrfinalize_options<s&     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dSN)buildr distributionhas_pure_modules byte_compilerZoutfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddS)Nbuild_py build_ext)rr"r#Z run_commandhas_ext_modulesrrrrr!fs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarnr%rrrrmszinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r$r)rrprefixdry_run)rrr.verboser/) sysdont_write_bytecoder-Zdistutils.utilr$get_finalized_commandrootr rr/rr0)rfilesr$Z install_rootrrrr$vs$    zinstall_lib.byte_compilec Csd|sgS||}|}t||}t|ttj}g}|D] } |tj|| |dq>|Sr ) r3 get_outputsgetattrlenr*sepappendr+join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss  zinstall_lib._mutate_outputscCsrg}|D]d}tjtj|d}|tkr.q|jrJ|tjj |dd|j dkr|tjj ||j dq|S)Nr) optimizationr) r*r+splitextnormcasePYTHON_SOURCE_EXTENSIONr r: importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r'rr()r>r"r#rr rGr))rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr6s    zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r'r()r"r#r3extendr6r))rZinputsr'r(rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrr&r!rr$r>rGr6rIrrrrrs*   r) __doc__r*importlib.utilrDr1Zdistutils.corerZdistutils.errorsrrCrrrrrs  PK]Z3command/__pycache__/build_clib.cpython-38.opt-2.pycnu[U e5dV@sPddlZddlmZddlTddlmZddlmZddZGdd d eZ dS) N)Command)*)customize_compiler)logcCsddlm}|dS)Nrshow_compilers)distutils.ccompilerrrr 4/usr/lib64/python3.8/distutils/command/build_clib.pyrs rc@sleZdZdZdddddgZddgZd d d efgZd d ZddZ ddZ ddZ ddZ ddZ ddZd S) build_clibz/build C/C++ libraries used by Python extensions)z build-clib=bz%directory to build C/C++ libraries to)z build-temp=tz,directory to put temporary build by-products)debuggz"compile with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler typerrz help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompilerselfr r r initialize_options4szbuild_clib.initialize_optionscCsh|dddddd|jj|_|jr0||j|jdkrH|jjpDg|_t|jtrd|jtj |_dS)NZbuild)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathseprr r r finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|j|j|j dk rv|j D]\}}|j ||q^|j dk r|j D]}|j |q| |jdS)Nr) new_compiler)rdry_runr)rrr#rr$rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)rr#namevalueZmacror r r run^s"      zbuild_clib.runcCst|tstd|D]z}t|ts8t|dkr8td|\}}t|tsRtdd|ksntjdkr~tj|kr~td|dt|tstdqdS) Nz+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)) rlistDistutilsSetupErrortuplelenrr sepdict)rrlibr& build_infor r r rvs,   zbuild_clib.check_library_listcCs,|js dSg}|jD]\}}||q|S)N)rappend)rZ lib_nameslib_namer2r r r get_library_namess  zbuild_clib.get_library_namescCsZ||jg}|jD]>\}}|d}|dks>t|ttfsJtd|||q|S)Nsourcesfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)rrgetrr+r-r,extend)r filenamesr4r2r6r r r get_source_filess   zbuild_clib.get_source_filescCs|D]\}}|d}|dks,t|ttfs8td|t|}td||d}|d}|jj||j |||j d}|jj |||j |j dqdS)Nr6r7zbuilding '%s' librarymacrosr) output_dirr<rr)r=r) r8rr+r-r,rinforcompilerrZcreate_static_libr )rrr4r2r6r<rZobjectsr r r r%s,      zbuild_clib.build_libraries)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsrr"r(rr5r;r%r r r r r s( $ r ) r Zdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr r r r r s    PK]ώ\\6command/__pycache__/build_scripts.cpython-38.opt-2.pycnu[U e5dX@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z m Z ddlm Z ddlZedZGd d d eZGd d d ee ZdS) N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=dzdirectory to "build" (copy) to)forcefz1forcibly build everything (ignore file timestamps)z executable=ez*specify final destination interpreter pathr cCs"d|_d|_d|_d|_d|_dSN) build_dirscriptsr executableoutfilesselfr7/usr/lib64/python3.8/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|dddd|jj|_dS)NZbuild)r r)r r )rr)Zset_undefined_optionsZ distributionrrrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jSr)rrrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|dSr)r copy_scriptsrrrrrun/szbuild_scripts.runc Cs||jg}g}|jD]}d}t|}tj|jtj|}|||j slt ||slt d|qzt |d}Wn tk r|jsd}YnXXt|j\}}|d|} | s|d|qt| } | rd}| dpd} |rt d ||j|||jstjs*|j} n(tjtd d td td f} t| } d| | d} z| dWn$tk rt d!| YnXz| |Wn&tk rt d!| |YnXt |d}|"| |#|$W5QRX|r8|%q|r"|%|||&||qtj'dkr|D]`}|jrdt d|nDt(|t)d@}|dBd@}||krJt d|||t*||qJ||fS)NFznot copying %s (up-to-date)rbrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrZget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfiler encodinglinesZ first_liner1Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                   zbuild_scripts.copy_scriptsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&t|\}}|js||||fSr)r rr*Zrun_2to3)rrr@rrrrs zbuild_scripts_2to3.copy_scriptsN)rDrErFrrrrrrGsrG)r"rer>rZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr+compiler0r rGrrrrs       PK]PB B 3command/__pycache__/bdist_dumb.cpython-38.opt-2.pycnu[U e5d1@sdddlZddlmZddlmZddlmZmZddlTddl m Z ddl m Z Gdd d eZ dS) N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZddddefdddd d d d g Zd ddgZdddZddZddZ ddZ dS) bdist_dumbz"create a "dumb" built distribution)z bdist-dir=dz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))zformat=fz>archive format to create (tar, gztar, bztar, xztar, ztar, zip)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=r z-directory to put final built distributions in) skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths (default: false))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]r rrZgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr4/usr/lib64/python3.8/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|dj}tj|d|_|jdkrfz|jtj|_Wn"t k rdt dtjYnX| dddddS)NZbdistZdumbz@don't know how to create dumb built distributions on platform %s)rr)rr)rr) rZget_finalized_command bdist_baseospathjoinrdefault_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)rr"rrr finalize_options=s"    zbdist_dumb.finalize_optionscCs(|js|d|jddd}|j|_|j|_d|_td|j|dd|j |j f}t j |j|}|js~|j}nJ|jr|j|jkrtdt|jt|jfnt j |jt|j}|j||j||j|jd }|jrt}nd }|jjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirrranyr )dry_run) rZ run_commandZreinitialize_commandrrootZwarn_dirrinfoZ distributionZ get_fullnamerr#r$r%rrZhas_ext_modulesZ install_baseZinstall_platbaser)reprrZ make_archiverrrrZ dist_filesappendrrr.)rr+Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionrrr runOsR        zbdist_dumb.runN) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr&r!r*r4rrrr r s,  r )r#Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrr s    PK]__2command/__pycache__/install_scripts.cpython-38.pycnu[U e5d@sDdZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@sLeZdZdZddddgZddgZdd Zd d Zd d ZddZ ddZ dS)install_scriptsz%install scripts (Python or otherwise))z install-dir=dzdirectory to install scripts to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files)) skip-buildNzskip the build stepsrr cCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_buildselfr9/usr/lib64/python3.8/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |dd|dddddS)NZbuild) build_scriptsr Zinstall)rr )rr)r r )Zset_undefined_optionsrrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|d||j|j|_tjdkr~|D]H}|j rLt d|q4t |t dBd@}t d||t||q4dS)Nrposixzchanging mode of %simizchanging mode of %s to %o)r Z run_commandZ copy_treer r outfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s   zinstall_scripts.runcCs |jjp gSN)Z distributionZscriptsrrrr get_inputs8szinstall_scripts.get_inputscCs |jpgSr )rrrrrr;szinstall_scripts.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrr!rrrrrrsr) __doc__rZdistutils.corerZ distutilsrrrrrrrrs    PK]5S/command/__pycache__/install_data.cpython-38.pycnu[U e5d @s<dZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) install_datazinstall data files)z install-dir=dzIbase directory for installing data files (default: installation base dir))zroot=Nzs PK]ZLiTT.command/__pycache__/bdist.cpython-38.opt-1.pycnu[U e5d@sHdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCsPddlm}g}tjD]"}|d|dtj|dfq||}|ddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr//usr/lib64/python3.8/distutils/command/bdist.py show_formats s    rc @seZdZdZddddefdddd d gZd gZd d defgZdZ dddZ dddddddddg Z ddddddd d!d"d# Z d$d%Z d&d'Zd(d)Zd S)*rz$create a built (binary) distribution)z bdist-base=bz4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s))rNz/formats for distribution (comma-separated list))z dist-dir=dz=directory to put final built distributions in [default: dist]) skip-buildNz2skip rebuilding everything (for testing/debugging))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]rz help-formatsNz$lists available distribution formats) bdist_rpmgztarzip)posixntrpmbztarxztarztartarwininstmsi)rzRPM distribution) bdist_dumbzgzip'ed tar file)r#zbzip2'ed tar file)r#zxz'ed tar file)r#zcompressed tar file)r#ztar file)Z bdist_wininstzWindows executable installer)r#zZIP file)Z bdist_msizMicrosoft Installer) rrrrrr r!rr"cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfrrrinitialize_optionsQszbdist.initialize_optionscCs|jdkr(|jrt|_n|dj|_|jdkrT|dj}tj|d|j|_| d|j dkrz|j tj g|_ Wn"t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r%r'rZget_finalized_commandr$ build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr&)r*r,rrrfinalize_optionsZs*        zbdist.finalize_optionsc Csg}|jD]>}z||j|dWq tk rFtd|Yq Xq tt|jD]h}||}||}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ | |qXdS)Nrzinvalid format '%s'r#r)r r r r2ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r)r(Z keep_tempZ run_command)r*Zcommandsr iZcmd_nameZsub_cmdrrrrunvs"    z bdist.run)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr6r0r r r+r3r8rrrrrsR   r) __doc__r-Zdistutils.corerZdistutils.errorsZdistutils.utilrrrrrrrs    PK]`* / /2command/__pycache__/bdist_rpm.cpython-38.opt-2.pycnu[U e5dIT@s|ddlZddlZddlZddlmZddlmZddlmZddl m Z ddl Tddl m Z ddlmZGd d d eZdS) N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z d9d:Z d;d<Z d=d>Z d?S)@ bdist_rpmzcreate an RPM distribution)z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package) no-autoreqNz+do not automatically calculate dependencies) keep-tempkz"don't clean up RPM build directory) no-keep-tempNz&clean up RPM build directory [default])use-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)no-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler) rpm3-modeNz"RPM 3 compatibility mode (default)) rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nz3/usr/lib64/python3.8/distutils/command/bdist_rpm.pyinitialize_optionssNzbdist_rpm.initialize_optionscCs|dd|jdkr6|js$tdtj|jd|_|jdkrX|j rPt j |_qfd|_n|j rftdtj dkr~t dtj |jr|jrtd |jsd |_|dd |dS) NZbdist)rrz)you must specify --rpm-base in RPM 2 moderpmZpython3z8--python and --fix-python are mutually exclusive optionsposixz9don't know how to create RPM distributions on platform %sz6cannot supply both '--source-only' and '--binary-only'r)rr)Zset_undefined_optionsrr9ZDistutilsOptionErrorospathjoinrrrsys executablenameZDistutilsPlatformErrorrr distributionhas_ext_modulesr8finalize_package_datar<r>r>r?finalize_optionss6        zbdist_rpm.finalize_optionscCsT|dd|dd|j|jf|d|dt|jtrxdD]&}tj |rP||jkrP|j |qP|dd |d |d |d | |j |_ |d |d|d|d|d|d|d|d|d|d|d|d|d|d|d|ddS)Nr zDevelopment/Librariesr#z%s <%s>r$r%)ZREADMEz README.txtr!1r"rr&r'r(r)r*r+r,r-r.r/r0r2r3r4r5r6r;)Z ensure_stringrIZ get_contactZget_contact_emailZensure_string_list isinstancer%listrCrDexistsappend_format_changelogr&Zensure_filename)r=Zreadmer>r>r?rKsB                        zbdist_rpm.finalize_package_datacCstrr>r?runs                            z bdist_rpm.runcCstj|jtj|S)N)rCrDrErre)r=rDr>r>r? _dist_pathszbdist_rpm._dist_pathc CsJd|jd|jddd|jd|jdddd|jg}td }d d d | D}d }d}|||}||kr| d| d|d | dddg|j r| dn | d| d|j d|jddg|js|js&| dn| d|jdD]V}t||}t|trb| d|d|fn|dk r*| d||fq*|jdkr| d |j|jr| d!|j|jr| d"d|j|jr| d#tj|j|jr| d$| dd%|jgd&|jtjtj d'f}d(|} |j!rXd)| } d*|} d+d,d-| fd.d/| fd0d1d2d3d4d5g } | D]n\} } }t|| }|s|r| dd6| g|rt"|}| |#$d W5QRXn | |q| dd7d8g|j%r$| d9d|j%|j&rF| dd:g| |j&|S);Nz %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} cSsg|]}d|qS)z %s \)rb).0rhr>r>r? sz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s ZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r1r(z&%setup -n %{name}-%{unmangled_version}Zbuildr)Zinstallr*)Zcleanr+zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr,N)Zprer-N)Zpostr.N)Zpreunr/N)Zpostunr0N%z%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rIrZZ get_versionreplacer!Zget_description subprocessZ getoutputrE splitlinesrQr]rZ get_licenser r;rJgetattrlowerrNrOZget_urlrr5r'rCrDrer:Zget_long_descriptionrrFargvr8openreadrcr%r&)r=Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultfr>r>r?r[s                       zbdist_rpm._make_spec_filecCs||s|Sg}|dD]N}|}|ddkrB|d|gq|ddkrZ||q|d|q|dsx|d=|S)Nrprrrormz )rbrcr]rQ)r=r&Z new_changelogrhr>r>r?rR1s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr@rLrKrkrlr[rRr>r>r>r?r sxm--*r )rvrFrCZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r>r>r>r?s      PK]?D.command/__pycache__/clean.cpython-38.opt-2.pycnu[U e5d @s@ddlZddlmZddlmZddlmZGdddeZdS)N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZd d Zd d Zd dZdS)cleanz-clean up temporary files from 'build' command)z build-base=bz2base build directory (default: 'build.build-base'))z build-lib=Nzs   PK]^+!+!0command/__pycache__/bdist_wininst.cpython-38.pycnu[U e5d>@sxdZddlZddlZddlZddlmZddlmZddlm Z m Z ddl Tddl m Z ddlmZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc seZdZdZddddefdddd d d d d dddg ZddddgZejdkZ fddZ ddZ ddZ ddZ ddZd'd!d"Zd#d$Zd%d&ZZS)( bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default) skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACr r rrwin32cs tj||tdtddS)Nz^bdist_wininst command is deprecated since Python 3.8, use bdist_wheel (wheel packages) instead)super__init__warningswarnDeprecationWarning)selfargskw __class__7/usr/lib64/python3.8/distutils/command/bdist_wininst.pyr?s zbdist_wininst.__init__cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)rr!r!r"initialize_optionsEsz bdist_wininst.initialize_optionscCs|dd|jdkrR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jr|jjD]}|jtj |krqqtd|jdS) Nbdist)r,r,ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specified)r)r))r$r$z(install_script '%s' not found in scripts)Zset_undefined_optionsr#r,r$ distributionZget_command_objget_finalized_command bdist_baseospathjoinr(has_ext_modulesrZDistutilsOptionErrorr-scriptsbasename)rr1r5Z short_versionscriptr!r!r"finalize_optionsUs>      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|s|jstd d tjdd }d |j |f}|d}tj|jd ||_dD],}|}|dkr|d}t|d||qtd|j |tjdtj|j d|tjd=ddlm }|} |j!} |j"| d|j d} |#| | |j$|jrt%} nd} |jj&'d| |(| ft)d| t*| |j+st,|j |j-ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz Should have already checked thisz%d.%drz.%s-%slib)ZpurelibZplatlibheadersr:datarCz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run).sysplatformr3r9Zhas_c_librariesZDistutilsPlatformErrorr,Z run_commandZreinitialize_commandr#rootZwarn_dirr$compileoptimizer(AssertionError version_infor4r6r7r8Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerE get_fullnameZ make_archive create_exer*rZ dist_filesappendget_installer_filenamedebugremover%rrH) rr?rAr(Zplat_specifierr>keyvaluerEZarchive_basenamefullnamearcnameZ pyversionr!r!r"rT{st            zbdist_wininst.runc CsZg}|jj}|d|jpdd}dd}dD]B}t||d}|r0|d|||f}|d|||fq0|d |jr|d |j|d |||d |j |d |j |j r|d|j |j r|d|j |j p|j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r2 cSs |ddS)Nr_z\n)replace)sr!r!r"escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r3metadatarWZlong_descriptiongetattr capitalizer-r&r'r(r/r+rUtime distutilsctime __version__r8) rlinesrfrRrbrdrDr+rirjZ build_infor!r!r" get_inidatas>   zbdist_wininst.get_inidataNc CsHddl}||j|}||}|d||r`t|d}|}W5QRXt|} nd} t|d} | | |r| |t |t r| d}|d}|jrt|jddd } |  d} W5QRX|| d }n|d}| ||d d t|| } | | t|d}| |W5QRXW5QRXdS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs8          zbdist_wininst.get_exe_bytes)N)__name__ __module__ __qualname__rcrZ user_optionsZboolean_optionsrIrJZ _unsupportedrr0r=rTrnrVrXrz __classcell__r!r!rr"r s>%  &Q. 7 r )__doc__r6rIrZdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrrjrr r!r!r!r"s    PK] nh8command/__pycache__/install_scripts.cpython-38.opt-2.pycnu[U e5d@s@ddlZddlmZddlmZddlmZGdddeZdS)N)Command)log)ST_MODEc@sLeZdZdZddddgZddgZdd Zd d Zd d ZddZ ddZ dS)install_scriptsz%install scripts (Python or otherwise))z install-dir=dzdirectory to install scripts to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files)) skip-buildNzskip the build stepsrr cCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_buildselfr9/usr/lib64/python3.8/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |dd|dddddS)NZbuild) build_scriptsr Zinstall)rr )rr)r r )Zset_undefined_optionsrrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|d||j|j|_tjdkr~|D]H}|j rLt d|q4t |t dBd@}t d||t||q4dS)Nrposixzchanging mode of %simizchanging mode of %s to %o)r Z run_commandZ copy_treer r outfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s   zinstall_scripts.runcCs |jjp gSN)Z distributionZscriptsrrrr get_inputs8szinstall_scripts.get_inputscCs |jpgSr )rrrrrr;szinstall_scripts.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrr!rrrrrrsr)rZdistutils.corerZ distutilsrrrrrrrrs   PK]GX@@/command/__pycache__/upload.cpython-38.opt-1.pycnu[U &.e@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZddZddZd d Z d d Z d S)uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesr cCs,t|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr0/usr/lib64/python3.8/distutils/command/upload.pyr s  zupload.initialize_optionscCsrt||jr|jstd|}|ikrV|d|_|d|_|d|_|d|_ |jsn|j jrn|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rZconfigrrrr(s      zupload.finalize_optionscCs:|jjsd}t||jjD]\}}}||||qdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc"Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } z | } W5| X|j j } d d | | tj|| f||t| d | | | | | | | | | | | | | d}zt!| }WnPt"k r}z0d|}|#|t$j%ddl&m'}|s|W5d}~XYn X||d<d|d<|jrt|dd "} tj|d| f|d<W5QRX|j(d|j)*d}dt+|,d}d}d|*d}|d}t-.}|/D]\}}d|}t0|t1sP|g}|D]j}t2|t3kr|d|d7}|d}nt4|*d }|5||5|*d |5d!|5|qTq.|5||6}d"||jf}|#|t$j%d#|t4t7||d$}t8|j||d%}zt9|}|:}|j;} Wnftk r}z|#t4|t$j?W5d}~XYnX|d&kr|#d'|| ft$j%|j@r|A|}!d(Bd)|!d)f}|#|t$j%n"d*|| f}|#|t$j?tC|dS)+NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper Z sha256_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesz#calculating md5 checksum failed: %sr) get_fips_modeZ md5_digestrZcommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"zutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s zK---------------------------------------------------------------------------zUpload failed (%s): %s)DrrAssertionErrorr rr r$openclosereadrZmetadataZget_nameZ get_versionospathbasenamehashlibZsha256Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesZmd5 ValueErrorZannouncer INFOZ_hashlibr.rrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvaluelenrrZgetcoderrcodeOSErrorZERRORrZ_read_pypi_responsejoinr)"rrr r!ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr)metar2Zdigesterr.Z user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler3ZrequestresultZstatusreasontextrrrrBs       !           zupload.upload_fileN) __name__ __module__ __qualname__r+r Z user_optionsZboolean_optionsrrr"rrrrrr s r )__doc__r:rBr-r=base64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PK]&p!!1command/__pycache__/__init__.cpython-38.opt-1.pycnu[U e5d@s2dZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr2/usr/lib64/python3.8/distutils/command/__init__.pys(PK]~LFLF2command/__pycache__/bdist_msi.cpython-38.opt-2.pycnu[U e5d߉@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGd ddeZdS)N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sBeZdZddZddZdddZdd d Zdd dZddZdS)PyDialogcOs>tj|f||jd}d|d}|dd||jddS)N$iHZ BottomLiner)r__init__hlinew)selfargskwZrulerZbmwidthr3/usr/lib64/python3.8/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|ddddddd|dS)NTitle @<z{\VerdanaBold10}%s)r )rtitlerrrr"#szPyDialog.titleBackc Cs,|r d}nd}||d|jddd|||S)Nr$8 pushbuttonrrr"nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}||d|jddd|||S)Nr%r$i0r'r(r)r*r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}||d|jddd|||S)Nr%r$r'r(r)r*r,rrrr-@sz PyDialog.nextc Cs,||t|j|d|jdddd||S)Nr'r(r)r%)r+intrr)rr.r"r-ZxposrrrxbuttonKszPyDialog.xbuttonN)r#r$)r2r$)r4r$) __name__ __module__ __qualname__rr"r1r3r-r8rrrrrs   rc@seZdZdZddddefdddd d d d d g ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(Z d)d*Z d+d,Z d-d.Z d/d0Z d1d2Zd3d4Zd5d6Zd7S)8 bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in) skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionr>r@rBrEz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|dd|jdkr2|dj}tj|d|_t}|jsN|j rN||_|jr|jg|_ |j s|j r|j|krt d|fn t|j|_ |ddd|jrt d|jr|j jD]}|jtj|krqqt d|jd|_dS) NZbdist)rLrLZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rKrK)rHrHz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsrGget_finalized_command bdist_baseospathjoinrrJ distributionhas_ext_modulesrOrLrlist all_versionsrNrMZscriptsbasenameinstall_script_key)rrRZ short_versionZscriptrrrfinalize_optionssH      zbdist_msi.finalize_optionscCsz|js|d|jddd}|j|_|j|_d|_|d}d|_d|_|j r|j }|spdt j dd}d |j |f}|d}tj|jd ||_td |j|t jdtj|jd |t jd=||j|j}||}tj|}tj|r"t||jj }|j!} | s<|j"} | sFd } |#} dt$| j%} |j}|j r~d|j |f} nd|} t&'|t(| t&)| | |_*t&+|j*t,d| fg} |j-p|j.}|r| /d|f|j0r| /d|j0f| rt1|j*d| |2|3|4|5|j*6t7|jdr^d|j pJd|f}|jj8/||j9svt:|j|j;ddS)Nbuildinstallr$)Zreinit_subcommandsr install_libz%d.%dz.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr<any)dry_run) }|d?d%d@dAd%d)dB|d7d-dCdDd-d)dE|dFd-dGdHdddI| dJdKd-dLdHdMdNdOddd |jd1dPd1d/} | d0d1|j dPd }|d?d%d@dAd%d)d|d7d-d-dDd-d)d|dFd-ddHddd| ddd-ddHdddddd |ddndd d0d9t|d||||||ddd" }|d|dd%ddtddddXd }|dd ddd-d|dd ddd-d|jd#dd d!| dd"} | dddd| j d0d9dd|d"d} | ddst|d||||||d"d"d"d=d> }|d?d-d%dAd%d)d|dFddddwddġ|ddddd-ddơ|dd&d|d&d-dd} | ddF| ddddZddRddddd } | ddˡ|jddd=d!|j dd"d=d!|d"d# ddst|d||||||ddd" }|d͡|dd%ddHdhddС|dd%ddHddddXd }|dd ddAd{d֡|dd ddAd{d١|jddd=d!| dd"} | dddd| dddd@| ddddN| dddd| dddd| dddd| dddd| dddd| d0d9dd-|d"dѡ ddsdS)Nriri,z[ProductName] Setupr%r$ rb)Z DefaultUIFontDlgFont8)Z ErrorDialogErrorDlg)Z Progress1ZInstall)Z Progress2Zinstalls)MaintenanceForm_ActionRepair) WhichUsersALLZ TextStyle)rTahoma Nr)Z DlgFontBold8rNr$)Z VerdanaBold10VerdanarNr$)Z VerdanaRed9rrrr) PrepareDlgz(Not Privileged or Windows9x or Installed) WhichUsersDlgz.Privileged and not Windows9x and not Installed)SelectFeaturesDlgz Not Installedi)MaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectedi) ProgressDlgNi ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r/r2r#Z Description1rFrPr!z[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.)r.Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryF)Zbitmaprz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnorerreiZ ErrorTextr0rNxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r(r)ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.fr(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar4Z SpawnDialogrzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogr`ZFeaturesZ SelectionTreer ZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?rZ AdminInstallzGSelect whether to install [ProductName] for all users of this computer.rrzInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"rz({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressrz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrrrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallrz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rwrr rrrr"r1r3r-ZeventZcontrolrr+mappingrVrnrOrZ conditionr8Z radiogroupadd)rrwxyrrr"ZmodalZmodelessZtrack_disk_spaceZfatalrAZ user_exitZ exit_dialogZinuseerrorr3ZcostingZprepZseldlgorderrurZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrr|sv                                                   zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rJrHrSrTrUrK)rrZ base_namerrrrrosz bdist_msi.get_installer_filenameN)r9r:r;Z descriptionrZ user_optionsZboolean_optionsrYrrPr\rmrzryr{r|rorrrrr<Ss^  ([66&@r<)rirSZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrvr r r r r rrrr<rrrr s       >PK]/~00,command/__pycache__/bdist_rpm.cpython-38.pycnu[U e5dIT@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z d9d:Z d;d<Z d=d>Z d?S)@ bdist_rpmzcreate an RPM distribution)z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package) no-autoreqNz+do not automatically calculate dependencies) keep-tempkz"don't clean up RPM build directory) no-keep-tempNz&clean up RPM build directory [default])use-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)no-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler) rpm3-modeNz"RPM 3 compatibility mode (default)) rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nz3/usr/lib64/python3.8/distutils/command/bdist_rpm.pyinitialize_optionssNzbdist_rpm.initialize_optionscCs|dd|jdkr6|js$tdtj|jd|_|jdkrX|j rPt j |_qfd|_n|j rftdtj dkr~t dtj |jr|jrtd |jsd |_|dd |dS) NZbdist)rrz)you must specify --rpm-base in RPM 2 moderpmZpython3z8--python and --fix-python are mutually exclusive optionsposixz9don't know how to create RPM distributions on platform %sz6cannot supply both '--source-only' and '--binary-only'r)rr)Zset_undefined_optionsrr9ZDistutilsOptionErrorospathjoinrrrsys executablenameZDistutilsPlatformErrorrr distributionhas_ext_modulesr8finalize_package_datar<r>r>r?finalize_optionss6        zbdist_rpm.finalize_optionscCsT|dd|dd|j|jf|d|dt|jtrxdD]&}tj |rP||jkrP|j |qP|dd |d |d |d | |j |_ |d |d|d|d|d|d|d|d|d|d|d|d|d|d|d|ddS)Nr zDevelopment/Librariesr#z%s <%s>r$r%)ZREADMEz README.txtr!1r"rr&r'r(r)r*r+r,r-r.r/r0r2r3r4r5r6r;)Z ensure_stringrIZ get_contactZget_contact_emailZensure_string_list isinstancer%listrCrDexistsappend_format_changelogr&Zensure_filename)r=Zreadmer>r>r?rKsB                        zbdist_rpm.finalize_package_datacCstrr>r?runs                            z bdist_rpm.runcCstj|jtj|S)N)rCrDrErrh)r=rDr>r>r? _dist_pathszbdist_rpm._dist_pathc CsJd|jd|jddd|jd|jdddd|jg}td }d d d | D}d }d}|||}||kr| d| d|d | dddg|j r| dn | d| d|j d|jddg|js|js&| dn| d|jdD]V}t||}t|trb| d|d|fn|dk r*| d||fq*|jd kr| d!|j|jr| d"|j|jr| d#d|j|jr| d$tj|j|jr| d%| dd&|jgd'|jtjtj d(f}d)|} |j!rXd*| } d+|} d,d-d.| fd/d0| fd1d2d3d4d5d6g } | D]n\} } }t|| }|s|r| dd7| g|rt"|}| |#$d W5QRXn | |q| dd8d9g|j%r$| d:d|j%|j&rF| dd;g| |j&|S)r>r? sz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r1r(z&%setup -n %{name}-%{unmangled_version}Zbuildr)Zinstallr*)Zcleanr+zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr,N)Zprer-N)Zpostr.N)Zpreunr/N)Zpostunr0N%z%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rIr[Z get_versionreplacer!Zget_description subprocessZ getoutputrE splitlinesrQr^rZ get_licenser r;rJgetattrlowerrNrOZget_urlrr5r'rCrDrhr:Zget_long_descriptionrrFargvr8openreadrdr%r&)r=Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultfr>r>r?r\s                       zbdist_rpm._make_spec_filecCs||s|Sg}|dD]N}|}|ddkrB|d|gq|ddkrZ||q|d|q|dsx|d=|S)zKFormat the changelog correctly and convert it to a list of strings rsrrrrrpz )rcrdr^rQ)r=r&Z new_changelogrkr>r>r?rR1s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr@rLrKrnror\rRr>r>r>r?r sxm--*r )__doc__ryrFrCZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r>r>r>r?s      PK].command/__pycache__/build.cpython-38.opt-2.pycnu[U e5d@sPddlZddlZddlmZddlmZddlmZddZGdddeZ dS) N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nrshow_compilers)Zdistutils.ccompilerrrr//usr/lib64/python3.8/distutils/command/build.pyr s rc @seZdZdZdddddddd d efd d d ddg ZddgZdddefgZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#e fd$e fd%efd&efgZdS)'buildz"build everything needed to install)z build-base=bz base directory for build library)zbuild-purelib=Nz2build directory for platform-neutral distributions)zbuild-platlib=Nz3build directory for platform-specific distributions)z build-lib=NzWbuild directory for all distribution (defaults to either build-purelib or build-platlib)zbuild-scripts=Nzbuild directory for scripts)z build-temp=tztemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)debuggz;compile extensions and libraries with debugging information)forcefz2forcibly build everything (ignore file timestamps))z executable=ez5specify final destination interpreter path (build.py)rrz help-compilerNzlist available compilerscCsLd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nr r) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallelselfrrrinitialize_options8szbuild.initialize_optionscCsb|jdkrt|_ntjdkr&tdd|jftjdd}ttdrR|d7}|jdkrntj |j d|_|j dkrtj |j d||_ |j dkr|jjr|j |_ n|j|_ |jdkrtj |j d||_|jdkrtj |j d tjdd|_|jdkr tjr tj tj|_t|jtr^zt|j|_Wntk r\td YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z .%s-%d.%dZgettotalrefcountz-pydebuglibZtempz scripts-%d.%dzparallel should be an integer)rrosnamersys version_infohasattrrpathjoinrrr distributionZ ext_modulesrrrnormpath isinstancerstrint ValueError)rZplat_specifierrrrfinalize_optionsHsD             zbuild.finalize_optionscCs|D]}||qdSN)Zget_sub_commandsZ run_command)rZcmd_namerrrruns z build.runcCs |jSr1)r*has_pure_modulesrrrrr3szbuild.has_pure_modulescCs |jSr1)r*has_c_librariesrrrrr4szbuild.has_c_librariescCs |jSr1)r*has_ext_modulesrrrrr5szbuild.has_ext_modulescCs |jSr1)r* has_scriptsrrrrr6szbuild.has_scriptsZbuild_pyZ build_clibZ build_extr)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrr0r2r3r4r5r6Z sub_commandsrrrrr sH8 r ) r%r#Zdistutils.corerZdistutils.errorsrZdistutils.utilrrr rrrrs    PK])"3command/__pycache__/build_clib.cpython-38.opt-1.pycnu[U e5dV@sTdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nrshow_compilers)distutils.ccompilerrrr 4/usr/lib64/python3.8/distutils/command/build_clib.pyrs rc@sleZdZdZdddddgZddgZd d d efgZd d ZddZ ddZ ddZ ddZ ddZ ddZd S) build_clibz/build C/C++ libraries used by Python extensions)z build-clib=bz%directory to build C/C++ libraries to)z build-temp=tz,directory to put temporary build by-products)debuggz"compile with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler typerrz help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompilerselfr r r initialize_options4szbuild_clib.initialize_optionscCsh|dddddd|jj|_|jr0||j|jdkrH|jjpDg|_t|jtrd|jtj |_dS)NZbuild)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathseprr r r finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|j|j|j dk rv|j D]\}}|j ||q^|j dk r|j D]}|j |q| |jdS)Nr) new_compiler)rdry_runr)rrr#rr$rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)rr#namevalueZmacror r r run^s"      zbuild_clib.runcCst|tstd|D]z}t|ts8t|dkr8td|\}}t|tsRtdd|ksntjdkr~tj|kr~td|dt|tstdqd S) a`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) rlistDistutilsSetupErrortuplelenrr sepdict)rrlibr& build_infor r r rvs,   zbuild_clib.check_library_listcCs,|js dSg}|jD]\}}||q|S)N)rappend)rZ lib_nameslib_namer2r r r get_library_namess  zbuild_clib.get_library_namescCsZ||jg}|jD]>\}}|d}|dks>t|ttfsJtd|||q|S)Nsourcesfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)rrgetrr+r-r,extend)r filenamesr4r2r6r r r get_source_filess   zbuild_clib.get_source_filescCs|D]\}}|d}|dks,t|ttfs8td|t|}td||d}|d}|jj||j |||j d}|jj |||j |j dqdS)Nr6r7zbuilding '%s' librarymacrosr) output_dirr<rr)r=r) r8rr+r-r,rinforcompilerrZcreate_static_libr )rrr4r2r6r<rZobjectsr r r r%s,      zbuild_clib.build_libraries)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsrr"r(rr5r;r%r r r r r s( $ r ) __doc__r Zdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr r r r r s   PK]bb5command/__pycache__/install_data.cpython-38.opt-2.pycnu[U e5d @s8ddlZddlmZddlmZmZGdddeZdS)N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) install_datazinstall data files)z install-dir=dzIbase directory for installing data files (default: installation base dir))zroot=Nzs PK]}Q ++(command/__pycache__/build.cpython-38.pycnu[U e5d@sTdZddlZddlZddlmZddlmZddlmZddZ Gdd d eZ dS) zBdistutils.command.build Implements the Distutils 'build' command.N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nrshow_compilers)Zdistutils.ccompilerrrr//usr/lib64/python3.8/distutils/command/build.pyr s rc @seZdZdZdddddddd d efd d d ddg ZddgZdddefgZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#e fd$e fd%efd&efgZdS)'buildz"build everything needed to install)z build-base=bz base directory for build library)zbuild-purelib=Nz2build directory for platform-neutral distributions)zbuild-platlib=Nz3build directory for platform-specific distributions)z build-lib=NzWbuild directory for all distribution (defaults to either build-purelib or build-platlib)zbuild-scripts=Nzbuild directory for scripts)z build-temp=tztemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)debuggz;compile extensions and libraries with debugging information)forcefz2forcibly build everything (ignore file timestamps))z executable=ez5specify final destination interpreter path (build.py)rrz help-compilerNzlist available compilerscCsLd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nr r) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallelselfrrrinitialize_options8szbuild.initialize_optionscCsb|jdkrt|_ntjdkr&tdd|jftjdd}ttdrR|d7}|jdkrntj |j d|_|j dkrtj |j d||_ |j dkr|jjr|j |_ n|j|_ |jdkrtj |j d||_|jdkrtj |j d tjdd|_|jdkr tjr tj tj|_t|jtr^zt|j|_Wntk r\td YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z .%s-%d.%dZgettotalrefcountz-pydebuglibZtempz scripts-%d.%dzparallel should be an integer)rrosnamersys version_infohasattrrpathjoinrrr distributionZ ext_modulesrrrnormpath isinstancerstrint ValueError)rZplat_specifierrrrfinalize_optionsHsD             zbuild.finalize_optionscCs|D]}||qdSN)Zget_sub_commandsZ run_command)rZcmd_namerrrruns z build.runcCs |jSr1)r*has_pure_modulesrrrrr3szbuild.has_pure_modulescCs |jSr1)r*has_c_librariesrrrrr4szbuild.has_c_librariescCs |jSr1)r*has_ext_modulesrrrrr5szbuild.has_ext_modulescCs |jSr1)r* has_scriptsrrrrr6szbuild.has_scriptsZbuild_pyZ build_clibZ build_extr)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrr0r2r3r4r5r6Z sub_commandsrrrrr sH8 r ) __doc__r%r#Zdistutils.corerZdistutils.errorsrZdistutils.utilrrr rrrrs    PK] ! !+command/__pycache__/register.cpython-38.pycnu[U e5d-@sddZddlZddlZddlZddlZddlmZddlm Z ddl Tddl m Z Gddde Z dS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejddgZejdddgZddd fgZd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdddZdS) registerz7register the distribution with the Python package index)list-classifiersNz list the valid Trove classifiers)strictNzBWill stop the registering if the meta-data are not fully compliantverifyrrcheckcCsdS)NTselfr r 2/usr/lib64/python3.8/distutils/command/register.pyzregister.cCst|d|_d|_dS)Nr)rinitialize_optionslist_classifiersrr r r rrs zregister.initialize_optionscCs*t|d|jfdd}||jjd<dS)Nr)r)rrestructuredtextr )rfinalize_optionsr distributionZcommand_options)r Z check_optionsr r rr$s  zregister.finalize_optionscCsT|||D]}||q|jr8|n|jrH|n|dS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)r Zcmd_namer r rrun+s    z register.runcCs8tdt|jd}||j|_d|_|dS)zDeprecated API.zddistutils.command.register.check_metadata is deprecated, use the check command insteadr rN)rPendingDeprecationWarningrZget_command_objZensure_finalizedrrr)r r r r rcheck_metadata:s zregister.check_metadatacCsz|}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_d S) z: Reads the configuration file and set attributes. usernamepassword repositoryrealmTZpypiz%s not found in .pypircFN)Z _read_pypircrrr r! has_configZDEFAULT_REPOSITORY ValueError)r Zconfigr r rrDs     zregister._set_configcCs*|jd}tj|}t||dS)z8 Fetch the list of classifiers from the server. z?:action=list_classifiersN)r urllibrequestZurlopenrinfo_read_pypi_response)r ZurlZresponser r rrUs  zregister.classifierscCs&||d\}}td||dS)zF Send the metadata to the package index server to be checked. r Server response (%s): %sN)post_to_serverbuild_post_datarr&)r coderesultr r rr\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}d}||krd|dtjt}|sRd}q,||kr,tdq,|dkrl|s|td}qn|st d}q|t j }t j |jd }||j|||||d |\}}|d ||ftj|d kr|jr||j_nf|d tj|d|tjd}|dkrNtd}|s*d}q*|dkr|||nl|dkrddi} d| d<| d<| d<d| d<| dstd| d<q| d| dkr0| dst d| d<q| dst d| d<q| d| dkrd| d<d| d<tdq| dsJtd| d<q0|| \}}|d krrtd ||ntdtd nP|d!krdd"i} d| d<| dstd#| d<q|| \}}td ||dS)$a_ Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. 1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitr(zAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2:actionusernamerZemailNZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r"rrsplitannouncerINFOinputprintgetpassr$r%ZHTTPPasswordMgrparseZurlparser Z add_passwordr!r)r*rZ _get_rc_filelowerZ _store_pypircr&) r ZchoicerrchoicesauthZhostr+r,datar r rrcs                   zregister.send_metadatacCs|jj}|d|||||||| | | | | |||d}|ds|ds|drd|d<|S)Nz1.0)r5metadata_versionr7versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrJrKrLz1.1rD)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)r actionmetarCr r rr*s,zregister.build_post_dataNc Csd|kr$|d|d|jftjd}d|}|d}t}|D]~\}}t|tgtdfkrn|g}|D]R}t|}| || d|| d| ||rr|d d krr| d qrqH| || d | d }d |tt |d} t j|j|| } t jt jj|d} d}z| | } Wnxt jjk r} z"|jrd| j}| j| jf} W5d} ~ XYnJt jjk r} zdt| f} W5d} ~ XYnX|jr|| }d} |jrd d|df}||tj| S)zC Post a query to the server, and return a string response. r7zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--r z* Content-Disposition: form-data; name="%s"z   zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr/Ni)r0ZOKzK---------------------------------------------------------------------------)r:r rr;ioStringIOitemstypestrwritegetvalueencodelenr$r%ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr+msgZURLErrorr'join)r rCrBboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqZopenerr,er_r r rr)s^          zregister.post_to_server)N)__name__ __module__ __qualname__rGrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr*r)r r r rrs* zr)__doc__r>rRZ urllib.parser$Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs   PK]<((1command/__pycache__/build_py.cpython-38.opt-1.pycnu[U e5d&C@szdZddlZddlZddlZddlZddlmZddlTddl m Z m Z ddl m Z GdddeZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)Command)*) convert_path Mixin2to3)logc@seZdZdZdddddgZddgZd diZd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1S)3build_pyz5"build" pure Python modules (copy to build directory))z build-lib=dzdirectory to "build" (copy) to)compileczcompile .py to .pyc) no-compileNz!don't compile .py files [default])z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])forcefz2forcibly build everything (ignore file timestamps)r r r cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer selfr2/usr/lib64/python3.8/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|ddd|jj|_|jj|_|jj|_i|_|jjr^|jjD]\}}t||j|<qF||_ t |j t szt |j |_ Wn t tfk rtdYnXdS)NZbuild)rr)r r zoptimize must be 0, 1, or 2)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerint ValueErrorAssertionErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s$      zbuild_py.finalize_optionscCs:|jr||jr$||||jdddSNr)include_bytecode)r build_modulesrbuild_packagesbuild_package_data byte_compile get_outputsrrrrrunCs z build_py.runcsg}|js|S|jD]h}||}tjj|jg|d}d|rPt|dfdd|||D}| ||||fq|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples.rcsg|]}|dqSNr).0fileZplenrr ssz+build_py.get_data_files..) rget_package_dirosr$joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesrr3rras     zbuild_py.get_data_filescsd|jdg|j|g}g|D]:}ttjt|t|}fdd|Dq$S)z6Return filenames for package's data files in 'src_dir'cs$g|]}|krtj|r|qSr)r6r$isfile)r1fnfilesrrr4s z,build_py.find_data_files..) rgetglobr6r$r7escaperextend)rrr=ZglobspatternZfilelistrrCrr:ys  zbuild_py.find_data_filescCs`d}|jD]P\}}}}|D]>}tj||}|tj||jtj|||ddqq dS)z$Copy data files into build directoryNFZ preserve_mode)rr6r$r7mkpathdirname copy_file)rZlastdirrr=r>r?filenametargetrrrr*szbuild_py.build_package_datacCs|d}|js&|r tjj|SdSng}|rz|jd|}Wn*tk rl|d|d|d=Yq*X|d|tjj|Sq*|jd}|dk r|d||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r.r@rN)r8rr6r$r7KeyErrorinsertrE)rrr$tailZpdirrrrr5s(       zbuild_py.get_package_dircCsj|dkr8tj|s td|tj|s8td||rftj|d}tj|rZ|Std|dS)Nr@z%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r6r$existsZDistutilsFileErrorisdirr7rArwarn)rrrinit_pyrrr check_packages&   zbuild_py.check_packagecCs&tj|std||dSdSdS)Nz!file %s (for module %s) not foundFT)r6r$rArrV)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|||ttjt|d}g}tj|jj}|D]P}tj|}||krtj tj |d}| |||fq>| d|q>|S)Nz*.pyrz excluding %s) rXrFr6r$r7rGabspathrZ script_namesplitextbasenamer;Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_frYrrrfind_package_moduless  zbuild_py.find_package_modulesc Csi}g}|jD]}|d}d|dd}|d}z||\}}Wn"tk rh||}d}YnX|s|||} |df||<| r||d| ftj||d} | || sq|||| fq|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r.rrPr/__init__.py) rr8r7rQr5rXr;r6r$r[) rrr_rYr$rZ module_basercheckedrWrZrrr find_moduless*       zbuild_py.find_modulescCsNg}|jr|||jrJ|jD]$}||}|||}||q$|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrHrdrr5r`)rr_rrmrrrfind_all_moduless    zbuild_py.find_all_modulescCsdd|DS)NcSsg|] }|dqS)rPr)r1rYrrrr4-sz-build_py.get_source_files..)rfrrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nrb)listr6r$r7)rr>rrYZ outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler/cCs|}g}|D]p\}}}|d}||j||}|||r|jr^|tjj|dd|j dkr|tjj||j dq|dd|j D7}|S)Nr.r@) optimizationrcSs,g|]$\}}}}|D]}tj||qqSr)r6r$r7)r1rr=r>r?rNrrrr4Bs z(build_py.get_outputs..) rfr8rirr;r importlibutilcache_from_sourcerr)rr'r_ZoutputsrrYrZrNrrrr,3s*      zbuild_py.get_outputscCsbt|tr|d}nt|ttfs,td||j||}tj |}| ||j ||ddS)Nr.z:'package' must be a string (dot-separated), list, or tuplerrJ) rstrr8rhtuple TypeErrorrirr6r$rLrKrM)rrYrZrZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs*|}|D]\}}}||||q dSr0)rdrr)rr_rrYrZrrrr(Yszbuild_py.build_modulescCsD|jD]8}||}|||}|D]\}}}||||q$qdSr0)rr5r`rr)rrrr_Zpackage_rYrZrrrr)bs   zbuild_py.build_packagescCstjr|ddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r+rP)rr prefixdry_run) sysdont_write_bytecoderVdistutils.utilr+rr6sepr r rtr)rrDr+rsrrrr+vs&    zbuild_py.byte_compileN)r/)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr%r-rr:r*r5rXr[r`rdrfrgrir,rrr(r)r+rrrrrs8    '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr||jr*||||j||jdddSr&) updated_filesrr(rr)r*Zrun_2to3r+r,rrrrr-s zbuild_py_2to3.runcCs,t||||}|dr(|j|d|S)Nr/r)rrrr}r;)rrYrZrresrrrrrszbuild_py_2to3.build_moduleN)ryrzr{r-rrrrrrr|sr|)__doc__r6importlib.utilrkrurFZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr|rrrrs  }PK]__8command/__pycache__/install_scripts.cpython-38.opt-1.pycnu[U e5d@sDdZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@sLeZdZdZddddgZddgZdd Zd d Zd d ZddZ ddZ dS)install_scriptsz%install scripts (Python or otherwise))z install-dir=dzdirectory to install scripts to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files)) skip-buildNzskip the build stepsrr cCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_buildselfr9/usr/lib64/python3.8/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |dd|dddddS)NZbuild) build_scriptsr Zinstall)rr )rr)r r )Zset_undefined_optionsrrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|d||j|j|_tjdkr~|D]H}|j rLt d|q4t |t dBd@}t d||t||q4dS)Nrposixzchanging mode of %simizchanging mode of %s to %o)r Z run_commandZ copy_treer r outfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s   zinstall_scripts.runcCs |jjp gSN)Z distributionZscriptsrrrr get_inputs8szinstall_scripts.get_inputscCs |jpgSr )rrrrrr;szinstall_scripts.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrr!rrrrrrsr) __doc__rZdistutils.corerZ distutilsrrrrrrrrs    PK] LL,command/__pycache__/bdist_msi.cpython-38.pycnu[U e5d߉@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sFeZdZdZddZddZddd Zdd d ZdddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs>tj|f||jd}d|d}|dd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr3/usr/lib64/python3.8/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|ddddddd|dS) z,Set the title text of the dialog at the top.Title @<z{\VerdanaBold10}%sN)r )rtitlerrrr"#szPyDialog.titleBackc Cs,|r d}nd}||d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr$8 pushbuttonrrr"nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}||d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr%r$i0r'r(r)r*r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}||d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr%r$r'r(r)r*r,rrrr-@sz PyDialog.nextc Cs,||t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr'r(r)r%)r+intrr)rr.r"r-ZxposrrrxbuttonKszPyDialog.xbuttonN)r#r$)r2r$)r4r$) __name__ __module__ __qualname____doc__rr"r1r3r-r8rrrrrs  rc@seZdZdZddddefdddd d d d d g ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(Z d)d*Z d+d,Z d-d.Z d/d0Z d1d2Zd3d4Zd5d6Zd7S)8 bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)) keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)no-target-compilecz/do not compile .py to .pyc on the target system)no-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in) skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionr?rArCrFz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|dd|jdkr2|dj}tj|d|_t}|jsN|j rN||_|jr|jg|_ |j s|j r|j|krt d|fn t|j|_ |ddd|jrt d|jr|j jD]}|jtj|krqqt d|jd|_dS) NZbdist)rMrMZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rLrL)rIrIz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsrHget_finalized_command bdist_baseospathjoinrrK distributionhas_ext_modulesrPrMrlist all_versionsrOrNZscriptsbasenameinstall_script_key)rrSZ short_versionZscriptrrrfinalize_optionssH      zbdist_msi.finalize_optionscCs|js|d|jddd}|j|_|j|_d|_|d}d|_d|_|j r|j }|s~|jslt ddt j dd }d |j|f}|d}tj|jd ||_td |j|t jdtj|jd |t jd=||j|j}||}tj|}tj|r0t ||jj!}|j"} | sJ|j#} | sTd} |$} dt%| j&} |j}|j rd|j |f} nd|} t'(|t)| t'*| | |_+t',|j+t-d| fg} |j.p|j/}|r| 0d|f|j1r| 0d|j1f| rt2|j+d| |3|4|5|6|j+7t8|jdrld|j pXd|f}|jj90||j:st;|j|j }|d?d%d@dAd%d)dB|d7d-dCdDd-d)dE|dFd-dGdHdddI| dJdKd-dLdHdMdNdOddd |jd1dPd1d/} | d0d1|j dPd }|d?d%d@dAd%d)d|d7d-d-dDd-d)d|dFd-ddHddd| ddd-ddHdddddd |ddndd d0d9t|d||||||ddd" }|d|dd%ddtddddXd }|dd ddd-d|dd ddd-d|jd#dd d!| dd"} | dddd| j d0d9dd|d"d} | ddst|d||||||d"d"d"d=d> }|d?d-d%dAd%d)d|dFddddwddġ|ddddd-ddơ|dd&d|d&d-dd} | ddF| ddddZddRddddd } | ddˡ|jddd=d!|j dd"d=d!|d"d# ddst|d||||||ddd" }|d͡|dd%ddHdhddС|dd%ddHddddXd }|dd ddAd{d֡|dd ddAd{d١|jddd=d!| dd"} | dddd| dddd@| ddddN| dddd| dddd| dddd| dddd| dddd| d0d9dd-|d"dѡ ddsdS)Nriri,z[ProductName] Setupr%r$ rc)Z DefaultUIFontDlgFont8)Z ErrorDialogErrorDlg)Z Progress1ZInstall)Z Progress2Zinstalls)MaintenanceForm_ActionRepair) WhichUsersALLZ TextStyle)rTahoma Nr)Z DlgFontBold8rNr$)Z VerdanaBold10VerdanarNr$)Z VerdanaRed9rrrr) PrepareDlgz(Not Privileged or Windows9x or Installed) WhichUsersDlgz.Privileged and not Windows9x and not Installed)SelectFeaturesDlgz Not Installedi)MaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectedi) ProgressDlgNi ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r/r2r#Z Description1rFrPr!z[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.)r.Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryF)Zbitmaprz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnorerreiZ ErrorTextr0rNxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r(r)ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.fr(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar4Z SpawnDialogrzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialograZFeaturesZ SelectionTreer ZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?rZ AdminInstallzGSelect whether to install [ProductName] for all users of this computer.rrzInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"rz({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressrz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrrrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallrz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")ryrr rrrr"r1r3r-ZeventZcontrolrr+mappingrWrprPrZ conditionr8Z radiogroupadd)rryxyrrr"ZmodalZmodelessZtrack_disk_spaceZfatalrBZ user_exitZ exit_dialogZinuseerrorr3ZcostingZprepZseldlgorderrwrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrr~sv                                                   zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rKrIrTrUrVrL)rrZ base_namerrrrrqsz bdist_msi.get_installer_filenameN)r9r:r;Z descriptionrZ user_optionsZboolean_optionsrZrrQr]ror|r{r}r~rqrrrrr=Ss^  ([66&@r=)r<rkrTZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrxr r r r r rrrr=rrrrs       >PKq|]U]]"__pycache__/version.cpython-35.pycnu[ Yf90@sUdZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@smeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r|j|dS)N)parse)selfvstringr6/opt/alt/python35/lib64/python3.5/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs)|j|}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__) r __module__ __qualname____doc__rr rrrrrrrrrrs      rc@sVeZdZdZejdejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|s(td||jddddd\}}}}}|r|ttt|||g|_n"ttt||gd|_|r|dt|f|_n d|_dS) Nzinvalid version number '%s'r)r) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr majorminorZpatchr'Zprerelease_numrrrrs*$"zStrictVersion.parsecCs|jddkr;djtt|jdd}ndjtt|j}|jr||jdt|jd}|S)Nrr.r)r&joinr$r r')rrrrr__str__s ( "zStrictVersion.__str__cCst|trt|}|j|jkrG|j|jkrCdSdS|j r_|j r_dS|jrv|j rvdS|j r|jrdS|jr|jr|j|jkrdS|j|jkrdSdSndstddS)NrrFznever get herer-r-) isinstancer rr&r'AssertionError)rrrrrr s& zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIrrr,r rrrrr]s #   rc@sjeZdZdZejdejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r|j|dS)N)r)rrrrrr.szLooseVersion.__init__c Cs{||_dd|jj|D}xCt|D]5\}}yt|||8s z&LooseVersion.parse..)r component_resplit enumerater%r!r&)rrZ componentsiobjrrrr3s   zLooseVersion.parsecCs|jS)N)r)rrrrr,CszLooseVersion.__str__cCsdt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsat|trt|}|j|jkr1dS|j|jkrGdS|j|jkr]dSdS)Nrrr-)r.r r4r&)rrrrrr Ks zLooseVersion._cmp) r rrrr0r1r2r8rrr,r r rrrrr4 s    r4)rr0rrr4rrrrs >PKq|]'((%__pycache__/util.cpython-35.opt-2.pycnu[ ]P @sddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZddZd d Zd d Zdad dZddZdddZdaaaddZddZdddddZddZdddddddddZdd Zdddd!d"Zddddd#d$Z Gd%d&d&Z!dS)'N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorcCstjdkrd}tjj|}|d)kr:tjStjjd|}tj|t||j}|dkrdS|dkrdStjSd tjkrtjd Stjd kst td  rtjStj \}}}}}|jj d d }|j dd}|j d d}|dddkrTd||fS|dddkr|ddkrd}dt |dd|ddf}ddddi} |d| tj 7}n|dd d!krd||fS|ddd"krd#|||fS|dd$d%krrd%}tjd&tj} | j|} | r| j}nX|dd$d'krddl} ddl} | j| jj|||\}}}d(|||fS)*Nntz bit ()amd64z win-amd64itaniumzwin-ia64_PYTHON_HOST_PLATFORMposixuname/ _-linuxz%s-%ssunosr5solarisz%d.%si32bitl64bitz.%sirixaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionfindplatformlenlowerenvironhasattrrreplaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigget_platform_osx sysconfigget_config_vars)prefixijlookosnamehostreleaser'machinebitnessrel_remr6 distutilsrF)/opt/alt/python35/lib64/python3.5/util.py get_platformsX #   ( rHcCstjdkr|S|s|S|ddkr=td||ddkr]td||jd}xd|kr|jdqoW|stjStjj|S)Nrrzpath '%s' cannot be absoluterzpath '%s' cannot end with '/'.r#)r$sep ValueErrorsplitremovecurdirpathjoin)pathnamepathsrFrFrG convert_pathos rScCstjdkrTtjj|s4tjj||Stjj||ddSnmtjdkrtjj|\}}|ddkr|dd}tjj||StdtjdS)Nr rrr\z!nothing known about platform '%s')r$r%rOisabsrP splitdriver)Znew_rootrQZdriverOrFrFrG change_roots rWcCs}tr dStjdkrTdtjkrTddl}|jtjdtjd._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s')r]r1subKeyErrorrK)sr_r`varrFrFrG subst_varss rezerror: cCs|t|S)N)r^)excr:rFrFrGgrok_environment_errorsrgcCs8tjdtjatjdatjdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r1r2string whitespace _wordchars_re _squote_re _dquote_rerFrFrFrG _init_regexsrmcCstdkrt|j}g}d}x|rtj||}|j}|t|kr||j|d|P||tjkr|j|d|||dj }d}n||dkr|d|||dd}|d}n||dkr)t j||}n9||dkrNt j||}nt d|||dkrt d|||j\}}|d|||d|d||d}|jd}|t|kr.|j|Pq.W|S) NrrTr'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rjrmstripr4endr*appendrhrilstriprkrl RuntimeErrorrKspan)rcZwordsposrDrqZbegrFrFrG split_quoteds@     "  4 rwcCsj|dkrId|j|f}|dddkrI|ddd}tj||sf||dS)Nz%s%rrz,)rr rx)__name__rinfo)funcargsmsgverbosedry_runrFrFrGexecutes  rcCsC|j}|dkrdS|dkr,dStd|fdS)Nyyesttrueon1rnnoffalseoff0rzinvalid truth value %r)rrrrrr)rrrrrr)r+rK)valrFrFrG strtobool0s    rrcCstjrtd|dkr3to0|dk}|sy&ddlm}|d\} } Wn5tk rddlm} d| d} } YnXtj d| |s7| dk rt j | d} nt | d} | j d| j d jtt|d | j d |||||f| jtj| g} |d kre| jd d n|dkr| jd dt| d|tt j| fd| d|nfddlm}xS|D]K}|dddkrq|dkr)|dkrdn|}tjj|d|}ntjj|}|}|r|dt||krytd||f|t|d}|rt jj||}t jj|}|r|st ||rtj d|||s||||qtj!d||qWdS)Nzbyte-compiling is disabled.r)mkstempz.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) rz-Orz-OOrz removing %s)r2rr optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)"r&dont_write_bytecoder __debug__tempfiler ImportErrorrrrzr$fdopenopenwriterPmapreprclose executableinsertrrrM py_compiler2 importlibutilcache_from_sourcer*rKrObasenamerdebug)Zpy_filesoptimizeforcer:base_dirr~rZdirectrZ script_fdZ script_namerZscriptcmdr2fileoptcfiledfileZ cfile_baserFrFrG byte_compile@sn"    #        rcCs"|jd}d}|j|S)N rz z )rLrP)headerlinesrJrFrFrG rfc822_escapesrcCsw|s dSddlm}m}Gddd|}|dkrN|d}||d|}|j|dddS) Nr)RefactoringToolget_fixers_from_packagec@s4eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj||dS)N)rerror)selfr}r|kwrFrFrG log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj||dS)N)rrz)rr}r|rFrFrG log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj||dS)N)rr)rr}r|rFrFrG log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)ry __module__ __qualname__rrrrFrFrFrGDistutilsRefactoringTools   rz lib2to3.fixesoptionsrT)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrrFrFrGrun_2to3s  rcCssddlm}ddlm}ddlm}|} tj} tj|z| j Wdtj| X| j | j dd<|rx6|j D](} | j } | sq| j| qWg} xw| j D]l} tjj|| }|tjj||tjj|| |dd}|dr| j|qWtdd| Dd |d |d || S) Nr)mkpath) copy_file)FileListupdatercSs+g|]!}|jjdr|qS)z.py)r+endswith).0fnrFrFrG s z$copydir_run_2to3..rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrr$getcwdchdirfindallZallfilesr splitlinesrpZprocess_template_linerOrPdirnamerrr)srcdesttemplaterrrrrrZfilelistrNlineZcopiedfilenameZoutnameresrFrFrGcopydir_run_2to3s4    $ rc@s.eZdZdZdZdZddZdS) Mixin2to3NcCst||j|j|jS)N)rrrr)rrrFrFrGr)szMixin2to3.run_2to3)ryrrrrrrrFrFrFrGrs r)"r$r1importlib.utilrr&rhZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrrErrrHrSrWrYr]rergrjrkrlrmrwrrrrrrrrFrFrFrGs<      ]      =   PKq|]ӧ UU!__pycache__/errors.cpython-35.pycnu[ Yf @sdZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N)__name__ __module__ __qualname____doc__rr5/opt/alt/python35/lib64/python3.5/distutils/errors.pyr s rc@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).N)rrrrrrrrrs rc@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.N)rrrrrrrrr s r c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.N)rrrrrrrrr s r c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.N)rrrrrrrrr s r c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.N)rrrrrrrrr $s r c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.N)rrrrrrrrr *s r c@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.N)rrrrrrrrr3s rc@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.N)rrrrrrrrr8s rc@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).N)rrrrrrrrr>s rc@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).N)rrrrrrrrrCs rc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.N)rrrrrrrrrHs rc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.N)rrrrrrrrrKs rc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.N)rrrrrrrrrOs rc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.N)rrrrrrrrrRs rc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.N)rrrrrrrrrUs rc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.N)rrrrrrrrrXs rc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.N)rrrrrrrrr\s rc@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.N)rrrrrrrrr`s rN)r Exceptionrrr r r r r rrrrrrrrrrrrrrrr s& PKq|]B$__pycache__/file_util.cpython-35.pycnu[ Yf@sdZddlZddlmZddlmZdddddd iZdd d ZddddddddZddddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyinghardz hard linkingsymzsymbolically linkingicNCsd}d}zyt|d}Wn>tk rb}ztd||jfWYdd}~XnXtjj|rytj|Wn>tk r}ztd||jfWYdd}~XnXyt|d}Wn>tk r}ztd||jfWYdd}~XnXxy|j|}Wn>tk rq}ztd||jfWYdd}~XnX|syPy|j |Wqtk r}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdstZ buffer_sizeZfsrcZfdsteZbufr8/opt/alt/python35/lib64/python3.5/distutils/file_util.py_copy_file_contentssF ,)))1 rcCsddlm}ddlm} m} m} m} tjj |sTt d|tjj |r|} tjj |tjj |}ntjj|} |r||| r|dkrtjd||dfSyt|}Wn"tk rtd|YnX|dkrptjj |tjj |krZtjd||| ntjd||||r|dfS|d krtjj|otjj||s6ytj|||dfSWq6tk rYq6XnM|d kr6tjj|otjj||s6tj|||dfSt|||sO|rtj|}|rtj||| || f|rtj|| || |dfS) aCopy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is copied there with the same name; otherwise, it must be a filename. (If the file exists, it will be ruthlessly clobbered.) If 'preserve_mode' is true (the default), the file's mode (type and permission bits, or whatever is analogous on the current platform) is copied. If 'preserve_times' is true (the default), the last-modified and last-access times are copied as well. If 'update' is true, 'src' will only be copied if 'dst' does not exist, or if 'dst' does exist but is older than 'src'. 'link' allows you to make hard links (os.link) or symbolic links (os.symlink) instead of copying: set it to "hard" or "sym"; if it is None (the default), files are copied. Don't set 'link' on systems that don't support it: 'copy_file()' doesn't check if hard or symbolic linking is available. If hardlink fails, falls back to _copy_file_contents(). Under Mac OS, uses the native file copy function in macostools; on other systems, uses '_copy_file_contents()' to copy file contents. Return a tuple (dest_name, copied): 'dest_name' is the actual name of the output file, and 'copied' is true if the file was copied (or would have been copied, if 'dry_run' true). r)newer)ST_ATIMEST_MTIMEST_MODES_IMODEz4can't copy '%s': doesn't exist or not a regular filerz"not copying %s (output up-to-date)z&invalid value '%s' for 'link' argumentz %s %s -> %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater+verbosedry_runrrrrrdiractionstrrr copy_fileCsT!" $    $  '  '   r5c(Csddlm}m}m}m}m}ddl} |dkrStjd|||r]|S||syt d|||rt j j |||}n"||rt d||f|||st d||fd } yt j ||Wnetk rn} zE| j\} } | | jkrCd } nt d ||| fWYdd} ~ XnX| rt||d |yt j|Wnvtk r} zV| j\} } yt j|Wntk rYnXt d |||| fWYdd} ~ XnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr r!r#r$Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %sr0zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr r!r#r$errnorr)rr r r"renamer argsZEXDEVr5r)rrr0r1rr r!r#r$r6Zcopy_itrZnummsgrrr move_filesR (      ) )r:c CsGt|d}z&x|D]}|j|dqWWd|jXdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r rr)filenamecontentsflinerrr write_files  rAi@) __doc__r Zdistutils.errorsrZ distutilsrr&rr5r:rArrrrs  3 c=PKq|]bz&__pycache__/spawn.cpython-35.opt-1.pycnu[ Yf@sdZddlZddlZddlmZmZddlmZddlm Z dddddZ d d Z dddd d Z ej d krddlmZdadadddddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsmt|}tjdkr1t||d|n8tjdkrVt||d|ntdtjdS)aRun another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. cmd[0] is the program to run and cmd[1:] are the rest of its arguments. There is no way to run a program with a name different from that of its executable. If 'search_path' is true (the default), the system's executable search path will be used to find the program; otherwise, cmd[0] must be the exact path to the executable. If 'dry_run' is true, the command will not actually be run. Raise DistutilsExecError if running the program fails in any way; just return on success. posixdry_runntz1don't know how to spawn programs on platform '%s'N)listosname _spawn_posix _spawn_ntr)cmd search_pathverboserr4/opt/alt/python35/lib64/python3.5/distutils/spawn.pyspawns rcCs;x4t|D]&\}}d|kr d|||es z _spawn_posix...cSsg|]}t|qSr)r))r*r+rrrr,ks zF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configurezunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %sz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %dr)"rrrr execvpexecvsysplatform _cfg_targetr&get_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr$Z exit_statusrrrr Xs  "         - r cCs|dkrtjd}|jtj}tjj|\}}tjdkrh|dkrh|d}tjj|sx9|D]1}tjj ||}tjj|r|SqWdS|SdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. NPATHwin32z.exe) r r6r4pathseppathsplitextr0r1isfiler)r"rLpathsbaseZextpfrrrrs    r)__doc__r0r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr1r&r2r5r rrrrrs   QPKq|]teCC(__pycache__/version.cpython-35.opt-2.pycnu[ ]90@sOddlZGdddZGdddeZGdddeZdS)Nc@sgeZdZdddZddZddZdd Zd d Zd d ZddZ dS)VersionNcCs|r|j|dS)N)parse)selfvstringr,/opt/alt/python35/lib64/python3.5/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs)|j|}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__) r __module__ __qualname__rr rrrrrrrrrrs      rc@sPeZdZejdejejBZddZddZ ddZ dS) StrictVersionz)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|s(td||jddddd\}}}}}|r|ttt|||g|_n"ttt||gd|_|r|dt|f|_n d|_dS) Nzinvalid version number '%s'r)r) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrrmajorminorZpatchr&Zprerelease_numrrrrs*$"zStrictVersion.parsecCs|jddkr;djtt|jdd}ndjtt|j}|jr||jdt|jd}|S)Nrr.r)r%joinr#r r&)rrrrr__str__s ( "zStrictVersion.__str__cCst|trt|}|j|jkrG|j|jkrCdSdS|j r_|j r_dS|jrv|j rvdS|j r|jrdS|jr|jr|j|jkrdS|j|jkrdSdSndS)Nrrr,r,) isinstancer rr%r&)rrrrrr s& zStrictVersion._cmpN) r rrrecompileVERBOSEASCIIrrr+r rrrrr]s %   rc@sdeZdZejdejZdddZddZddZ d d Z d d Z dS) LooseVersionz(\d+ | [a-z]+ | \.)NcCs|r|j|dS)N)r)rrrrrr.szLooseVersion.__init__c Cs{||_dd|jj|D}xCt|D]5\}}yt|||8s z&LooseVersion.parse..)r component_resplit enumerater$r r%)rrZ componentsiobjrrrr3s   zLooseVersion.parsecCs|jS)N)r)rrrrr+CszLooseVersion.__str__cCsdt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsat|trt|}|j|jkr1dS|j|jkrGdS|j|jkr]dSdS)Nrrr,)r-r r2r%)rrrrrr Ks zLooseVersion._cmp) r rrr.r/r0r6rrr+r r rrrrr2 s !   r2)r.rrr2rrrrs >PKq|]K()__pycache__/filelist.cpython-35.opt-2.pycnu[ ]0@sddlZddlZddlZddlZddlmZddlmZmZddl m Z GdddZ ddZ ej d d Zd d Zd ddddZdS)N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@seZdZddddZddZejddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdddddZdddddZdS)FileListNcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr -/opt/alt/python35/lib64/python3.5/filelist.py__init__s zFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCs$ddlm}|r t|dS)Nr)DEBUG)Zdistutils.debugrprint)r msgrr r r r )szFileList.debug_printcCs|jj|dS)N)rappend)r itemr r r r3szFileList.appendcCs|jj|dS)N)rextend)r itemsr r r r6szFileList.extendcCsXtttjj|j}g|_x*|D]"}|jjtjj|q.WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s  z FileList.sortcCsVxOtt|jdddD].}|j||j|dkr |j|=q WdS)Nr)rangelenr)r ir r r remove_duplicatesCs&zFileList.remove_duplicatescCs1|j}|d}d}}}|dkrrt|dkrRtd|dd |d dD}n|dkrt|d krtd|t|d }dd |ddD}nQ|dkrt|dkrtd|t|d }ntd|||||fS)Nrincludeexcludeglobal-includeglobal-excludez&'%s' expects ...cSsg|]}t|qSr )r).0wr r r Ws z1FileList._parse_template_line..r recursive-includerecursive-excludez,'%s' expects ...cSsg|]}t|qSr )r)r+r,r r r r-]s graftprunez#'%s' expects a single zunknown action '%s')r&r'r(r))r.r/)r1r2)rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs,          zFileList._parse_template_linecCs|j|\}}}}|dkrz|jddj|x|D]+}|j|ddsHtjd|qHWn|dkr|jddj|x^|D]+}|j|ddstjd |qWn(|d kr8|jd dj|x|D]+}|j|dd stjd |qWn|dkr|jddj|x|D]+}|j|dd setjd|qeWnj|dkr|jd|dj|fx;|D].}|j|d|stjd||qWn|dkrg|jd|dj|fx|D].}|j|d|s2tjd||q2Wn|dkr|jd||jdd|stjd|nU|dkr|jd||jdd|stjd|ntd|dS)Nr&zinclude  anchorr z%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %sprefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r1zgraft z+warning: no directories found matching '%s'r2zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r7r rinclude_patternrr exclude_patternr)r r3r4r5rr6patternr r r process_template_linehsf                          zFileList.process_template_liner rcCsd}t||||}|jd|j|jdkrH|jxG|jD]<}|j|rR|jd||jj|d}qRW|S)NFz%include_pattern: applying regex r'%s'z adding T)translate_patternr r=rrsearchrr)r r=r9r:is_regex files_found pattern_renamer r r r;s    zFileList.include_patterncCsd}t||||}|jd|jxett|jdddD]D}|j|j|rO|jd|j||j|=d}qOW|S)NFz%exclude_pattern: applying regex r'%s'r z removing Tr!r!)r?r r=r"r#rr@)r r=r9r:rArBrCr$r r r r<s  &  zFileList.exclude_pattern)__name__ __module__ __qualname__rrrcurdirrr rrrr%r7r>r;r<r r r r rs      L,rcCs5ddtj|ddD}ttjj|S)Ncss:|]0\}}}|D]}tjj||VqqdS)N)rrr)r+basedirsrfiler r r s z#_find_all_simple.. followlinksT)rwalkfilterrisfile)rresultsr r r _find_all_simples rRcCsOt|}|tjkrEtjtjjd|}t||}t|S)Nstart) rRrrH functoolspartialrrelpathrlist)rrZmake_relr r r rs  rcCsPtj|}tj}tjdkr-d}d|}tjd||}|S)N\z\\\\z\1[^%s]z((?s    PKq|]BRe e $__pycache__/log.cpython-35.opt-2.pycnu[ ]t@sdZdZdZdZdZddlZGdddZeZejZej Z ej Z ej Z ej Z ej Z d d Zd d ZdS) Nc@sseZdZeddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr (/opt/alt/python35/lib64/python3.5/log.py__init__sz Log.__init__cCs|tttttfkr1tdt|||jkr|rP||}|tttfkrqtj }n tj }|j dkr|j }|j |dj|}|jd||jdS)Nz%s wrong log levelstrictbackslashreplacez%s )DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdouterrorsencodingencodedecodewriteflush)r levelmsgargsstreamrr r r _logs    zLog._logcGs|j|||dS)N)r#)r rr r!r r r log%szLog.logcGs|jt||dS)N)r#r)r r r!r r r debug(sz Log.debugcGs|jt||dS)N)r#r)r r r!r r r info+szLog.infocGs|jt||dS)N)r#r)r r r!r r r warn.szLog.warncGs|jt||dS)N)r#r)r r r!r r r error1sz Log.errorcGs|jt||dS)N)r#r)r r r!r r r fatal4sz Log.fatalN) __name__ __module__ __qualname__rr r#r$r%r&r'r(r)r r r r rs       rcCstj}|t_|S)N) _global_logr)roldr r r set_threshold?s  r/cCsL|dkrttn/|dkr2ttn|dkrHttdS)Nrrr)r/rrr)vr r r set_verbosityEs      r1)rrrrrrrr-r$r%r&r'r(r)r/r1r r r r s )        PKq|]`0-__pycache__/archive_util.cpython-35.opt-2.pycnu[ ]&@sddlZddlmZddlZyddlZWnek rRdZYnXddlmZddlm Z ddl m Z ddl m Z yddlmZWnek rdZYnXyddlmZWnek rdZYnXd d Zd d Zd ddddddZddddZded%gdfded&gdfded'gdfded(gdfded)gdfdegd fiZd!d"Zddddddd#d$ZdS)*N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc Cs_tdks|dkrdSyt|}Wntk rFd}YnX|dk r[|dSdS)N)rKeyError)nameresultr 1/opt/alt/python35/lib64/python3.5/archive_util.py_get_gids   rc Cs_tdks|dkrdSyt|}Wntk rFd}YnX|dk r[|dSdS)Nr )rr )r r r r r_get_uid+s   rgzipc sddddddddddi}dddd dd dd i}|dk rl||jkrltd |d } |dkr| |j|d7} ttjj| d|ddl} tj dt t fdd} |sE| j | d||} z| j |d| Wd| jX|dkrtdt| ||} tjdkr|| | g}n|d| g}t|d|| S| S)Nrgzbzip2bz2xzcompressz.gzz.bz2z.xzz.ZzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tardry_runrzCreating tar archivecs@dk r|_|_dk r<|_|_|S)N)gidgnameuiduname)tarinfo)rgroupownerrr r _set_uid_gidas      z"make_tarball.._set_uid_gidzw|%sfilterz'compress' will be deprecated.win32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrtar_compression compress_ext archive_namer)r tarZcompressed_namecmdr )rrrrr make_tarball7s<             r9c Cs|d}ttjj|d|tdkr|rAd}nd}y td|||gd|Wqtk rtd|YqXntjd|||sytj |dd tj }Wn-t k rtj |dd tj }YnXxtj |D]t\}}} xb| D]Z} tjjtjj|| } tjj| r|j| | tjd | qWqW|j|S) Nz.ziprz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw compressionz adding '%s')rr&r'r(zipfilerrrr*ZipFile ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDwalknormpathjoinisfilewriter-) r1r2r3r zip_filenameZ zipoptionsr:dirpathdirnames filenamesr r'r r r make_zipfiles:         ! rJgztarrzgzip'ed tar-filebztarrzbzip2'ed tar-filexztarrzxz'ed tar-fileZztarzcompressed tar filer7zuncompressed tar filer:zZIP filecCs%x|D]}|tkr|SqWdS)N)ARCHIVE_FORMATS)formatsformatr r rcheck_archive_formatss  rQcCs7tj}|dk rMtjd|tjj|}|sMtj||dkrbtj}d|i} yt|} Wn"t k rt d|YnX| d} x"| dD]\} } | | | s@         G5 PKq|]+7*__pycache__/text_file.cpython-35.opt-2.pycnu[ ]0@s;ddlZddlZddlZGdddZdS)Nc@seZdZddddddddddddd d iZd d d d ZddZddZd ddZd ddZd ddZ ddZ ddZ ddZ d S)TextFilestrip_comments skip_blanks lstrip_wsr rstrip_ws join_lines collapse_joinerrorsstrictNcKs|dkr$|dkr$tdxQ|jjD]@}||kr]t||||q4t|||j|q4Wx3|jD]%}||jkrtd|qW|dkr|j|n||_||_d|_g|_ dS)Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrroptionsoptr./opt/alt/python35/lib64/python3.5/text_file.py__init__Ns      zTextFile.__init__cCs7||_tj|jdd|j|_d|_dS)Nrr r)riorr rr)rrrrrros !z TextFile.opencCs2|j}d|_d|_d|_|jdS)N)rrrclose)rrrrrrvs     zTextFile.closecCsg}|dkr|j}|j|jdt|ttfr^|jdt|n|jd||jt|dj|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errors  zTextFile.gen_errorcCs td|j||dS)Nzerror: ) ValueErrorr()rr&r'rrrerrorszTextFile.errorcCs(tjjd|j||ddS)Nz warning:  )sysstderrwriter()rr&r'rrrwarnsz TextFile.warncCs|jr$|jd }|jd =|Sd}xu|jj}|dkrNd}|jr|r|jd}|d kr{nz|dks||ddkr|ddkrdpd}|d||}|jdkrq-n|jdd}|jr|r|dkr!|jd|S|j r6|j }||}t |j t rm|j dd|j drrrrr s ; !    x r)r,osrrrrrrs$PKq|]*[#__pycache__/__init__.cpython-35.pycnu[ Yf@s5dZddlZejdejjdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr7/opt/alt/python35/lib64/python3.5/distutils/__init__.py s PKq|]F ==__pycache__/cmd.cpython-35.pycnu[ YfJ@sdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ Gdd d e ZdS) ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@seZdZdZgZddZddZddZdd Zd d Z d d ddZ ddZ dddZ ddZ d ddZd ddZddZd ddZdd Zd!d"Zd#d$Zd%d&Zdd'd(Zd)d*d+Zd,d-Zd.d/Zd0d1Zd dd2d3Zd4d5d6Zddd dd7d8Zddd)dd9d:Zdd;d<Zddd=d>Z d d d d d?d@Z!d d ddAdBZ"d S)CCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsddlm}t||s+td|jtkrFtd||_|jd|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r2/opt/alt/python35/lib64/python3.5/distutils/cmd.py__init__/s       zCommand.__init__cCsR|dkrBt|d|}|dkr;t|j|S|Sn t|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s   zCommand.__getattr__cCs |js|jd|_dS)N)rfinalize_options)rrrrensure_finalizedis  zCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr,d|j}|j||dtj|d}x||jD]q\}}}|j|}|d dkr|dd }t||}|j|d||fdtjqZWdS) Nr) longopt_xlatezcommand options for '%s':levelz r=z%s = %sr&) Zdistutils.fancy_getoptr#get_command_nameannouncerINFO user_options translater)rheaderindentr#optionrvaluerrr dump_optionss  zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrruns z Command.runrcCstj||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N)r)rmsgr$rrrr(szCommand.announcecCs1ddlm}|r-t|tjjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr3printsysstdoutflush)rr2r3rrr debug_prints zCommand.debug_printcCs[t||}|dkr/t||||St|tsWtd|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr.whatdefaultvalrrr_ensure_stringlikes zCommand._ensure_stringlikecCs|j|d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)r>)rr.r<rrr ensure_stringszCommand.ensure_stringcCst||}|dkrdSt|trMt||tjd|nMt|trxtdd|D}nd}|std||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdS)N)r r:).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r:r9resplitlistallr)rr.r=okrrrensure_string_lists zCommand.ensure_string_listcCsL|j|||}|dk rH|| rHtd|||fdS)Nzerror in '%s' option: )r>r)rr.Ztesterr;Z error_fmtr<r=rrr_ensure_tested_strings zCommand._ensure_tested_stringcCs |j|tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rJospathisfile)rr.rrrensure_filenameszCommand.ensure_filenamecCs |j|tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rJrLrMisdir)rr.rrrensure_dirnameszCommand.ensure_dirnamecCs$t|dr|jS|jjSdS)N command_name)hasattrrRr __name__)rrrrr' szCommand.get_command_namecGse|jj|}|jxB|D]:\}}t||dkr#t||t||q#WdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr!rr9)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs#|jj||}|j|S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrUr!)rcommandZcreateZcmd_objrrrget_finalized_command$s zCommand.get_finalized_commandrcCs|jj||S)N)rreinitialize_command)rrWZreinit_subcommandsrrrrY0s zCommand.reinitialize_commandcCs|jj|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rrWrrrrZ4szCommand.run_commandcCsIg}x<|jD]1\}}|dks4||r|j|qW|S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCs!tjd|j|fdS)Nzwarning: %s: %s )rwarnr')rr2rrrr_Ks z Command.warncCs tj|||d|jdS)Nr)rexecuter)rfuncargsr2r$rrrr`OszCommand.executeicCstj||d|jdS)Nr)rmkpathr)rnamemoderrrrcRszCommand.mkpathc Cs)tj|||||j |d|jS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrfUszCommand.copy_filec Cs)tj||||||j d|jS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. r)r copy_treerr)rrgrhrirjZpreserve_symlinksr$rrrrl^szCommand.copy_treecCstj||d|jS)z$Move a file respecting dry-run flag.r)r move_filer)rsrcZdstr$rrrrmgszCommand.move_filecCs*ddlm}|||d|jdS)z2Spawn an external command respecting dry-run flag.r)spawnrN)Zdistutils.spawnror)rcmdZ search_pathr$rorrrroksz Command.spawnc Cs+tj||||d|jd|d|S)Nrownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrqrrrrrrsps zCommand.make_archivecCs|dkrd|}t|tr1|f}n!t|ttfsRtd|dkrwd|dj|f}|jstj||r|j ||||n t j |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r:rFtupler joinrrZ newer_groupr`rdebug)rZinfilesrhrarbZexec_msgZskip_msgr$rrr make_filevs     zCommand.make_file)#rT __module__ __qualname____doc__r[rrr!rr r0r1r(r8r>r@rIrJrOrQr'rVrXrYrZr^r_r`rcrfrlrmrorsrxrrrrr sF  0              r c@sOeZdZdZdgZddZddZd d Zd d Zd S) install_miscz{Common base class for installing some files in a subdirectory. Currently used by install_data and install_scripts. install-dir=d!directory to install the files tocCsd|_g|_dS)N) install_diroutfiles)rrrrrs zinstall_misc.initialize_optionscCs|jd|dfdS)NZinstallr)rV)rdirnamerrr_install_dir_fromszinstall_misc._install_dir_fromcCsmg|_|sdS|j|jxC|D];}|j||j|jjtjj|j|q*WdS)N)rrcrrfr\rLrMrv)rZfilelistfrrr _copy_filess  zinstall_misc._copy_filescCs|jS)N)r)rrrr get_outputsszinstall_misc.get_outputsN)r}r~r) rTryrzr{r*rrrrrrrrr|s     r|)r{r5rLrDZdistutils.errorsrZ distutilsrrrrrrr r|rrrrs$(PKq|]\ __pycache__/log.cpython-35.pycnu[ Yft@sdZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sseZdZeddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr 2/opt/alt/python35/lib64/python3.5/distutils/log.py__init__sz Log.__init__cCs|tttttfkr1tdt|||jkr|rP||}|tttfkrqtj }n tj }|j dkr|j }|j |dj|}|jd||jdS)Nz%s wrong log levelstrictbackslashreplacez%s )DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdouterrorsencodingencodedecodewriteflush)r levelmsgargsstreamrr r r _logs    zLog._logcGs|j|||dS)N)r#)r rr r!r r r log%szLog.logcGs|jt||dS)N)r#r)r r r!r r r debug(sz Log.debugcGs|jt||dS)N)r#r)r r r!r r r info+szLog.infocGs|jt||dS)N)r#r)r r r!r r r warn.szLog.warncGs|jt||dS)N)r#r)r r r!r r r error1sz Log.errorcGs|jt||dS)N)r#r)r r r!r r r fatal4sz Log.fatalN) __name__ __module__ __qualname__rr r#r$r%r&r'r(r)r r r r rs       rcCstj}|t_|S)N) _global_logr)roldr r r set_threshold?s  r/cCsL|dkrttn/|dkr2ttn|dkrHttdS)Nrrr)r/rrr)vr r r set_verbosityEs      r1)__doc__rrrrrrrr-r$r%r&r'r(r)r/r1r r r r s  )        PKq|]=J.3.3*__pycache__/sysconfig.cpython-35.opt-1.pycnu[ YfP @sdZddlZddlZddlZddlZddlmZejjej Z ejjej Z ejjej ZejjejZdejkrejjejdZn!ejjejjejZejdkr(ejjd,r(ejjejjeZd d Zeed dZerejdkrejjd-rejjejjeZd d ZeZdZyesejZWne k rYnXddZ!ddddZ"dddddZ#ddZ$ddZ%ddZ&dddZ'ej(dZ)ej(dZ*ej(dZ+dd d!Z,d"d#Z-da.d$d%Z/d&d'Z0d(d)Z1d*d+Z2dS).aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEnt\pcbuild\win32\pcbuild\amd64cCs=x6dD].}tjjtjj|d|rdSqWdS)N Setup.dist Setup.localModulesTF)rr)ospathisfilejoin)dfnr8/opt/alt/python35/lib64/python3.5/distutils/sysconfig.py_is_python_source_dir)s $r_homecCstrttSttS)N) _sys_homer project_baserrrr _python_build2s rcCstjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. N)sysversionrrrrget_python_versionDsrcCs|dkr|rtpt}tjdkrtrn|rCtpBtStjjt dd}tjj |Sdt t }tjj|d|Stjdkrtjj|dSt dtjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonincluderzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr name python_buildrrr r get_config_varnormpathr build_flagsr) plat_specificprefixZincdirZ python_dirrrrget_python_incLs  r)cCs|dkr9|r'|rtp!t}n|r3tp6t}tjdkr|sT|r]d}nd}tjj||dt}|r|Stjj|dSnTtjdkr|rtjj|dStjj|ddSnt d tjdS) aSReturn the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. Nrlib64librz site-packagesrZLibz?I don't know where Python installs its library on platform '%s') r r! EXEC_PREFIXPREFIXr r"r r rr)r' standard_libr(r+Z libpythonrrrget_python_libos(    r/cCs|jdkrtjdkrMtdsMddl}|jtdtdrAZccZcxxZoptZcflagsZccsharedZldsharedZ shlib_suffixarZar_flagsZnewccZcppr?Zcc_cmdrrrrBs\    0      rBcCsdtrBtjdkr3tjjtp'td}qQtp<t}ntdd}tjj|dS)z2Return full pathname of installed pyconfig.h file.rPCr'rz pyconfig-64.h)r#r r"r r rrr))inc_dirrrrget_config_h_filenames rKcCs_trtjjtptdStdddd}djtt }tjj||dS)zAReturn full pathname of installed Makefile from the Python build.Makefiler'rr.rz config-{}{}) r#r r r rrr/formatrr&)Zlib_dirZ config_filerrrget_makefile_filenames rNc Cs|dkri}tjd}tjd}x|j}|sFP|j|}|r|jdd\}}yt|}Wntk rYnX||| sZ    !      #+ I m  $  JPKq|]dd__pycache__/dist.cpython-35.pycnu[ Yf> @sdZddlZddlZddlZddlmZyddlZWnek rddZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZejd ZGd d d ZGd d d ZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$c@s$eZdZdZd~ddddgZdZdddddddddddddddddddddgZd>d?eDZddiZdd@dAZ dBdCZ dddDdEdFZ dGdHZ ddIdJZ dKdLZdMdNZdOdPZdQdRZddgdSdTZdUdVZdWdXZdYdZZd[d\Zd]d^Zd_d`ZddadbZddcddZdedfdgZejdhdiZdjdkZdldmZ dndoZ!dpdqZ"drdsZ#dtduZ$dvdwZ%dxdyZ&dzd{Z'd|d}Z(dS) DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. verbosevrun verbosely (default)quietq!run quietly (turns verbosity off)dry-runndon't actually do anythinghelphshow detailed help message no-user-cfgN-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package help-commandslist all available commandsnameprint package nameversionVprint package versionfullnameprint -authorprint the author's name author-email print the author's email address maintainerprint the maintainer's namemaintainer-email$print the maintainer's email addresscontact7print the maintainer's name if known, else the author's contact-email@print the maintainer's email address if known, else the author'surlprint the URL for this packagelicense print the license of the packagelicencealias for --license descriptionprint the package descriptionlong-description"print the long package description platformsprint the list of platforms classifiersprint the list of classifierskeywordsprint the list of keywordsprovides+print the list of packages/modules providedrequires+print the list of packages/modules required obsoletes0print the list of packages/modules made obsoletecCs g|]}t|dqS)r)r).0xrH3/opt/alt/python35/lib64/python3.5/distutils/dist.py ss zDistribution.cCsWd|_d|_d|_x!|jD]}t||dq%Wt|_x:|jjD],}d|}t||t|j|qXWi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|jd}|dk r|d=xV|jD]H\}}|j |}x*|jD]\} } d| f|| r:NcSsg|]}|jqSrH)strip)rFZelmrHrHrIrJ_s z1Distribution.finalize_options..,)r>r:)rVrTrstrrrR)rrrsrrHrHrIrqUs  zDistribution.finalize_optionsc Cspddlm}ddlm}|ro|r;|j}n |j}|j||j|jdt d|r|j|j |jddt dx|j D]}t |t rt||r|} n|j|} t| dr't | jtr'|j| jt| jn|j| j|jd | jt dqWt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r) gen_usage)rz Global options:rLz*Information display options (just display z!information, ignore any commands)rzOptions for '%s' command:N)distutils.corerrrrrrZ print_help common_usageprintrrrtyperrrmrrrrrrY) rrrrrrrrrMruklassrHrHrIrbs6      zDistribution._show_helpc Csddlm}|jrD|jtdt||jdSd}i}x|jD]}d||dr:rr<r@rBrDrN)r>r:)r<r@rBrD) rrZ help_commandsprint_commandsrrYrrerrVrTr) rrrrZany_display_optionsZis_display_optionoptionrwrxrrHrHrIrs,        z#Distribution.handle_display_optionscCst|dxt|D]l}|jj|}|sB|j|}y |j}Wntk rid}YnXtd|||fqWdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :z(no description available)z %-*s %sN)rrWrerr6AttributeError)rrrr max_lengthcmdrr6rHrHrIprint_command_lists    zDistribution.print_command_listcCsddl}|jj}i}x|D]}d||Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrz(no description available)) rrurrWrrerrr6r) rrrrrrrrvrr6rHrHrIget_command_lists(      zDistribution.get_command_listcCso|j}t|tsk|dkr*d}dd|jdD}d|krb|jdd||_|S)z9Return a list of packages from which commands are loaded.NrLcSs(g|]}|dkr|jqS)rL)r)rFZpkgrHrHrIrJs z5Distribution.get_command_packages..rzdistutils.commandr)rXrrrinsert)rrZpkgsrHrHrIget_command_packagess    z!Distribution.get_command_packagescCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk rww)YnXyt||}Wn+tk rt d|||fYnX||j|<|SWt d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) rWrer __import__rjr ImportErrorrVrr)rrrurZpkgnameZ module_nameZ klass_namemodulerHrHrIrs(     zDistribution.get_command_classcCs|jj|}| r|rtr6|jd||j|}||}|j||jd|xz|jD]l\}\}}tr}|jd|||fydd|jD}Wntk rg}YnXy |j}Wntk ri}YnXyt|t } ||kr| rt |||t | nf||krG| rGt ||t |n;t ||rit |||nt d|||fWqKtk r} zt | WYdd} ~ XqKXqKWdS)aySet the options for 'command_obj' from 'option_dict'. Basically this means copying elements of a dictionary ('option_dict') to attributes of an instance ('command'). 'command_obj' must be a Command instance. If 'option_dict' is not supplied, uses the standard option dictionary for this command (from 'self.command_options'). Nz# setting options for '%s' command:z %s = %s (from %s)cSsg|]}t|qSrH)r)rForHrHrIrJqs z5Distribution._set_command_options..z1error in %s: command '%s' has no such option '%s')get_command_namergr rrfZboolean_optionsrrrrrRrrmrr) rrrcZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringryrHrHrIr]s>         z!Distribution._set_command_optionsrcCsddlm}t||s7|}|j|}n |j}|jsP|S|jd|_d|j|<|j||rx$|j D]}|j ||qW|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. r)r) rrrrrZ finalizedZinitialize_optionsrdrZget_sub_commandsreinitialize_command)rrruZreinit_subcommandsrrsubrHrHrIrs      z!Distribution.reinitialize_commandcCstj||dS)N)r )rrrylevelrHrHrIrszDistribution.announcecCs%x|jD]}|j|q WdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)r run_command)rrrrHrHrI run_commandsszDistribution.run_commandscCsZ|jj|rdStjd||j|}|j|jd|j|Nr?)r@NrA)rBNrC)rDNrE))r __module__ __qualname____doc__rrrrQrr|rgrrrrrrrqrrrrrrrrrrr INFOrrrrrrrrrrrrHrHrHrIr s       0: C [ 1 (  ! " &,)        r c@sueZdZdZdOZdddZddZddZddZdd Z d!d"Z d#d$Z d%d&Z d'd(Z d)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZeZd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZ dMdNZ!dS)PrSz]Dummy class to hold the distribution meta-data: name, version, author, and so forth. rrr$ author_emailr(maintainer_emailr0r2r6long_descriptionr>r:r"r, contact_emailr< download_urlr@rBrDNcCs|dk r"|jt|nd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenrrr$rr(rr0r2r6rr>r:r<r r@rBrD)rrrrHrHrIr|s&                 zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ n d |_ |d|_ |d|_dkr|dj d|_ |d|_|d|_|dkrx|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|S)NUNKNOWNrH)rr)ryrHrI _read_fields  z7DistributionMetadata.read_pkg_file.._read_fieldcs&j|d}|gkr"dS|S)N)Zget_all)rvalues)ryrHrI _read_list$s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionrrZsummaryr$Nz author-emailz home-pager2z download-urlr6r>rplatformZ classifierz1.1rBr@rD)rrrr6r$r(rrr0r2r rrr>r:r<rBr@rD)rrfilerrZmetadata_versionrH)ryrIr s:          z"DistributionMetadata.read_pkg_filec Cs?ttjj|dddd}|j|WdQRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwencodingzUTF-8N)r rrrwrite_pkg_file)rrZbase_dirZpkg_inforHrHrIwrite_pkg_infoNs z#DistributionMetadata.write_pkg_infocCsd}|js3|js3|js3|js3|jr9d}|jd||jd|j|jd|j|jd|j|jd|j |jd|j |jd |j |jd |j |jr|jd |jt |j}|jd |d j|j}|rW|jd||j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS)z9Write the PKG-INFO format data to a file object. z1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r@rBrDr<r rlget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)rrrrZ long_descr>rHrHrIrUs0 z#DistributionMetadata.write_pkg_filecCs,x%|D]}|jd||fqWdS)Nz%s: %s )rl)rrrrrrrHrHrIr ws z DistributionMetadata._write_listcCs |jp dS)Nr )r)rrrHrHrIr}szDistributionMetadata.get_namecCs |jp dS)Nz0.0.0)r)rrrHrHrIrsz DistributionMetadata.get_versioncCsd|j|jfS)Nz%s-%s)rr)rrrHrHrI get_fullnamesz!DistributionMetadata.get_fullnamecCs |jp dS)Nr )r$)rrrHrHrI get_authorszDistributionMetadata.get_authorcCs |jp dS)Nr )r)rrrHrHrIget_author_emailsz%DistributionMetadata.get_author_emailcCs |jp dS)Nr )r()rrrHrHrIget_maintainersz#DistributionMetadata.get_maintainercCs |jp dS)Nr )r)rrrHrHrIget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr )r(r$)rrrHrHrIrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr )rr)rrrHrHrIrsz&DistributionMetadata.get_contact_emailcCs |jp dS)Nr )r0)rrrHrHrIrszDistributionMetadata.get_urlcCs |jp dS)Nr )r2)rrrHrHrIrsz DistributionMetadata.get_licensecCs |jp dS)Nr )r6)rrrHrHrIrsz$DistributionMetadata.get_descriptioncCs |jp dS)Nr )r)rrrHrHrIrsz)DistributionMetadata.get_long_descriptioncCs |jp gS)N)r>)rrrHrHrIrsz!DistributionMetadata.get_keywordscCs|jpdgS)Nr )r:)rrrHrHrIr!sz"DistributionMetadata.get_platformscCs |jp gS)N)r<)rrrHrHrIr"sz$DistributionMetadata.get_classifierscCs |jp dS)Nr )r )rrrHrHrIget_download_urlsz%DistributionMetadata.get_download_urlcCs |jp gS)N)rB)rrrHrHrIr#sz!DistributionMetadata.get_requirescCs:ddl}x|D]}|jj|qW||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterB)rrrrr rHrHrI set_requiress  z!DistributionMetadata.set_requirescCs |jp gS)N)r@)rrrHrHrIr$sz!DistributionMetadata.get_providescCsMdd|D}x*|D]"}ddl}|jj|qW||_dS)NcSsg|]}|jqSrH)r)rFr rHrHrIrJs z5DistributionMetadata.set_provides..r)r,r-Zsplit_provisionr@)rrrr rrHrHrI set_providess   z!DistributionMetadata.set_providescCs |jp gS)N)rD)rrrHrHrIr%sz"DistributionMetadata.get_obsoletescCs:ddl}x|D]}|jj|qW||_dS)Nr)r,r-r.rD)rrrrr rHrHrI set_obsoletess  z"DistributionMetadata.set_obsoletes)rrr$rr(rr0r2r6rr>r:r"r,r r2r<r r@rBrD)"rrrrrUr|r rrr rrr&r'r(r)r*rrrrZ get_licencerrrr!r"r+r#r/r$r0r%r1rHrHrHrIrSsJ  4  "                       rScCs2g}x%|D]}|j|ddq W|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r)rMZ new_optionsZ help_tuplerHrHrIrs r)rrjrreZemailrrhrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrr Zdistutils.debugr compilerr rSrrHrHrHrIs(      PKq|]233#__pycache__/dir_util.cpython-35.pycnu[ Yfb@sdZddlZddlZddlmZmZddlmZiadddddZ dddd d Z ddddddd d Z d dZ ddddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logic Cst|ts"td|ftjj|}g}tjj|sX|dkr\|Stjtjj |r{|Stjj |\}}|g}xK|r|rtjj| rtjj |\}}|j d|qWx|D]}tjj ||}tjj |} tj| r0q|dkrLt jd||sytj||Wnftk r} zF| jtjkotjj|std|| jdfWYdd} ~ XnX|j|dt|  "  $- r$cCsvt}x6|D].}|jtjj|tjj|qWx-t|D]}t||d|d|qOWdS)aCreate all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. rrN)setaddr r rdirnamesortedr$)Zbase_dirfilesrrrZneed_dirfiledirr"r"r# create_treePs  ,r,cCsddlm}| r:tjj| r:td|ytj|} WnMtk r} z-|rqg} ntd|| jfWYdd} ~ XnX|st |d|g} x(| D] } tjj || } tjj || }| j drq|rntjj | rntj | }|dkrHtjd |||s^tj||| j|qtjj| r| jt| |||||d|d |q|| ||||d|d || j|qW| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sNrz.nfsrzlinking %s -> %sr)Zdistutils.file_utilr-r r r rlistdirrstrerrorr$r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcZdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr-nameseZoutputsnZsrc_nameZdst_nameZ link_destr"r"r#r5csH  )     r5cCsxwtj|D]f}tjj||}tjj|r`tjj| r`t||q|jtj|fqW|jtj |fdS)zHelper for remove_tree().N) r r.r rr r1_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr"r"r#r;s %r;cCs|dkrtjd||r&dSg}t||x|D]}y?|d|dtjj|d}|tkrt|=Wq@tk r}ztjd||WYdd}~Xq@Xq@WdS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr;r r rrrwarn)Z directoryrrr>cmdrr!r"r"r# remove_trees     rBcCsItjj|\}}|ddtjkrE||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver"r"r#ensure_relativesrE)__doc__r rZdistutils.errorsrrZ distutilsrrr$r,r5r;rBrEr"r"r"r#s  ?D PKq|]WJJ(__pycache__/msvc9compiler.cpython-35.pycnu[ Yfw@sdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"d'kZ#e#r!d Z$d Z%d Z&nd Z$dZ%dZ&ddddddiZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,dd Z-dd!d"Z.e*Z/e/d#kred$e/Gd%d&d&e Z0dS)(a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32 z1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86z win-amd64amd64zwin-ia64Zia64c@sveZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCsMx:tD]2}|j||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedrz$(FrameworkVersion)) r@r;NET_BASErr WINSDK_BASErrrr rrr9)r=r>prhrrrrrr<s.       zMacroExpander.load_macroscCs6x/|jjD]\}}|j||}qW|S)N)r9itemsreplace)r=r1r%vrrrsubszMacroExpander.subN)r2r3r4r?r@r<rIrrrrr8{s    r8cCsd}tjj|}|d kr(dS|t|}tj|djdd\}}t|dd d}|dkr|d7}t|ddd }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.rN r g$@r)sysr>findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions %    rWcCsFg}x9|D]1}tjj|}||kr |j|q W|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osrnormpathr!)pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r[cCsX|jtj}g}x'|D]}||kr|j|qWtjj|}|S)z8Remove duplicate values of an environment variable. )rSrXpathsepr!join)ZvariableZoldListZnewListr$Z newVariablerrrremoveDuplicatess  r^c Cs^t|}ytjd|d}Wn%tk rKtjdd}YnX| sftjj| r d|}tj j |d}|rtjj|rtjj |tj tj d}tjj |}tjj|s tjd|dSntjd||s"tjd dStjj |d }tjj|rM|Stjd dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCrAz%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r:rrrr debugrXrisdirenvirongetr]pardirabspathisfile)r>r;rAZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2       !  rgc Cst|}td}i}|dkr6tdtjd||tjd||fd tjd tj}z|j\}}|j d krt|j d |j d }x|j d D]}t j |}d|krq|j}|j dd\} } | j} | |kr| jtjrQ| dd} t| || ZarchrfZ interestingresultpopenrkrllinerr+rrrquery_vcvarsalls<           r~g @z(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZdddddZdddZddddZdddddddddZdddddZdddddddddddd ZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zdd*d+Zd,d-ZdS). MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCsPtj||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr?VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r=verboseZdry_runZforcerrrr?Js     zMSVCCompiler.__init__NcCs|j std|dkr+t}d%}||krPtd|fdtjkrdtjkr|jdrd|_d |_d |_ d |_ d |_ n |tks|dkrt |}nt td t |}t t|}|djtj|_|dtjd<|dtjd|)rz*\s*zI|)w) openreadrvrerDOTALLrIsearchwriteOSError)r=Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.      z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r=dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCstddS)NzsN    (        >.   #)  PKq|]-!-!-__pycache__/fancy_getopt.cpython-35.opt-2.pycnu[ ]xE@sBddlZddlZddlZddlZddlTdZejdeZejdeefZe j ddZ Gdd d Z d d Z d d ejDZddZddZGdddZedkr>dZxKddddfD]7ZedeedjeeeeqWdS)N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdddZddZddZdddd Zd d Zd d ZddZ ddZ ddZ ddZ ddddZ ddZdddZddddZdS) FancyGetoptNcCsq||_i|_|jr%|ji|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr1/opt/alt/python35/lib64/python3.5/fancy_getopt.py__init__)s           zFancyGetopt.__init__cCs6|jjx"|jD]}||j|d= 2z:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyr,r,)r r r rrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchrr)rrlongshorthelpr-Zalias_torrr_grok_option_tables^     "  !         zFancyGetopt._grok_option_tablec Cs|dkrtjdd}|dkr=t}d}nd}|jdj|j}y"tj|||j\}}Wn4tjk r}zt |WYdd}~XnXx|D]\}}t |dkr|ddkr|j |d}n|dd}|j j |} | r/| }|j|si|jj |} | rc| }d}nd}|j|} |r|jj | dk rt|| dd}t|| ||jj||fqW|r||fS|SdS)Nr)TF r(rr)sysargv OptionDummyr8joinr getoptr errorZDistutilsArgErrorr.r r r2rr rr-getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr"valr attrrrrr>sB     ""    zFancyGetopt.getoptcCs)|jdkrtdn|jSdS)Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orderszFancyGetopt.get_option_ordercCsd}xs|jD]h}|d}|d}t|}|ddkrP|d}|dk rf|d}||kr|}qW|ddd}d}||} d|} |r|g} n dg} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkrh| rN| jd ||| dfq| jd ||fnHd ||f}| r| jd ||| dfn| jd |x)| ddD]}| j| |qWqW| S)Nrr)r*r(Nr9zOption summary:r&z --%-*s %sz --%-*s z%s (-%s)z --%-*sr,r,r,)rr. wrap_textr)rheaderZmax_optrr5r6lZ opt_widthZ line_width text_widthZ big_indentlinesr7textZ opt_namesrrr generate_helpsF             ! zFancyGetopt.generate_helpcCsD|dkrtj}x(|j|D]}|j|dq%WdS)N )r:stdoutrQwrite)rrLfilelinerrr print_helphs  zFancyGetopt.print_help)__name__ __module__ __qualname__rrrrrrr#r$r%r8r>rHrQrWrrrrrs (       M= OrcCs)t|}|j||j||S)N)rr%r>)optionsZ negative_optrCrBparserrrr fancy_getoptos  r]cCsi|]}dt|qS)r9)ord).0Z_wscharrrr us r`cCsv|dkrgSt||kr)|gS|j}|jt}tjd|}dd|D}g}x|rqg}d}xq|rt|d}|||kr|j|d|d=||}q|r|dddkr|d =PqW|rX|dkr=|j|dd||d|d|d<|dddkrX|d=|jdj|qrW|S) Nz( +|-+)cSsg|]}|r|qSrr)r_Zchrrr s zwrap_text..rr)r9r,r,)r. expandtabsrWS_TRANSresplitrr=)rPwidthchunksrOcur_linecur_lenrMrrrrKws:      rKcCs |jtS)N)rr)r"rrrtranslate_longoptsrkc@seZdZgddZdS)r<cCs%x|D]}t||dqWdS)N)rA)rr[r"rrrrs zOptionDummy.__init__N)rXrYrZrrrrrr<s r<__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].) (z width: %drR)r:stringrer>Zdistutils.errorsZ longopt_patcompiler3Z neg_alias_rer1 maketransrrr] whitespacerdrKrkr<rXrPwprintr=rrrr s&$  S  6  PKq|]SW__pycache__/core.cpython-35.pycnu[ Yf"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad4Zd5Zd/d0Zdd1d2d3ZdS)6a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstjj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr3/opt/alt/python35/lib64/python3.5/distutils/core.py gen_usage sr distclassr script_argsoptionsnameversionauthor author_email maintainermaintainer_emailurllicense descriptionlong_descriptionkeywords platforms classifiers download_urlrequiresprovides obsoletessources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_args swig_optsexport_symbolsdependslanguagec,Ks|jd}|r|d=nt}d|krNtjjtjd|dd|krt d|nt d |d|fWYdd}~XnXt d kr|S|j t rt d |jt d kr*|Sy|j}WnBtk r~}z"t t|jd |WYdd}~XnXt rt d|jt dkr|S|ry|jWntk rt dYntk r7}z;t rtjjd|fnt d|fWYdd}~XnMttfk r}z't r[nt dt|WYdd}~XnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`%    '     0    %)rGruncCs|d krtd|f|atj}d|i}i}yvz_|tjd<|dk rr|tjd ds2      qPKq|]dd%__pycache__/dist.cpython-35.opt-1.pycnu[ Yf> @sdZddlZddlZddlZddlmZyddlZWnek rddZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZejd ZGd d d ZGd d d ZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$c@s$eZdZdZd~ddddgZdZdddddddddddddddddddddgZd>d?eDZddiZdd@dAZ dBdCZ dddDdEdFZ dGdHZ ddIdJZ dKdLZdMdNZdOdPZdQdRZddgdSdTZdUdVZdWdXZdYdZZd[d\Zd]d^Zd_d`ZddadbZddcddZdedfdgZejdhdiZdjdkZdldmZ dndoZ!dpdqZ"drdsZ#dtduZ$dvdwZ%dxdyZ&dzd{Z'd|d}Z(dS) DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. verbosevrun verbosely (default)quietq!run quietly (turns verbosity off)dry-runndon't actually do anythinghelphshow detailed help message no-user-cfgN-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package help-commandslist all available commandsnameprint package nameversionVprint package versionfullnameprint -authorprint the author's name author-email print the author's email address maintainerprint the maintainer's namemaintainer-email$print the maintainer's email addresscontact7print the maintainer's name if known, else the author's contact-email@print the maintainer's email address if known, else the author'surlprint the URL for this packagelicense print the license of the packagelicencealias for --license descriptionprint the package descriptionlong-description"print the long package description platformsprint the list of platforms classifiersprint the list of classifierskeywordsprint the list of keywordsprovides+print the list of packages/modules providedrequires+print the list of packages/modules required obsoletes0print the list of packages/modules made obsoletecCs g|]}t|dqS)r)r).0xrH3/opt/alt/python35/lib64/python3.5/distutils/dist.py ss zDistribution.cCsWd|_d|_d|_x!|jD]}t||dq%Wt|_x:|jjD],}d|}t||t|j|qXWi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|jd}|dk r|d=xV|jD]H\}}|j |}x*|jD]\} } d| f|| r:NcSsg|]}|jqSrH)strip)rFZelmrHrHrIrJ_s z1Distribution.finalize_options..,)r>r:)rVrTrstrrrR)rrrsrrHrHrIrqUs  zDistribution.finalize_optionsc Cspddlm}ddlm}|ro|r;|j}n |j}|j||j|jdt d|r|j|j |jddt dx|j D]}t |t rt||r|} n|j|} t| dr't | jtr'|j| jt| jn|j| j|jd | jt dqWt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r) gen_usage)rz Global options:rLz*Information display options (just display z!information, ignore any commands)rzOptions for '%s' command:N)distutils.corerrrrrrZ print_help common_usageprintrrrtyperrrmrrrrrrY) rrrrrrrrrMruklassrHrHrIrbs6      zDistribution._show_helpc Csddlm}|jrD|jtdt||jdSd}i}x|jD]}d||dr:rr<r@rBrDrN)r>r:)r<r@rBrD) rrZ help_commandsprint_commandsrrYrrerrVrTr) rrrrZany_display_optionsZis_display_optionoptionrwrxrrHrHrIrs,        z#Distribution.handle_display_optionscCst|dxt|D]l}|jj|}|sB|j|}y |j}Wntk rid}YnXtd|||fqWdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :z(no description available)z %-*s %sN)rrWrerr6AttributeError)rrrr max_lengthcmdrr6rHrHrIprint_command_lists    zDistribution.print_command_listcCsddl}|jj}i}x|D]}d||Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrz(no description available)) rrurrWrrerrr6r) rrrrrrrrvrr6rHrHrIget_command_lists(      zDistribution.get_command_listcCso|j}t|tsk|dkr*d}dd|jdD}d|krb|jdd||_|S)z9Return a list of packages from which commands are loaded.NrLcSs(g|]}|dkr|jqS)rL)r)rFZpkgrHrHrIrJs z5Distribution.get_command_packages..rzdistutils.commandr)rXrrrinsert)rrZpkgsrHrHrIget_command_packagess    z!Distribution.get_command_packagescCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk rww)YnXyt||}Wn+tk rt d|||fYnX||j|<|SWt d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) rWrer __import__rjr ImportErrorrVrr)rrrurZpkgnameZ module_nameZ klass_namemodulerHrHrIrs(     zDistribution.get_command_classcCs|jj|}| r|rtr6|jd||j|}||}|j||jd|xz|jD]l\}\}}tr}|jd|||fydd|jD}Wntk rg}YnXy |j}Wntk ri}YnXyt|t } ||kr| rt |||t | nf||krG| rGt ||t |n;t ||rit |||nt d|||fWqKtk r} zt | WYdd} ~ XqKXqKWdS)aySet the options for 'command_obj' from 'option_dict'. Basically this means copying elements of a dictionary ('option_dict') to attributes of an instance ('command'). 'command_obj' must be a Command instance. If 'option_dict' is not supplied, uses the standard option dictionary for this command (from 'self.command_options'). Nz# setting options for '%s' command:z %s = %s (from %s)cSsg|]}t|qSrH)r)rForHrHrIrJqs z5Distribution._set_command_options..z1error in %s: command '%s' has no such option '%s')get_command_namergr rrfZboolean_optionsrrrrrRrrmrr) rrrcZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringryrHrHrIr]s>         z!Distribution._set_command_optionsrcCsddlm}t||s7|}|j|}n |j}|jsP|S|jd|_d|j|<|j||rx$|j D]}|j ||qW|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. r)r) rrrrrZ finalizedZinitialize_optionsrdrZget_sub_commandsreinitialize_command)rrruZreinit_subcommandsrrsubrHrHrIrs      z!Distribution.reinitialize_commandcCstj||dS)N)r )rrrylevelrHrHrIrszDistribution.announcecCs%x|jD]}|j|q WdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)r run_command)rrrrHrHrI run_commandsszDistribution.run_commandscCsZ|jj|rdStjd||j|}|j|jd|j|Nr?)r@NrA)rBNrC)rDNrE))r __module__ __qualname____doc__rrrrQrr|rgrrrrrrrqrrrrrrrrrrr INFOrrrrrrrrrrrrHrHrHrIr s       0: C [ 1 (  ! " &,)        r c@sueZdZdZdOZdddZddZddZddZdd Z d!d"Z d#d$Z d%d&Z d'd(Z d)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZeZd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZ dMdNZ!dS)PrSz]Dummy class to hold the distribution meta-data: name, version, author, and so forth. rrr$ author_emailr(maintainer_emailr0r2r6long_descriptionr>r:r"r, contact_emailr< download_urlr@rBrDNcCs|dk r"|jt|nd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenrrr$rr(rr0r2r6rr>r:r<r r@rBrD)rrrrHrHrIr|s&                 zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ n d |_ |d|_ |d|_dkr|dj d|_ |d|_|d|_|dkrx|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|S)NUNKNOWNrH)rr)ryrHrI _read_fields  z7DistributionMetadata.read_pkg_file.._read_fieldcs&j|d}|gkr"dS|S)N)Zget_all)rvalues)ryrHrI _read_list$s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionrrZsummaryr$Nz author-emailz home-pager2z download-urlr6r>rplatformZ classifierz1.1rBr@rD)rrrr6r$r(rrr0r2r rrr>r:r<rBr@rD)rrfilerrZmetadata_versionrH)ryrIr s:          z"DistributionMetadata.read_pkg_filec Cs?ttjj|dddd}|j|WdQRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwencodingzUTF-8N)r rrrwrite_pkg_file)rrZbase_dirZpkg_inforHrHrIwrite_pkg_infoNs z#DistributionMetadata.write_pkg_infocCsd}|js3|js3|js3|js3|jr9d}|jd||jd|j|jd|j|jd|j|jd|j |jd|j |jd |j |jd |j |jr|jd |jt |j}|jd |d j|j}|rW|jd||j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS)z9Write the PKG-INFO format data to a file object. z1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r@rBrDr<r rlget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)rrrrZ long_descr>rHrHrIrUs0 z#DistributionMetadata.write_pkg_filecCs,x%|D]}|jd||fqWdS)Nz%s: %s )rl)rrrrrrrHrHrIr ws z DistributionMetadata._write_listcCs |jp dS)Nr )r)rrrHrHrIr}szDistributionMetadata.get_namecCs |jp dS)Nz0.0.0)r)rrrHrHrIrsz DistributionMetadata.get_versioncCsd|j|jfS)Nz%s-%s)rr)rrrHrHrI get_fullnamesz!DistributionMetadata.get_fullnamecCs |jp dS)Nr )r$)rrrHrHrI get_authorszDistributionMetadata.get_authorcCs |jp dS)Nr )r)rrrHrHrIget_author_emailsz%DistributionMetadata.get_author_emailcCs |jp dS)Nr )r()rrrHrHrIget_maintainersz#DistributionMetadata.get_maintainercCs |jp dS)Nr )r)rrrHrHrIget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr )r(r$)rrrHrHrIrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr )rr)rrrHrHrIrsz&DistributionMetadata.get_contact_emailcCs |jp dS)Nr )r0)rrrHrHrIrszDistributionMetadata.get_urlcCs |jp dS)Nr )r2)rrrHrHrIrsz DistributionMetadata.get_licensecCs |jp dS)Nr )r6)rrrHrHrIrsz$DistributionMetadata.get_descriptioncCs |jp dS)Nr )r)rrrHrHrIrsz)DistributionMetadata.get_long_descriptioncCs |jp gS)N)r>)rrrHrHrIrsz!DistributionMetadata.get_keywordscCs|jpdgS)Nr )r:)rrrHrHrIr!sz"DistributionMetadata.get_platformscCs |jp gS)N)r<)rrrHrHrIr"sz$DistributionMetadata.get_classifierscCs |jp dS)Nr )r )rrrHrHrIget_download_urlsz%DistributionMetadata.get_download_urlcCs |jp gS)N)rB)rrrHrHrIr#sz!DistributionMetadata.get_requirescCs:ddl}x|D]}|jj|qW||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterB)rrrrr rHrHrI set_requiress  z!DistributionMetadata.set_requirescCs |jp gS)N)r@)rrrHrHrIr$sz!DistributionMetadata.get_providescCsMdd|D}x*|D]"}ddl}|jj|qW||_dS)NcSsg|]}|jqSrH)r)rFr rHrHrIrJs z5DistributionMetadata.set_provides..r)r,r-Zsplit_provisionr@)rrrr rrHrHrI set_providess   z!DistributionMetadata.set_providescCs |jp gS)N)rD)rrrHrHrIr%sz"DistributionMetadata.get_obsoletescCs:ddl}x|D]}|jj|qW||_dS)Nr)r,r-r.rD)rrrrr rHrHrI set_obsoletess  z"DistributionMetadata.set_obsoletes)rrr$rr(rr0r2r6rr>r:r"r,r r2r<r r@rBrD)"rrrrrUr|r rrr rrr&r'r(r)r*rrrrZ get_licencerrrr!r"r+r#r/r$r0r%r1rHrHrHrIrSsJ  4  "                       rScCs2g}x%|D]}|j|ddq W|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r)rMZ new_optionsZ help_tuplerHrHrIrs r)rrjrreZemailrrhrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrr Zdistutils.debugr compilerr rSrrHrHrHrIs(      PKq|]] *__pycache__/extension.cpython-35.opt-1.pycnu[ Yf)@sMdZddlZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@sXeZdZdZddddddddddddddddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKs|t|tstdt|to@tdd|DsOtd||_||_|pjg|_|pyg|_|pg|_ |pg|_ |pg|_ |pg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrxdd|D}djt|}d |}tj|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr8/opt/alt/python35/lib64/python3.5/distutils/extension.py ksz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|]}t|qSr)repr)rZoptionrrr s z&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Ws4       zExtension.__init__cCs)d|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s   zExtension.__repr__)__name__r)r*__doc__r'r,rrrrrs ?!rcCsddlm}m}m}ddlm}ddlm}||}||ddddddd dd d}zg}x|j} | d krP|j | rq~| d| d(kod knr|j d | q~|| |} || } | d} t | g} d } x`| dd D]N}| d k rT| j |d } q,t jj|d}|dd}|dd }|d)kr| jj |q,|dkr| jj |q,|dkr9|jd}|d*kr| jj |d fqz| jj |d|||dd fq,|dkrX| jj |q,|dkrw| jj |q,|dkr| jj |q,|dkr| jj |q,|dkr| jj |q,|dkr| j} q,|dkr| j} q,|d kr| j} q,|d!krJ| jj ||sz| j} q,|d+kri| jj |q,|j d'|q,W|j | q~WWd |jX|S),z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quotedZstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet.c.cc.cpp.cxx.c++.m.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u.a.so.sl.o.dylibzunrecognized argument '%s')r7r8r9r:r;r<r=rD)r?r@rArBrC)Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files    $                       rU)r.rHsysr"rrUrrrrs    zPKq|]] $__pycache__/extension.cpython-35.pycnu[ Yf)@sMdZddlZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@sXeZdZdZddddddddddddddddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKs|t|tstdt|to@tdd|DsOtd||_||_|pjg|_|pyg|_|pg|_ |pg|_ |pg|_ |pg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrxdd|D}djt|}d |}tj|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr8/opt/alt/python35/lib64/python3.5/distutils/extension.py ksz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|]}t|qSr)repr)rZoptionrrr s z&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Ws4       zExtension.__init__cCs)d|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s   zExtension.__repr__)__name__r)r*__doc__r'r,rrrrrs ?!rcCsddlm}m}m}ddlm}ddlm}||}||ddddddd dd d}zg}x|j} | d krP|j | rq~| d| d(kod knr|j d | q~|| |} || } | d} t | g} d } x`| dd D]N}| d k rT| j |d } q,t jj|d}|dd}|dd }|d)kr| jj |q,|dkr| jj |q,|dkr9|jd}|d*kr| jj |d fqz| jj |d|||dd fq,|dkrX| jj |q,|dkrw| jj |q,|dkr| jj |q,|dkr| jj |q,|dkr| jj |q,|dkr| j} q,|dkr| j} q,|d kr| j} q,|d!krJ| jj ||sz| j} q,|d+kri| jj |q,|j d'|q,W|j | q~WWd |jX|S),z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quotedZstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet.c.cc.cpp.cxx.c++.m.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u.a.so.sl.o.dylibzunrecognized argument '%s')r7r8r9r:r;r<r=rD)r?r@rArBrC)Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files    $                       rU)r.rHsysr"rrUrrrrs    zPKq|]O8,8,-__pycache__/fancy_getopt.cpython-35.opt-1.pycnu[ YfxE@sHdZddlZddlZddlZddlZddlTdZejdeZejdeefZ e j ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrDdZxKddddfD]7Zedeedjeeeeq WdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZddd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddddZddZdddZddddZdS) FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsq||_i|_|jr%|ji|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr;/opt/alt/python35/lib64/python3.5/distutils/fancy_getopt.py__init__)s           zFancyGetopt.__init__cCs6|jjx"|jD]}||j|d= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyr,r,)r r r rrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchrr)rrlongshorthelpr-Zalias_torrr_grok_option_tables^     "  !         zFancyGetopt._grok_option_tablec Cs|dkrtjdd}|dkr=t}d}nd}|jdj|j}y"tj|||j\}}Wn4tjk r}zt |WYdd}~XnXx|D]\}}t |dkr|ddkr|j |d}n|dd}|j j |} | r/| }|j|si|jj |} | rc| }d}nd}|j|} |r|jj | dk rt|| dd}t|| ||jj||fqW|r||fS|SdS) aParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. Nr)TF r(rr)sysargv OptionDummyr8joinr getoptr errorZDistutilsArgErrorr.r r r2rr rr-getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr"valr attrrrrr>sB     ""    zFancyGetopt.getoptcCs)|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orderszFancyGetopt.get_option_ordercCsd}xs|jD]h}|d}|d}t|}|ddkrP|d}|dk rf|d}||kr|}qW|ddd}d}||} d|} |r|g} n d g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkrh| rN| jd ||| dfq| jd ||fnHd ||f}| r| jd ||| dfn| jd|x)| ddD]}| j| |qWqW| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr)r*Nr(Nr9zOption summary:r&z --%-*s %sz --%-*s z%s (-%s)z --%-*sr,r,r,)rr. wrap_textr)rheaderZmax_optrr5r6lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr7textZ opt_namesrrr generate_helpsF             ! zFancyGetopt.generate_helpcCsD|dkrtj}x(|j|D]}|j|dq%WdS)N )r:stdoutrPwrite)rrLfilelinerrr print_helphs  zFancyGetopt.print_help)__name__ __module__ __qualname____doc__rrrrrrr#r$r%r8r>rHrPrVrrrrrs (       M= OrcCs)t|}|j||j||S)N)rr%r>)optionsZ negative_optrCrBparserrrr fancy_getoptos  r]cCsi|]}dt|qS)r9)ord).0Z_wscharrrr us r`cCsv|dkrgSt||kr)|gS|j}|jt}tjd|}dd|D}g}x|rqg}d}xq|rt|d}|||kr|j|d|d=||}q|r|d ddkr|d =PqW|rX|dkr=|j|dd||d|d|d<|dddkrX|d=|jdj|qrW|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|]}|r|qSrr)r_Zchrrr s zwrap_text..rr)r9r,r,)r. expandtabsrWS_TRANSresplitrr=)rOwidthZchunksrNZcur_lineZcur_lenrMrrrrKws:      rKcCs |jtS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )rr)r"rrrtranslate_longoptsrhc@s%eZdZdZgddZdS)r<z_Dummy class just used as a place to hold command-line option values as instance attributes.cCs%x|D]}t||dqWdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rA)rr[r"rrrrs zOptionDummy.__init__N)rWrXrYrZrrrrrr<s r<__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].) (z width: %drQ)rZr:stringrer>Zdistutils.errorsZ longopt_patcompiler3Z neg_alias_rer1 maketransrrr]Z whitespacerdrKrhr<rWrOwprintr=rrrr s($  S  6  PKq|]n% % #__pycache__/dep_util.cpython-35.pycnu[ Yf @sMdZddlZddlmZddZddZdd d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCstjj|s.tdtjj|tjj|sDdSddlm}tj||}tj||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r 7/opt/alt/python35/lib64/python3.5/distutils/dep_util.pynewer srcCst|t|kr$tdg}g}xStt|D]?}t||||rC|j|||j||qCW||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise s rerrorcCstjj|sdSddlm}tj||}xx|D]l}tjj|s|dkrgn"|dkryq@n|dkrdStj||}||kr@dSq@WdSdS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rr)rrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s      r)__doc__rZdistutils.errorsrrrrr r r r s    PKq|]gS@@%__pycache__/util.cpython-35.opt-1.pycnu[ YfP @sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZdaddZddZdddZdaaaddZddZdddddZddZdddddddddZd d!Zdddd"d#Z ddddd$d%Z!Gd&d'd'Z"dS)(zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorcCstjdkrd}tjj|}|d*kr:tjStjjd|}tj|t||j}|dkrdS|dkrdStjSd tjkrtjd Stjd kst td  rtjStj \}}}}}|jj d d }|j dd}|j d d}|dddkrTd||fS|dddkr|ddkrd}dt |dd|ddf}ddddi} |d | tj 7}n|dd!d"krd||fS|ddd#krd$|||fS|dd%d&krrd&}tjd'tj} | j|} | r| j}nX|dd%d(krddl} ddl} | j| jj|||\}}}d)|||fS)+aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. for IRIX the architecture isn't particularly important (IRIX only runs on SGI hardware), but for Linux the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u irix-5.3 irix64-6.2 Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win-ia64 (64bit Windows on Itanium) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntz bit ()amd64z win-amd64itaniumzwin-ia64_PYTHON_HOST_PLATFORMposixuname/ _-Nlinuxz%s-%ssunosr5solarisz%d.%si32bitl64bitz.%sirixaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionfindplatformlenlowerenvironhasattrrreplaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigget_platform_osx sysconfigget_config_vars)prefixijlookosnamehostreleaser'machinebitnessrel_remr6 distutilsrF3/opt/alt/python35/lib64/python3.5/distutils/util.py get_platformsX #   ( rHcCstjdkr|S|s|S|ddkr=td||ddkr]td||jd}xd|kr|jdqoW|stjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. rrzpath '%s' cannot be absoluterzpath '%s' cannot end with '/'.r#)r$sep ValueErrorsplitremovecurdirpathjoin)pathnamepathsrFrFrG convert_pathos rScCstjdkrTtjj|s4tjj||Stjj||ddSnmtjdkrtjj|\}}|ddkr|dd}tjj||StdtjdS)a Return 'pathname' with 'new_root' prepended. If 'pathname' is relative, this is equivalent to "os.path.join(new_root,pathname)". Otherwise, it requires making 'pathname' relative and then joining the two, which is tricky on DOS/Windows and Mac OS. r rNrr\z!nothing known about platform '%s')r$r%rOisabsrP splitdriver)Znew_rootrQZdriverOrFrFrG change_roots rWcCs}tr dStjdkrTdtjkrTddl}|jtjdtjd._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)r]r1subKeyErrorrK)sr_r`varrFrFrG subst_varss rezerror: cCs|t|S)N)r^)excr:rFrFrGgrok_environment_errorsrgcCs8tjdtjatjdatjdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r1r2string whitespace _wordchars_re _squote_re _dquote_rerFrFrFrG _init_regexsrmcCstdkrt|j}g}d}x|rtj||}|j}|t|kr||j|d|P||tjkr|j|d|||dj }d}n||dkr|d|||dd}|d}n||dkr)t j||}n9||dkrNt j||}nt d|||dkrt d|||j\}}|d|||d|d||d}|jd }|t|kr.|j|Pq.W|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. NrrTr'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rjrmstripr4endr*appendrhrilstriprkrl RuntimeErrorrKspan)rcZwordsposrDrqZbegrFrFrG split_quoteds@     "  4 rwcCsj|dkrId|j|f}|dddkrI|ddd}tj||sf||dS) aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rrz,)rr rx)__name__rinfo)funcargsmsgverbosedry_runrFrFrGexecutes  rcCsC|j}|dkrdS|dkr,dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. yyesttrueon1rnnoffalseoff0rzinvalid truth value %rN)rrrrrr)rrrrrr)r+rK)valrFrFrG strtobool0s    rrcCstjrtd|dkr3to0|dk}|sy&ddlm}|d\} } Wn5tk rddlm} d| d} } YnXtj d| |s7| dk rt j | d} nt | d} | j d | j d jtt|d | j d |||||f| jtj| g} |d kre| jd dn|dkr| jd dt| d|tt j| fd| d|nfddlm}xS|D]K}|dddkrq|dkr)|dkrdn|}tjj|d|}ntjj|}|}|r|dt||krytd||f|t|d}|rt jj||}t jj|}|r|st ||rtj d|||s||||qtj!d||qWdS)a~Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. zbyte-compiling is disabled.Nr)mkstempz.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) rz-Orz-OOrz removing %s)r2rr optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)"r&dont_write_bytecoder __debug__Ztempfiler ImportErrorrrrzr$fdopenopenwriterPmapreprclose executableinsertrrrM py_compiler2 importlibutilcache_from_sourcer*rKrObasenamerdebug)Zpy_filesoptimizeZforcer:Zbase_dirr~rZdirectrZ script_fdZ script_namerZscriptcmdr2fileZoptcfiledfileZ cfile_baserFrFrG byte_compile@sn"    #        rcCs"|jd}d}|j|S)zReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline.  rz z )rLrP)headerlinesrJrFrFrG rfc822_escapesrcCsw|s dSddlm}m}Gddd|}|dkrN|d}||d|}|j|dd dS) a Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.Nr)RefactoringToolget_fixers_from_packagec@s4eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj||dS)N)rerror)selfr}r|kwrFrFrG log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj||dS)N)rrz)rr}r|rFrFrG log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj||dS)N)rr)rr}r|rFrFrG log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)ry __module__ __qualname__rrrrFrFrFrGDistutilsRefactoringTools   rz lib2to3.fixesoptionsrT)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrrFrFrGrun_2to3s  rcCssddlm}ddlm}ddlm}|} tj} tj|z| j Wdtj| X| j | j dd<|rx6|j D](} | j } | sq| j| qWg} xw| j D]l} tjj|| }|tjj||tjj|| |dd}|dr| j|qWtdd | Dd |d |d || S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNupdatercSs+g|]!}|jjdr|qS)z.py)r+endswith).0fnrFrFrG s z$copydir_run_2to3..rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrr$getcwdchdirfindallZallfilesr splitlinesrpZprocess_template_linerOrPdirnamerrr)srcdesttemplaterrrrrrZfilelistrNlineZcopiedfilenameZoutnameresrFrFrGcopydir_run_2to3s4    $ rc@s4eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jS)N)rrrr)rrrFrFrGr)szMixin2to3.run_2to3)ryrr__doc__rrrrrFrFrFrGrs r)#rr$r1importlib.utilrr&rhZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrrErrrHrSrWrYr]rergrjrkrlrmrwrrrrrrrrFrFrFrGs>      ]      =   PKq|]*[)__pycache__/__init__.cpython-35.opt-1.pycnu[ Yf@s5dZddlZejdejjdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr7/opt/alt/python35/lib64/python3.5/distutils/__init__.py s PKq|]'d&__pycache__/spawn.cpython-35.opt-2.pycnu[ ]@sddlZddlZddlmZmZddlmZddlmZdddddZ dd Z dddd d Z ej d krdd lm Z dadadddddZdddZdS)N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsmt|}tjdkr1t||d|n8tjdkrVt||d|ntdtjdS)Nposixdry_runntz1don't know how to spawn programs on platform '%s')listosname _spawn_posix _spawn_ntr)cmd search_pathverboserr*/opt/alt/python35/lib64/python3.5/spawn.pyspawns rcCs;x4t|D]&\}}d|kr d|||es z _spawn_posix...cSsg|]}t|qSr)r))r*r+rrrr,ks zF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configurezunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %sz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %dr)"rrrr execvpexecvsysplatform _cfg_targetr&get_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpidestatusr$ exit_statusrrrr Xs  "         - r cCs|dkrtjd}|jtj}tjj|\}}tjdkrh|dkrh|d}tjj|sx9|D]1}tjj ||}tjj|r|SqWdS|SdS)NPATHwin32z.exe) r r6r4pathseppathsplitextr0r1isfiler)r"rNpathsbaseextpfrrrrs    r)r0r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr1r&r2r5r rrrrr s   QPKq|]B*__pycache__/file_util.cpython-35.opt-1.pycnu[ Yf@sdZddlZddlmZddlmZdddddd iZdd d ZddddddddZddddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyinghardz hard linkingsymzsymbolically linkingicNCsd}d}zyt|d}Wn>tk rb}ztd||jfWYdd}~XnXtjj|rytj|Wn>tk r}ztd||jfWYdd}~XnXyt|d}Wn>tk r}ztd||jfWYdd}~XnXxy|j|}Wn>tk rq}ztd||jfWYdd}~XnX|syPy|j |Wqtk r}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdstZ buffer_sizeZfsrcZfdsteZbufr8/opt/alt/python35/lib64/python3.5/distutils/file_util.py_copy_file_contentssF ,)))1 rcCsddlm}ddlm} m} m} m} tjj |sTt d|tjj |r|} tjj |tjj |}ntjj|} |r||| r|dkrtjd||dfSyt|}Wn"tk rtd|YnX|dkrptjj |tjj |krZtjd||| ntjd||||r|dfS|d krtjj|otjj||s6ytj|||dfSWq6tk rYq6XnM|d kr6tjj|otjj||s6tj|||dfSt|||sO|rtj|}|rtj||| || f|rtj|| || |dfS) aCopy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is copied there with the same name; otherwise, it must be a filename. (If the file exists, it will be ruthlessly clobbered.) If 'preserve_mode' is true (the default), the file's mode (type and permission bits, or whatever is analogous on the current platform) is copied. If 'preserve_times' is true (the default), the last-modified and last-access times are copied as well. If 'update' is true, 'src' will only be copied if 'dst' does not exist, or if 'dst' does exist but is older than 'src'. 'link' allows you to make hard links (os.link) or symbolic links (os.symlink) instead of copying: set it to "hard" or "sym"; if it is None (the default), files are copied. Don't set 'link' on systems that don't support it: 'copy_file()' doesn't check if hard or symbolic linking is available. If hardlink fails, falls back to _copy_file_contents(). Under Mac OS, uses the native file copy function in macostools; on other systems, uses '_copy_file_contents()' to copy file contents. Return a tuple (dest_name, copied): 'dest_name' is the actual name of the output file, and 'copied' is true if the file was copied (or would have been copied, if 'dry_run' true). r)newer)ST_ATIMEST_MTIMEST_MODES_IMODEz4can't copy '%s': doesn't exist or not a regular filerz"not copying %s (output up-to-date)z&invalid value '%s' for 'link' argumentz %s %s -> %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater+verbosedry_runrrrrrdiractionstrrr copy_fileCsT!" $    $  '  '   r5c(Csddlm}m}m}m}m}ddl} |dkrStjd|||r]|S||syt d|||rt j j |||}n"||rt d||f|||st d||fd } yt j ||Wnetk rn} zE| j\} } | | jkrCd } nt d ||| fWYdd} ~ XnX| rt||d |yt j|Wnvtk r} zV| j\} } yt j|Wntk rYnXt d |||| fWYdd} ~ XnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr r!r#r$Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %sr0zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr r!r#r$errnorr)rr r r"renamer argsZEXDEVr5r)rrr0r1rr r!r#r$r6Zcopy_itrZnummsgrrr move_filesR (      ) )r:c CsGt|d}z&x|D]}|j|dqWWd|jXdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r rr)filenamecontentsflinerrr write_files  rAi@) __doc__r Zdistutils.errorsrZ distutilsrr&rr5r:rArrrrs  3 c=PKq|]LL*__pycache__/ccompiler.cpython-35.opt-1.pycnu[ Yf7 @szdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd d fdd fddffZddddZd dddfddddfddddfddddfd d!d"d#fiZd$d%Zdddddd&d'Zd(d)Zd*d+ZdS),zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddddd d iZ dd dgZ d d d d d ZddZddZddZddZdddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z d2d3Z!dd4d5Z"d6d7Z#d8d9Z$d:d;Z%d<d=Z&dddddd>d?Z'dddd dddd@dAZ(dBdCZ)dd ddDdEZ*dFZ+dGZ,dHZ-dddddd dddddIdJ Z.dddddd dddddKdL Z/dddddd dddddMdN Z0ddddd ddddOdPZ1dQdRZ2dSdTZ3dUdVZ4dddddWdXZ5d dYdZZ6d d[d\d]Z7d d[d^d_Z8d d[d`daZ9dbd d[dcddZ:dedfdgZ;dhdiZ<djdkZ=ddedldmZ>dndoZ?dpdqZ@drdsdtZAdS)u CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nz.ccz.cczc++z.cppz.cxxz.mZobjcrcCs||_||_||_d|_g|_g|_g|_g|_g|_g|_ x.|j j D]}|j ||j |qjWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr8/opt/alt/python35/lib64/python3.5/distutils/ccompiler.py__init__Us          zCCompiler.__init__cKsTxM|D]E}||jkr8td||jjf|j|||qWdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys  zCCompiler.set_executablescCs<t|tr(t||t|nt|||dS)N) isinstancestrsetattrr)rrvaluerrrrszCCompiler.set_executablecCs<d}x/|jD]$}|d|kr*|S|d7}qWdS)Nr)r)rnameidefnrrr _find_macros zCCompiler._find_macrocCsx}|D]u}t|toat|dkoat|dtsQ|ddkoat|dtstd|ddqWdS) zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. r(Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(r-)r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss # z"CCompiler._check_macro_definitionscCs?|j|}|dk r%|j|=|jj||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N)r,rappend)rr)r'r*rrr define_macros   zCCompiler.define_macrocCsB|j|}|dk r%|j|=|f}|jj|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N)r,rr2)rr)r*Zundefnrrrundefine_macros    zCCompiler.undefine_macrocCs|jj|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|jj|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|jj|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|jj|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|jj|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts3td|dkrK|j}n1t|trp||jpig}n td|dkr|j}n=t|ttfrt||jpg}n td|dkrg}|j|ddd|}t ||}i} xmt t |D]Y} || } || } t j j| d} |jt j j| | | f| | 'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&          zCCompiler._fix_lib_argscCsE|jr dS|jr.t||dd}nt||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. TZmissingnewerN)rr r)rr output_filer[rrr _need_links   zCCompiler._need_linkc Cst|ts|g}d}t|j}x{|D]s}tjj|\}}|jj|}y.|jj |}||kr|}|}Wq4t k rYq4Xq4W|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r$rDr/language_orderrHrIrJ language_mapgetindexr) rrLZlangrasourcebaserRZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrbr\rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc Cs|j||||||\}} }} } |j| ||} xV| D]N} y| | \}}Wntk rzwIYnX|j| ||| || qIW| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )rSrVKeyError_compile)rrLrrrrTrerfrMrrNrOrUrQrPrRrrrcompiles6   zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrQrPrRrUrfrNrrrriCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerrT target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCs tdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrTrerf build_temprlrrrlinkis9zCCompiler.linkc CsG|jtj||j|dd||||||| | | | dS)Nlib_typeshared)rsr SHARED_LIBRARYlibrary_filename) rrrkrrrrrqrTrerfrrrlrrrlink_shared_libs  zCCompiler.link_shared_libc Cs8|jtj||||||||| | | | dS)N)rsr SHARED_OBJECT) rrrprrrrrqrTrerfrrrlrrrlink_shared_objects  zCCompiler.link_shared_objectc CsA|jtj||j|||||d||| d| dS)N)rsr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrTrerfrlrrrlink_executables  zCCompiler.link_executablecCs tdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. N)ro)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCs tdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N)ro)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCs tdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N)ro)rlibrrrlibrary_optionszCCompiler.library_optionc CsAddl}|dkrg}|dkr0g}|dkrBg}|dkrTg}|jd|dd\}}tj|d} z7x|D]} | jd| qW| jd|Wd| jXy|j|gd |} Wntk rd SYnXy |j| d d |d |Wnt t fk r<d SYnXdS)zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNz.ctextTwz#include "%s" z+main (int argc, char **argv) { %s(); } rFza.outrr) tempfileZmkstemprHfdopenwritecloserjZ CompileErrorr}Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8           zCCompiler.has_functioncCs tdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N)ro)rr7rrTrrrfind_library_file#szCCompiler.find_library_filecCs|dkrd}g}x|D]}tjj|\}}tjj|d}|tjj|d}||jkrtd||f|rtjj|}|jtjj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rHrIrJ splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namercrRrrrrENs  zCCompiler.object_filenamescCs2|rtjj|}tjj|||jS)N)rHrIrrshared_lib_extension)rrrCrrrrshared_object_filename_sz CCompiler.shared_object_filenamecCs8|rtjj|}tjj|||jp3dS)Nr)rHrIrr exe_extension)rrrCrrrrr|eszCCompiler.executable_filenamestaticc Cs|d krtdt||d}t||d}tjj|\}}|||f} |rrd}tjj||| S) Nrrudylib xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rrurr)rgetattrrHrIsplitr) rr9rtrCrZfmtrRr5rcfilenamerrrrwks  zCCompiler.library_filenamer(cCstj|dS)N)r rT)rmsglevelrrrannounce~szCCompiler.announcecCs$ddlm}|r t|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_printszCCompiler.debug_printcCstjjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst|d|jdS)Nr )rr )rcmdrrrrszCCompiler.spawncCst||d|jS)Nr )rr )rrPZdstrrrrszCCompiler.move_fileicCst||d|jdS)Nr )rr )rr)moderrrrszCCompiler.mkpath)Br! __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr_r^rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrSrVrWrXrYrZr]rdrgrjrirmryrvr{rsrxrzr}r~rrrrrErr|rwrrrr rrrrrrrr s   $              +   "   B 4     *+    r zcygwin.*unixposixntZmsvccCsy|dkrtj}|dkr*tj}xHtD]@\}}tj||dk smtj||dk r1|Sq1WdS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rHr)rplatform_default_compilersrematch)osnamerpatterncompilerrrrget_default_compilers    rZ unixccompilerZ UnixCCompilerzstandard UNIX-style compilerZ _msvccompilerZ MSVCCompilerzMicrosoft Visual C++cygwinZcygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32Zmingw32ZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32ZbcppZ bcppcompilerZ BCPPCompilerzBorland C++ CompilercCsvddlm}g}x6tjD](}|jd|dt|dfq#W|j||}|jddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y/|dkr0t|}t|\}}}WnBtk rd|}|dk rx|d|}t|YnXy5d|}t|tj|} t | |} WnIt k rt d|Yn(tk r t d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rHr)rrrhZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_nameZ class_nameZlong_descriptionrmoduleklassrrr new_compilers2            rcCsg}x|D]}t|toAdt|ko?dknsTtd|t|dkr~|jd|dq t|dkr |ddkr|jd|dq |jd|q Wx|D]}|jd |qW|S) aGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. r(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srNz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrNZmacror5rrrrF s 1  rFc Csg}x$|D]}|j|j|q WxF|D]>}|j|}t|tre||}q4|j|q4Wx|D]y}tjj|\}} |r|j|g| } | r|j| q|j d|q}|j|j |q}W|S)acGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). z6no library file corresponding to '%s' found (skipping)) r2r~rr$rDrHrIrrrr) rrrrZlib_optsr5ZoptrZlib_dirZlib_nameZlib_filerrrgen_lib_options7s$      r)rrrHrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrFrrrrrs<$          - -PKq|]{,,'__pycache__/fancy_getopt.cpython-35.pycnu[ YfxE@sHdZddlZddlZddlZddlZddlTdZejdeZejdeefZ e j ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrDdZxKddddfD]7Zedeedjeeeeq WdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZddd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddddZddZdddZddddZdS) FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsq||_i|_|jr%|ji|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr;/opt/alt/python35/lib64/python3.5/distutils/fancy_getopt.py__init__)s           zFancyGetopt.__init__cCs6|jjx"|jD]}||j|d= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyr/r/)r r r rrepeatrlen ValueErrorr strrrrr getr longopt_rematchrr)rrlongshorthelpr0Zalias_torrr_grok_option_tables^     "  !         zFancyGetopt._grok_option_tablec Cs2|dkrtjdd}|dkr=t}d}nd}|jdj|j}y"tj|||j\}}Wn4tjk r}zt |WYdd}~XnXx_|D]W\}}t |dkr|ddkr|j |d}n>t |dkr)|ddd ks/t |dd}|j j|} | r]| }|j|s|d kst d |jj|} | r| }d}nd}|j|} |r|jj| dk rt|| dd}t|| ||jj||fqW|r*||fS|SdS) aParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. Nr,TF r+rrz--zboolean option can't have value)sysargv OptionDummyr:joinr getoptr errorZDistutilsArgErrorr1r r"r r4rr rr0getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr%valr attrrrrrAsF     "".    zFancyGetopt.getoptcCs)|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orderszFancyGetopt.get_option_ordercCsd}xs|jD]h}|d}|d}t|}|ddkrP|d}|dk rf|d}||kr|}qW|ddd}d}||} d|} |r|g} n d g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkrh| rN| jd ||| dfq| jd ||fnHd ||f}| r| jd ||| dfn| jd|x)| ddD]}| j| |qWqW| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr,r-Nr+Nr;zOption summary:r)z --%-*s %sz --%-*s z%s (-%s)z --%-*sr/r/r/)rr1 wrap_textr)rheaderZmax_optrr7r8lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr9textZ opt_namesrrr generate_helpsF             ! zFancyGetopt.generate_helpcCsD|dkrtj}x(|j|D]}|j|dq%WdS)N )r=stdoutrSwrite)rrOfilelinerrr print_helphs  zFancyGetopt.print_help)__name__ __module__ __qualname____doc__rrrrrrr&r'r(r:rArKrSrYrrrrrs (       M= OrcCs)t|}|j||j||S)N)rr(rA)optionsZ negative_optrFrEparserrrr fancy_getoptos  r`cCsi|]}dt|qS)r;)ord).0Z_wscharrrr us rccCsv|dkrgSt||kr)|gS|j}|jt}tjd|}dd|D}g}x|rqg}d}xq|rt|d}|||kr|j|d|d=||}q|r|d ddkr|d =PqW|rX|dkr=|j|dd||d|d|d<|dddkrX|d=|jdj|qrW|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|]}|r|qSrr)rbZchrrr s zwrap_text..rr,r;r<r/r/)r1 expandtabsrWS_TRANSresplitrr@)rRwidthZchunksrQZcur_lineZcur_lenrPrrrrNws:      rNcCs |jtS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )rr)r%rrrtranslate_longoptsrjc@s%eZdZdZgddZdS)r?z_Dummy class just used as a place to hold command-line option values as instance attributes.cCs%x|D]}t||dqWdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rD)rr^r%rrrrs zOptionDummy.__init__N)rZr[r\r]rrrrrr?s r?__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].) (z width: %drT)r]r=stringrgrAZdistutils.errorsZ longopt_patcompiler5Z neg_alias_rer3 maketransrrr`Z whitespacerfrNrjr?rZrRwprintr@rrrr s($  S  6  PKq|]% ?D?D.__pycache__/msvc9compiler.cpython-35.opt-2.pycnu[ ]w@sddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlZejZejZejZejZejejejejfZej dkoej!d&kZ"e"rd Z#d Z$d Z%nd Z#d Z$dZ%ddddddiZ&GdddZ'GdddZ(ddZ)ddZ*ddZ+ddZ,dd d!Z-e)Z.e.d"kred#e.Gd$d%d%e Z/dS)'N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32 z1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86z win-amd64amd64zwin-ia64Zia64c@speZdZddZeeZddZeeZddZeeZddZeeZd S) RegcCsMx:tD]2}|j||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedr2/opt/alt/python35/lib64/python3.5/msvc9compiler.py get_valueAs   z Reg.get_valuecCsyt||}Wntk r+dSYnXg}d}xDyt||}Wntk rcPYnX|j||d7}q;W|S)Nr) RegOpenKeyExRegError RegEnumKeyappend)rrrhandleLikrrr read_keysIs    z Reg.read_keysc Csyt||}Wntk r+dSYnXi}d}xhyt||\}}}Wntk rlPYnX|j}|j|||j|<|d7}q;W|S)Nrr)rr RegEnumValuelower convert_mbcs) rrrr"rr$namevaluetyperrrr[s    zReg.read_valuesc CsGt|dd}|dk rCy|d}Wntk rBYnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr)qs  zReg.convert_mbcsN) __name__ __module__ __qualname__r classmethodr&rr) staticmethodrrrrr=s        rc@s@eZdZddZddZddZddZd S) MacroExpandercCs'i|_t||_|j|dS)N)macrosVS_BASEvsbase load_macros)selfversionrrr__init__}s  zMacroExpander.__init__cCs!tj|||jd|r?r;rHrrrrr7{s    r7cCsd}tjj|}|d kr(dS|t|}tj|djdd\}}t|dd d}|dkr|d7}t|ddd}|dkrd }|dkr||SdS) NzMSC v.r r g$@r)sysr=findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions %    rVcCsFg}x9|D]1}tjj|}||kr |j|q W|S)N)osrnormpathr!)pathsZ reduced_pathsrCZnprrrnormalize_and_reduce_pathss   rZcCsX|jtj}g}x'|D]}||kr|j|qWtjj|}|S)N)rRrWpathsepr!join)variableZoldListZnewListr$Z newVariablerrrremoveDuplicatess  r^c Cs^t|}ytjd|d}Wn%tk rKtjdd}YnX| sftjj| r d|}tj j |d}|rtjj|rtjj |tj tj d}tjj |}tjj|s tjd|dSntjd||s"tjddStjj |d }tjj|rM|Stjd dS) Nz %s\Setup\VCr@z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r9rrrr debugrWrisdirenvirongetr\pardirabspathisfile)r=r:r@ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2       !  rgc Cst|}td}i}|dkr6tdtjd||tjd||fdtjd tj}z|j\}}|j d krt|j d |j d }x|j d D]}t j |}d |krq|j}|j d d\} } | j} | |kr| jtjrQ| dd} t| || VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r<verbosedry_runforcerrrr>Js     zMSVCCompiler.__init__NcCs|dkrt}d$}||kr:td|fdtjkrdtjkr|jdrd|_d|_d |_d |_d |_ n |tks|dkrt |}nt td t |}t t |}|d j tj|_|dtjd<|dtjd|)rz*\s*zI|)w) openreadrwrerDOTALLrHsearchwriteOSError)r<Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.      z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r<dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCstddS)Nzrrrrrrrrrrrrrrrrrr,sP      X VR  +   rl)0rWrprOrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyr Z EnumValuer'errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r9rBrArrr7rVrZr^rgrrrrrrrsL    (        >.   #)  PKq|]5ڳ '__pycache__/errors.cpython-35.opt-2.pycnu[ ] @sGdddeZGdddeZGdddeZGdddeZGdd d eZGd d d eZGd d d eZGdddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGd d!d!eZGd"d#d#eZGd$d%d%eZd&S)'c@seZdZdS)DistutilsErrorN)__name__ __module__ __qualname__rr+/opt/alt/python35/lib64/python3.5/errors.pyr s rc@seZdZdS)DistutilsModuleErrorN)rrrrrrrrs rc@seZdZdS)DistutilsClassErrorN)rrrrrrrrs rc@seZdZdS)DistutilsGetoptErrorN)rrrrrrrr s r c@seZdZdS)DistutilsArgErrorN)rrrrrrrr s r c@seZdZdS)DistutilsFileErrorN)rrrrrrrr $s r c@seZdZdS)DistutilsOptionErrorN)rrrrrrrr *s r c@seZdZdS)DistutilsSetupErrorN)rrrrrrrr 3s r c@seZdZdS)DistutilsPlatformErrorN)rrrrrrrr8s rc@seZdZdS)DistutilsExecErrorN)rrrrrrrr>s rc@seZdZdS)DistutilsInternalErrorN)rrrrrrrrCs rc@seZdZdS)DistutilsTemplateErrorN)rrrrrrrrHs rc@seZdZdS)DistutilsByteCompileErrorN)rrrrrrrrKs rc@seZdZdS)CCompilerErrorN)rrrrrrrrOs rc@seZdZdS)PreprocessErrorN)rrrrrrrrRs rc@seZdZdS) CompileErrorN)rrrrrrrrUs rc@seZdZdS)LibErrorN)rrrrrrrrXs rc@seZdZdS) LinkErrorN)rrrrrrrr\s rc@seZdZdS)UnknownFileErrorN)rrrrrrrr`s rN) Exceptionrrrr r r r r rrrrrrrrrrrrrrr s$ PKq|]o; ; 1__pycache__/versionpredicate.cpython-35.opt-2.pycnu[ ]  @sddlZddlZddlZejdejZejdZejdZddZ dej dej d ej d ej d ejd ejiZGd ddZdaddZdS)Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCsMtj|}|s%td||j\}}|tjj|fS)Nz"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 5/opt/alt/python35/lib64/python3.5/versionpredicate.pysplitUps rz>=z!=c@s4eZdZddZddZddZdS)VersionPredicatecCs|j}|stdtj|}|sCtd||j\|_}|j}|rtj|}|std||jd}dd|jdD|_|jstd|n g|_dS) Nzempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|]}t|qSr )r).0ZaPredr r r ts z-VersionPredicate.__init__..,zempty parenthesized list in %r) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$     zVersionPredicate.__init__cCsF|jr;dd|jD}|jddj|dS|jSdS)NcSs*g|] \}}|dt|qS) )r)rcondverr r r r}s z,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{s zVersionPredicate.__str__cCs5x.|jD]#\}}t|||s dSq WdS)NFT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname__rr#r%r r r r rs A  rcCstdkr!tjdtja|j}tj|}|sRtd||jdpdd}|rtj j |}|jd|fS)Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions   r2)r,Zdistutils.versionroperatorr-r.rrrrltleeqgtgener$rr+r2r r r r s      !nPKq|]o哠JJ.__pycache__/msvc9compiler.cpython-35.opt-1.pycnu[ Yfw@sdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"d'kZ#e#r!d Z$d Z%d Z&nd Z$dZ%dZ&ddddddiZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,dd Z-dd!d"Z.e*Z/e/d#kred$e/Gd%d&d&e Z0dS)(a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32 z1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86z win-amd64amd64zwin-ia64Zia64c@sveZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCsMx:tD]2}|j||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedrz$(FrameworkVersion)) r@r;NET_BASErr WINSDK_BASErrrr rrr9)r=r>prhrrrrrr<s.       zMacroExpander.load_macroscCs6x/|jjD]\}}|j||}qW|S)N)r9itemsreplace)r=r1r%vrrrsubszMacroExpander.subN)r2r3r4r?r@r<rIrrrrr8{s    r8cCsd}tjj|}|d kr(dS|t|}tj|djdd\}}t|dd d}|dkr|d7}t|ddd }|dkrd }|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.rN r g$@r)sysr>findlensplitint)prefixr$r1restZ majorVersionZ minorVersionrrrget_build_versions %    rWcCsFg}x9|D]1}tjj|}||kr |j|q W|S)znReturn a list of normalized paths with duplicates removed. The current order of paths is maintained. )osrnormpathr!)pathsZ reduced_pathsrDZnprrrnormalize_and_reduce_pathss   r[cCsX|jtj}g}x'|D]}||kr|j|qWtjj|}|S)z8Remove duplicate values of an environment variable. )rSrXpathsepr!join)ZvariableZoldListZnewListr$Z newVariablerrrremoveDuplicatess  r^c Cs^t|}ytjd|d}Wn%tk rKtjdd}YnX| sftjj| r d|}tj j |d}|rtjj|rtjj |tj tj d}tjj |}tjj|s tjd|dSntjd||s"tjd dStjj |d }tjj|rM|Stjd dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCrAz%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r:rrrr debugrXrisdirenvirongetr]pardirabspathisfile)r>r;rAZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2       !  rgc Cst|}td}i}|dkr6tdtjd||tjd||fd tjd tj}z|j\}}|j d krt|j d |j d }x|j d D]}t j |}d|krq|j}|j dd\} } | j} | |kr| jtjrQ| dd} t| || ZarchrfZ interestingresultpopenrkrllinerr+rrrquery_vcvarsalls<           r~g @z(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZdddddZdddZddddZdddddddddZdddddZdddddddddddd ZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zdd*d+Zd,d-ZdS). MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCsPtj||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr?VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r=verboseZdry_runZforcerrrr?Js     zMSVCCompiler.__init__NcCs|dkrt}d$}||kr:td|fdtjkrdtjkr|jdrd|_d|_d |_d |_d |_ n |tks|dkrt |}nt td t |}t t |}|d j tj|_|dtjd<|dtjd|)rz*\s*zI|)w) openreadrvrerDOTALLrIsearchwriteOSError)r=Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.      z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r=dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCstddS)NzsN    (        >.   #)  PKq|]:$ __pycache__/debug.cpython-35.pycnu[ Yf@s"ddlZejjdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr4/opt/alt/python35/lib64/python3.5/distutils/debug.pys PKq|]no)__pycache__/dir_util.cpython-35.opt-2.pycnu[ ]b@sddlZddlZddlmZmZddlmZiadddddZddddd Z ddddddd d Z d d Z ddddZ ddZ dS)N)DistutilsFileErrorDistutilsInternalError)logic Cst|ts"td|ftjj|}g}tjj|sX|dkr\|Stjtjj |r{|Stjj |\}}|g}xK|r|rtjj| rtjj |\}}|j d|qWx|D]}tjj ||}tjj |} tj| r0q|dkrLt jd||sytj||Wnftk r} zF| jtjkotjj|std|| jdfWYdd} ~ XnX|j|dt|  "  $- r%cCsvt}x6|D].}|jtjj|tjj|qWx-t|D]}t||d|d|qOWdS)Nrr)setaddr r rdirnamesortedr%)base_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs  ,r.cCsddlm}| r:tjj| r:td|ytj|} WnMtk r} z-|rqg} ntd|| jfWYdd} ~ XnX|st |d|g} x(| D] } tjj || } tjj || }| j drq|rntjj | rntj | }|dkrHtjd|||s^tj||| j|qtjj| r| jt| |||||d|d |q|| ||||d|d || j|qW| S) Nr) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %srz.nfsrzlinking %s -> %sr)Zdistutils.file_utilr/r r r rlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr/nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r7csH  )     r7cCsxwtj|D]f}tjj||}tjj|r`tjj| r`t||q|jtj|fqW|jtj |fdS)N) r r0r rr r3_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r>s %r>cCs|dkrtjd||r&dSg}t||x|D]}y?|d|dtjj|d}|tkrt|=Wq@tk r}ztjd||WYdd}~Xq@Xq@WdS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr>r r rrrwarn)Z directoryrrrAcmdrr"r#r#r$ remove_trees     rEcCsItjj|\}}|ddtjkrE||dd}|S)Nrr)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrH)r rZdistutils.errorsrrZ distutilsrrr%r.r7r>rErHr#r#r#r$s  ?D PKq|]z!__pycache__/config.cpython-35.pycnu[ Yf@sRdZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@seZdZdZdZdZdZdZdddefdgZdgZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduser)selfr5/opt/alt/python35/lib64/python3.5/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec Cs\|j}tjtj|tjtjBdd}|jt||fWdQRXdS)zCreates a default .pypirc file.iwN)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s .zPyPIRCCommand._store_pypircc CsM|j}tjj|rI|jd||jp>|j}|jpP|j}t }|j ||j }d|kr|j dd}dd|j dD}|gkrd|krdg}niSxo|D]}d|i} |j |d | d >s z.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrNz server-login)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sX                   zPyPIRCCommand._read_pypirccCsPddl}|jdd}|j|djdd}|jj|S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rZresponser4Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_response)rrrrinitialize_optionsxs  z PyPIRCCommand.initialize_optionscCs:|jdkr|j|_|jdkr6|j|_dS)zFinalizes options.N)r$r'r%r()rrrrfinalize_options~s zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname____doc__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs"      A  r)r=r Z configparserrZ distutils.cmdrrrrrrrs   PKq|]\ $__pycache__/log.cpython-35.opt-1.pycnu[ Yft@sdZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sseZdZeddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr 2/opt/alt/python35/lib64/python3.5/distutils/log.py__init__sz Log.__init__cCs|tttttfkr1tdt|||jkr|rP||}|tttfkrqtj }n tj }|j dkr|j }|j |dj|}|jd||jdS)Nz%s wrong log levelstrictbackslashreplacez%s )DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdouterrorsencodingencodedecodewriteflush)r levelmsgargsstreamrr r r _logs    zLog._logcGs|j|||dS)N)r#)r rr r!r r r log%szLog.logcGs|jt||dS)N)r#r)r r r!r r r debug(sz Log.debugcGs|jt||dS)N)r#r)r r r!r r r info+szLog.infocGs|jt||dS)N)r#r)r r r!r r r warn.szLog.warncGs|jt||dS)N)r#r)r r r!r r r error1sz Log.errorcGs|jt||dS)N)r#r)r r r!r r r fatal4sz Log.fatalN) __name__ __module__ __qualname__rr r#r$r%r&r'r(r)r r r r rs       rcCstj}|t_|S)N) _global_logr)roldr r r set_threshold?s  r/cCsL|dkrttn/|dkr2ttn|dkrHttdS)Nrrr)r/rrr)vr r r set_verbosityEs      r1)__doc__rrrrrrrr-r$r%r&r'r(r)r/r1r r r r s  )        PKq|]k>>%__pycache__/core.cpython-35.opt-2.pycnu[ ]"@sddlZddlZddlmZddlTddlmZddlmZddl m Z ddl m Z dZ d d Zdadad3Zd4Zd.d/Zdd0d1d2ZdS)5N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstjj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr)/opt/alt/python35/lib64/python3.5/core.py gen_usage sr distclassr script_argsoptionsnameversionauthor author_email maintainermaintainer_emailurllicense descriptionlong_descriptionkeywords platforms classifiers download_urlrequiresprovides obsoletessources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_args swig_optsexport_symbolsdependslanguagec,Ks|jd}|r|d=nt}d|krNtjjtjd|dd|krt d|nt d|d|fWYdd}~XnXt d kr|S|j t rt d |jt d kr*|Sy|j}WnBtk r~}z"t t|jd |WYdd}~XnXt rt d |jt dkr|S|ry|jWntk rt dYntk r7}z;t rtjjd|fnt d|fWYdd}~XnMttfk r}z't r[nt dt|WYdd}~XnX|S)Nrr rrrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`%    '     0    %)rGruncCs|d krtd|f|atj}d|i}i}yvz_|tjd<|dk rr|tjdd s0      qPKq|]3ˣD D '__pycache__/config.cpython-35.opt-2.pycnu[ ]@sLddlZddlmZddlmZdZGdddeZdS)N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@seZdZdZdZdZdZdddefdgZdgZd d Z d d Z d dZ ddZ ddZ ddZdS) PyPIRCCommandzhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)N~z.pypirc)ospathjoin expanduser)selfr+/opt/alt/python35/lib64/python3.5/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec Cs\|j}tjtj|tjtjBdd}|jt||fWdQRXdS)Niw)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s .zPyPIRCCommand._store_pypircc CsM|j}tjj|rI|jd||jp>|j}|jpP|j}t }|j ||j }d|kr|j dd}dd|j dD}|gkrd|krdg}niSxo|D]}d|i} |j |d | d >s z.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrz server-login)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!currentkeydefaultrrr _read_pypirc0sX                   zPyPIRCCommand._read_pypirccCsPddl}|jdd}|j|djdd}|jj|S)Nrz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rresponser5Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)Nr)r$r%Z show_response)rrrrinitialize_optionsxs  z PyPIRCCommand.initialize_optionscCs:|jdkr|j|_|jdkr6|j|_dS)N)r$r'r%r()rrrrfinalize_options~s zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname__r'r(r$r%Z user_optionsZboolean_optionsrrr1r9r:r;rrrrrs      A  r)r configparserrZ distutils.cmdrrrrrrrs  PKq|]iaM44(__pycache__/_msvccompiler.cpython-35.pycnu[ YfO@s*dZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlZddlmZdd Zd d Zdd d ZddddiZddddddiZedgZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc $Csy)tjtjddtjtjB}Wn#tk rNtjdd SYnX|d}d}xtD]}ytj ||\}}}Wntk rPYnX|rl|tj krlt j j |rlytt|}Wnttfk rwlYnX|dkrl||krl||}}qlW|sBtjdd St j j|d} t j j| s}tjd| d Sd} tj|} | rt j j|| j|} t j j| stjd| d} | | fSWdQRXdS) Nz'Software\Microsoft\VisualStudio\SxS\VC7accesszVisual C++ is not registeredrz$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeErrorjoinisfile _VCVARS_PLAT_TO_VCRUNTIME_REDISTgetformat) plat_speckeyZ best_versionZbest_dirivZvc_dirZvtversion vcvarsall vcruntimeZvcruntime_specr%Ns z_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && setstderrzutf-16leerrorsreplacezError executing {}cSs4i|]*\}}}|r|r||jqSr%)r()r)r_r*r%r%r&r+as  css|]}|jdVqdS)=N) partition)r)liner%r%r& dsz_get_vc_env..py_vcruntime_redist)rgetenvenvironitemsr'r subprocessZ check_outputrZSTDOUTdecodeZCalledProcessErrorr erroroutputcmd splitlines)rr#r$outexcenvr%r%r& _get_vc_envLs(    "  rAcCsm|s!tjdjtj}xE|D]=}tjjtjj||}tjj|r(|Sq(W|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rr5splitpathseprrabspathr)Zexepathspfnr%r%r& _find_exels  !rHwin32Zx86z win-amd64Z x86_amd64z1redist\x86\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllamd64z1redist\x64\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllzvcruntime140.dllc smeZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZdddddZdddZddddZdddddddddZdddddZdddddddddddd ZddZfd d!Zd"d#Zd$d%Zd&d'Zdd(d)ZS)* MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs,tj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer%r%r&rLs zMSVCCompiler.__init__NcCs;|j std|dkr+t}|tkrRtdjttt|}t|}|sztd|jdd|_ |j j t j }t d||_t d||_t d||_t d ||_t d ||_t d ||_|jd d|_x9|jd dj t j D]}|rD|j|qDWx9|jddj t j D]}|r|j|qWd|_dddddg|_|jj|jrdndddddddg|_dddg}|js|jd%ddddg}|d&|_|d'|_|d(|_|d)|_||_ ||_!t"j#df|jt"j#d#f|jt"j#d$f|jt"j$df|jt"j$d#f|jt"j$d$f|jt"j%df|j t"j%d#f|j t"j%d$f|j!i |_&d$|_dS)*Nzdon't init multiple timesz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exer4includelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rTrU)rV)rV)rWrXrY)rWrXrY)'rNAssertionErrorr PLAT_TO_VCVARSrrtuplerAr_pathsrBrrCrHcclinkerrSrcmcZmt_vcruntime_redistZadd_include_dirZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugextendZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflags)rOrMrZvc_envrEdirldflagsZ ldflags_debugr%r%r& initializesb       %%     zMSVCCompiler.initializerQcsvfddjDfddjjDpHdfdd}tt||S)Ncsi|]}j|qSr%) obj_extension)r)ext)rOr%r&r+s z1MSVCCompiler.object_filenames..csi|]}j|qSr%) res_extension)r)rl)rOr%r&r+s rQc stjj|\}}r3tjj|}nItjj|\}}|jtjjtjjfr||dd}ytjj||SWn't k rt dj |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithsepaltsepr LookupErrorrr)rFbaserlr/)ext_map output_dir strip_dirr%r& make_out_paths! z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)rOZsource_filenamesryrxrzr%)rwrxrOryr&object_filenames s & zMSVCCompiler.object_filenamesc Cs?|js|j|j||||||} | \}} }} } |pOg} | jd|rx| j|jn| j|jd}x| D]}y| |\}}Wntk rwYnX|rtj j |}||j krd|}n||j krd|}d}n||j kr|}d|}y%|j|jg| ||gWqtk r}zt|WYdd}~XqXqn||jkrtj j|}tj j|}y|j|jd|d||gtj jtj j|\}}tj j||d }|j|jd||gWqtk r}zt|WYdd}~XqXqntd j|||jg| | }|r|jd |j||jd ||j|y|j|Wqtk r6}zt|WYdd}~XqXqW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rNrjZ_setup_compilerdrfrercKeyErrorrrrD _c_extensions_cpp_extensionsr|spawnr`rrr}dirnamerarorprrr^)rOZsourcesrxZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrlZ input_optZ output_optmsgZh_dirZrc_dirrvr/Zrc_fileargsr%r%r&compile+sn          % "$!    #zMSVCCompiler.compilec Cs|js|j|j||\}}|j|d|}|j||r|d|g}|riy:tjd|jdj||j |jg|Wqt k r}zt |WYdd}~XqXntjd|dS)Nrxz/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rNrj_fix_object_argslibrary_filename _need_linkr rrSrrrr) rOrZoutput_libnamerxr target_langoutput_filenameZlib_argsrr%r%r&create_static_libs    "zMSVCCompiler.create_static_libcCsX|js|j|j||\}}|j|||}|\}}}|rl|jdt|t||||}|dk rtjj ||}|j ||rD|j || f}dd|pgD}||||d|g}tjj |d} |dk rrtjj tjj|\}}tjj | |j|}|jd|| r| |dd<| r|j| tjj tjj|}|j|yGtjd|jdj ||j|jg||j|WqTtk r@}zt|WYdd}~XqTXntjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|]}d|qS)z/EXPORT:r%)r)Zsymr%r%r& s z%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rNrjrZ _fix_lib_argswarnstrrrrrrrgrrorprrdrfrDZmkpathr rr_r_copy_vcruntimerr)rOZ target_descrrrxZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsriZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr%r%r&linksN            "zMSVCCompiler.linkcCs|j}| s#tjj| r'dStjj|jtkrIdStjd|t j ||}tj |t j dS)Nz Copying "%s")rbrrrrpr( _BUNDLED_DLLSr rshutilcopychmodstatS_IWRITE)rOrxr$r%r%r&rs zMSVCCompiler._copy_vcruntimec sHtjd}z$|jtjds(    (  .   PKq|]jU(U()__pycache__/filelist.cpython-35.opt-1.pycnu[ Yf0@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejd d Zd d ZdddddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@seZdZdZddddZddZejddZd d Z d d Z d dZ ddZ ddZ ddZddZdddddZdddddZdS)FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr 7/opt/alt/python35/lib64/python3.5/distutils/filelist.py__init__s zFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCs$ddlm}|r t|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrr r r r )szFileList.debug_printcCs|jj|dS)N)rappend)r itemr r r r3szFileList.appendcCs|jj|dS)N)rextend)r itemsr r r r6szFileList.extendcCsXtttjj|j}g|_x*|D]"}|jjtjj|q.WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s  z FileList.sortcCsVxOtt|jdddD].}|j||j|dkr |j|=q WdS)Nr)rangelenr)r ir r r remove_duplicatesCs&zFileList.remove_duplicatescCs1|j}|d}d}}}|dkrrt|dkrRtd|dd |d dD}n|dkrt|d krtd|t|d }dd |ddD}nQ|dkrt|dkrtd|t|d }ntd|||||fS)Nrincludeexcludeglobal-includeglobal-excludez&'%s' expects ...cSsg|]}t|qSr )r).0wr r r Ws z1FileList._parse_template_line..r recursive-includerecursive-excludez,'%s' expects ...cSsg|]}t|qSr )r)r+r,r r r r-]s graftprunez#'%s' expects a single zunknown action '%s')r&r'r(r))r.r/)r1r2)rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs,          zFileList._parse_template_linecCs|j|\}}}}|dkrz|jddj|x|D]+}|j|ddsHtjd|qHWn|dkr|jddj|x^|D]+}|j|ddstjd |qWn(|d kr8|jd dj|x|D]+}|j|dd stjd |qWn|dkr|jddj|x|D]+}|j|dd setjd|qeWnj|dkr|jd|dj|fx;|D].}|j|d|stjd||qWn|dkrg|jd|dj|fx|D].}|j|d|s2tjd||q2Wn|dkr|jd||jdd|stjd|nU|dkr|jd||jdd|stjd|ntd|dS)Nr&zinclude  anchorr z%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %sprefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r1zgraft z+warning: no directories found matching '%s'r2zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r7r rinclude_patternrr exclude_patternr)r r3r4r5rr6patternr r r process_template_linehsf                          zFileList.process_template_liner rcCsd}t||||}|jd|j|jdkrH|jxG|jD]<}|j|rR|jd||jj|d}qRW|S)aSelect strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform- dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return True if files are found, False otherwise. Fz%include_pattern: applying regex r'%s'Nz adding T)translate_patternr r=rrsearchrr)r r=r9r:is_regex files_found pattern_renamer r r r;s    zFileList.include_patterncCsd}t||||}|jd|jxett|jdddD]D}|j|j|rO|jd|j||j|=d}qOW|S)aRemove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return True if files are found, False otherwise. Fz%exclude_pattern: applying regex r'%s'r z removing Tr!r!)r?r r=r"r#rr@)r r=r9r:rArBrCr$r r r r<s  &  zFileList.exclude_pattern)__name__ __module__ __qualname____doc__rrrcurdirrr rrrr%r7r>r;r<r r r r rs      L,rcCs5ddtj|ddD}ttjj|S)z% Find all files under 'path' css:|]0\}}}|D]}tjj||VqqdS)N)rrr)r+basedirsrfiler r r s z#_find_all_simple.. followlinksT)rwalkfilterrisfile)rZresultsr r r _find_all_simples rRcCsOt|}|tjkrEtjtjjd|}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. start) rRrrI functoolspartialrrelpathrlist)rrZmake_relr r r rs  rcCsPtj|}tj}tjdkr-d}d|}tjd||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?s    PKq|]MZuu)__pycache__/dep_util.cpython-35.opt-2.pycnu[ ] @sGddlZddlmZddZddZddd ZdS) N)DistutilsFileErrorcCstjj|s.tdtjj|tjj|sDdSddlm}tj||}tj||}||kS)Nzfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r -/opt/alt/python35/lib64/python3.5/dep_util.pynewer srcCst|t|kr$tdg}g}xStt|D]?}t||||rC|j|||j||qCW||fS)Nz+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise s rerrorcCstjj|sdSddlm}tj||}xx|D]l}tjj|s|dkrgn"|dkryq@n|dkrdStj||}||kr@dSq@WdSdS)Nrr)rrignorer)rrrr r)rr missingrZ target_mtimer source_mtimer r r newer_group6s      r)rZdistutils.errorsrrrrr r r r s   PKq|]u44.__pycache__/_msvccompiler.cpython-35.opt-1.pycnu[ YfO@s*dZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlZddlmZdd Zd d Zdd d ZddddiZddddddiZedgZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc $Csy)tjtjddtjtjB}Wn#tk rNtjdd SYnX|d}d}xtD]}ytj ||\}}}Wntk rPYnX|rl|tj krlt j j |rlytt|}Wnttfk rwlYnX|dkrl||krl||}}qlW|sBtjdd St j j|d} t j j| s}tjd| d Sd} tj|} | rt j j|| j|} t j j| stjd| d} | | fSWdQRXdS) Nz'Software\Microsoft\VisualStudio\SxS\VC7accesszVisual C++ is not registeredrz$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeErrorjoinisfile _VCVARS_PLAT_TO_VCRUNTIME_REDISTgetformat) plat_speckeyZ best_versionZbest_dirivZvc_dirZvtversion vcvarsall vcruntimeZvcruntime_specr%Ns z_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && setstderrzutf-16leerrorsreplacezError executing {}cSs4i|]*\}}}|r|r||jqSr%)r()r)r_r*r%r%r&r+as  css|]}|jdVqdS)=N) partition)r)liner%r%r& dsz_get_vc_env..py_vcruntime_redist)rgetenvenvironitemsr'r subprocessZ check_outputrZSTDOUTdecodeZCalledProcessErrorr erroroutputcmd splitlines)rr#r$outexcenvr%r%r& _get_vc_envLs(    "  rAcCsm|s!tjdjtj}xE|D]=}tjjtjj||}tjj|r(|Sq(W|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rr5splitpathseprrabspathr)Zexepathspfnr%r%r& _find_exels  !rHwin32Zx86z win-amd64Z x86_amd64z1redist\x86\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllamd64z1redist\x64\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllzvcruntime140.dllc smeZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZdddddZdddZddddZdddddddddZdddddZdddddddddddd ZddZfd d!Zd"d#Zd$d%Zd&d'Zdd(d)ZS)* MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs,tj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcer%r%r&rLs zMSVCCompiler.__init__NcCs%|dkrt}|tkr<tdjttt|}t|}|sdtd|jdd|_|jjt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_|jd d|_x9|jd djt j D]}|r.|j|q.Wx9|jd djt j D]}|rj|j|qjWd|_dddddg|_|jj|jrdndddddddg|_dddg}|js|jd$ddddg}|d%|_|d&|_|d'|_|d(|_||_||_t j!df|jt j!d"f|jt j!d#f|jt j"df|jt j"d"f|jt j"d#f|jt j#df|jt j#d"f|jt j#d#f|ji |_$d#|_%dS))Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exer4includelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rTrU)rV)rV)rWrXrY)rWrXrY)&r PLAT_TO_VCVARSrrtuplerAr_pathsrBrrCrHcclinkerrSrcmcZmt_vcruntime_redistZadd_include_dirZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugextendZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsrN)rOrMrZvc_envrEdirldflagsZ ldflags_debugr%r%r& initializes`       %%     zMSVCCompiler.initializerQcsvfddjDfddjjDpHdfdd}tt||S)Ncsi|]}j|qSr%) obj_extension)r)ext)rOr%r&r+s z1MSVCCompiler.object_filenames..csi|]}j|qSr%) res_extension)r)rk)rOr%r&r+s rQc stjj|\}}r3tjj|}nItjj|\}}|jtjjtjjfr||dd}ytjj||SWn't k rt dj |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithsepaltsepr LookupErrorrr)rFbaserkr/)ext_map output_dir strip_dirr%r& make_out_paths! z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)rOZsource_filenamesrxrwryr%)rvrwrOrxr&object_filenames s & zMSVCCompiler.object_filenamesc Cs?|js|j|j||||||} | \}} }} } |pOg} | jd|rx| j|jn| j|jd}x| D]}y| |\}}Wntk rwYnX|rtj j |}||j krd|}n||j krd|}d}n||j kr|}d|}y%|j|jg| ||gWqtk r}zt|WYdd}~XqXqn||jkrtj j|}tj j|}y|j|jd|d||gtj jtj j|\}}tj j||d }|j|jd||gWqtk r}zt|WYdd}~XqXqntd j|||jg| | }|r|jd |j||jd ||j|y|j|Wqtk r6}zt|WYdd}~XqXqW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rNriZ_setup_compilercrerdrbKeyErrorrrrD _c_extensions_cpp_extensionsr{spawnr_rrr|dirnamer`rnrorrr])rOZsourcesrwZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrkZ input_optZ output_optmsgZh_dirZrc_dirrur/Zrc_fileargsr%r%r&compile+sn          % "$!    #zMSVCCompiler.compilec Cs|js|j|j||\}}|j|d|}|j||r|d|g}|riy:tjd|jdj||j |jg|Wqt k r}zt |WYdd}~XqXntjd|dS)Nrwz/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rNri_fix_object_argslibrary_filename _need_linkr rrSrrrr) rOrZoutput_libnamerwr target_langoutput_filenameZlib_argsrr%r%r&create_static_libs    "zMSVCCompiler.create_static_libcCsX|js|j|j||\}}|j|||}|\}}}|rl|jdt|t||||}|dk rtjj ||}|j ||rD|j || f}dd|pgD}||||d|g}tjj |d} |dk rrtjj tjj|\}}tjj | |j|}|jd|| r| |dd<| r|j| tjj tjj|}|j|yGtjd|jdj ||j|jg||j|WqTtk r@}zt|WYdd}~XqTXntjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|]}d|qS)z/EXPORT:r%)r)Zsymr%r%r& s z%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rNrirZ _fix_lib_argswarnstrrrrrrrfrrnrorrcrerDZmkpathr rr^r_copy_vcruntimerr)rOZ target_descrrrwZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrhZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr%r%r&linksN            "zMSVCCompiler.linkcCs|j}| s#tjj| r'dStjj|jtkrIdStjd|t j ||}tj |t j dS)Nz Copying "%s")rarrrror( _BUNDLED_DLLSr rshutilcopychmodstatS_IWRITE)rOrwr$r%r%r&rs zMSVCCompiler._copy_vcruntimec sHtjd}z$|jtjds(    (  .   PKq|]$__pycache__/ccompiler.cpython-35.pycnu[ Yf7 @szdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd d fdd fddffZddddZd dddfddddfddddfddddfd d!d"d#fiZd$d%Zdddddd&d'Zd(d)Zd*d+ZdS),zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddddd d iZ dd dgZ d d d d d ZddZddZddZddZdddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z d2d3Z!dd4d5Z"d6d7Z#d8d9Z$d:d;Z%d<d=Z&dddddd>d?Z'dddd dddd@dAZ(dBdCZ)dd ddDdEZ*dFZ+dGZ,dHZ-dddddd dddddIdJ Z.dddddd dddddKdL Z/dddddd dddddMdN Z0ddddd ddddOdPZ1dQdRZ2dSdTZ3dUdVZ4dddddWdXZ5d dYdZZ6d d[d\d]Z7d d[d^d_Z8d d[d`daZ9dbd d[dcddZ:dedfdgZ;dhdiZ<djdkZ=ddedldmZ>dndoZ?dpdqZ@drdsdtZAdS)u CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nz.ccz.cczc++z.cppz.cxxz.mZobjcrcCs||_||_||_d|_g|_g|_g|_g|_g|_g|_ x.|j j D]}|j ||j |qjWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr8/opt/alt/python35/lib64/python3.5/distutils/ccompiler.py__init__Us          zCCompiler.__init__cKsTxM|D]E}||jkr8td||jjf|j|||qWdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys  zCCompiler.set_executablescCs<t|tr(t||t|nt|||dS)N) isinstancestrsetattrr)rrvaluerrrrszCCompiler.set_executablecCs<d}x/|jD]$}|d|kr*|S|d7}qWdS)Nr)r)rnameidefnrrr _find_macros zCCompiler._find_macrocCsx}|D]u}t|toat|dkoat|dtsQ|ddkoat|dtstd|ddqWdS) zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. r(Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(r-)r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss # z"CCompiler._check_macro_definitionscCs?|j|}|dk r%|j|=|jj||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N)r,rappend)rr)r'r*rrr define_macros   zCCompiler.define_macrocCsB|j|}|dk r%|j|=|f}|jj|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N)r,rr2)rr)r*Zundefnrrrundefine_macros    zCCompiler.undefine_macrocCs|jj|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|jj|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|jj|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|jj|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|jj|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts3td|dkrK|j}n1t|trp||jpig}n td|dkr|j}n=t|ttfrt||jpg}n td|dkrg}|j|ddd|}t |t |kst t ||}i} xmt t |D]Y} || } || } t jj| d} |jt jj| | | f| | 'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&          zCCompiler._fix_lib_argscCsE|jr dS|jr.t||dd}nt||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. TZmissingnewerN)rr r)rr output_filer\rrr _need_links   zCCompiler._need_linkc Cst|ts|g}d}t|j}x{|D]s}tjj|\}}|jj|}y.|jj |}||kr|}|}Wq4t k rYq4Xq4W|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r$rDr/language_orderrIrJrK language_mapgetindexr) rrMZlangrbsourcebaserSZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrcr]rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc Cs|j||||||\}} }} } |j| ||} xV| D]N} y| | \}}Wntk rzwIYnX|j| ||| || qIW| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )rTrWKeyError_compile)rrMrrrrUrfrgrNrrOrPrVrRrQrSrrrcompiles6   zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrRrQrSrVrgrOrrrrjCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerrU target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCs tdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrUrfrg build_temprmrrrlinkis9zCCompiler.linkc CsG|jtj||j|dd||||||| | | | dS)Nlib_typeshared)rtr SHARED_LIBRARYlibrary_filename) rrrlrrrrrrrUrfrgrsrmrrrlink_shared_libs  zCCompiler.link_shared_libc Cs8|jtj||||||||| | | | dS)N)rtr SHARED_OBJECT) rrrqrrrrrrrUrfrgrsrmrrrlink_shared_objects  zCCompiler.link_shared_objectc CsA|jtj||j|||||d||| d| dS)N)rtr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrUrfrgrmrrrlink_executables  zCCompiler.link_executablecCs tdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. N)rp)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCs tdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N)rp)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCs tdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N)rp)rlibrrrlibrary_optionszCCompiler.library_optionc CsAddl}|dkrg}|dkr0g}|dkrBg}|dkrTg}|jd|dd\}}tj|d} z7x|D]} | jd| qW| jd|Wd| jXy|j|gd |} Wntk rd SYnXy |j| d d |d |Wnt t fk r<d SYnXdS)zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNz.ctextTwz#include "%s" z+main (int argc, char **argv) { %s(); } rFza.outrr) tempfileZmkstemprIfdopenwritecloserkZ CompileErrorr~Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8           zCCompiler.has_functioncCs tdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N)rp)rr7rrUrrrfind_library_file#szCCompiler.find_library_filecCs|dkrd}g}x|D]}tjj|\}}tjj|d}|tjj|d}||jkrtd||f|rtjj|}|jtjj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rIrJrK splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namerdrSrrrrENs  zCCompiler.object_filenamescCsD|dk st|r*tjj|}tjj|||jS)N)rFrIrJrrshared_lib_extension)rrrCrrrrshared_object_filename_sz CCompiler.shared_object_filenamecCsJ|dk st|r*tjj|}tjj|||jpEdS)Nr)rFrIrJrr exe_extension)rrrCrrrrr}eszCCompiler.executable_filenamestaticc Cs|dk st|d kr*tdt||d}t||d}tjj|\}}|||f} |rd}tjj||| S) Nrrvdylib xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rrvrr)rFrgetattrrIrJsplitr) rr9rurCrZfmtrSr5rdfilenamerrrrxks  zCCompiler.library_filenamer(cCstj|dS)N)r rU)rmsglevelrrrannounce~szCCompiler.announcecCs$ddlm}|r t|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_printszCCompiler.debug_printcCstjjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst|d|jdS)Nr )rr )rcmdrrrrszCCompiler.spawncCst||d|jS)Nr )rr )rrQZdstrrrrszCCompiler.move_fileicCst||d|jdS)Nr )rr )rr)moderrrrszCCompiler.mkpath)Br! __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr`r_rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrTrWrXrYrZr[r^rerhrkrjrnrzrwr|rtryr{r~rrrrrrErr}rxrrrr rrrrrrrr s   $              +   "   B 4     *+    r zcygwin.*unixposixntZmsvccCsy|dkrtj}|dkr*tj}xHtD]@\}}tj||dk smtj||dk r1|Sq1WdS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rIr)rplatform_default_compilersrematch)osnamerpatterncompilerrrrget_default_compilers    rZ unixccompilerZ UnixCCompilerzstandard UNIX-style compilerZ _msvccompilerZ MSVCCompilerzMicrosoft Visual C++cygwinZcygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32Zmingw32ZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32ZbcppZ bcppcompilerZ BCPPCompilerzBorland C++ CompilercCsvddlm}g}x6tjD](}|jd|dt|dfq#W|j||}|jddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y/|dkr0t|}t|\}}}WnBtk rd|}|dk rx|d|}t|YnXy5d|}t|tj|} t | |} WnIt k rt d|Yn(tk r t d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rIr)rrriZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_nameZ class_nameZlong_descriptionrmoduleklassrrr new_compilers2            rcCsg}x|D]}t|toAdt|ko?dknsTtd|t|dkr~|jd|dq t|dkr |ddkr|jd|dq |jd|q Wx|D]}|jd |qW|S) aGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. r(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srNz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrOZmacror5rrrrG s 1  rGc Csg}x$|D]}|j|j|q WxF|D]>}|j|}t|tre||}q4|j|q4Wx|D]y}tjj|\}} |r|j|g| } | r|j| q|j d|q}|j|j |q}W|S)acGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). z6no library file corresponding to '%s' found (skipping)) r2rrr$rDrIrJrrrr) rrrrZlib_optsr5ZoptrZlib_dirZlib_nameZlib_filerrrgen_lib_options7s$      r)rrrIrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrGrrrrrs<$          - -PKq|]E>E>-__pycache__/msvccompiler.cpython-35.opt-1.pycnu[ Yf\@sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZy@ddlZdZeZejZejZejZejZWnek r:yLddlZddlZdZeZejZejZejZejZWnek r5ejdYnXYnXer_ejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkrej+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsyt||}Wntk r+dSYnXg}d}xDyt||}Wntk rcPYnX|j||d7}q;W|S)zReturn list of registry keys.Nr) RegOpenKeyExRegError RegEnumKeyappend)basekeyhandleLikr;/opt/alt/python35/lib64/python3.5/distutils/msvccompiler.py read_keys7s    rcCsyt||}Wntk r+dSYnXi}d}xbyt||\}}}Wntk rlPYnX|j}t||t|<|d7}q;W|S)zXReturn dict of registry keys and values. All names are converted to lowercase. Nrr )r r RegEnumValuelower convert_mbcs)rrrdrnamevaluetyperrr read_valuesHs    r c CsGt|dd}|dk rCy|d}Wntk rBYnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr]s  rc@s@eZdZddZddZddZddZd S) MacroExpandercCsi|_|j|dS)N)macros load_macros)selfversionrrr__init__gs zMacroExpander.__init__cCs@x9tD]1}t||}|r|||jd|sZ(                   -   PKq|]BMM'__pycache__/bcppcompiler.cpython-35.pycnu[ YfW:@sdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zd d d d dZdddd dddddZdd dddZdddddd dddddd Zd ddZd dddZdddddddZdS) BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer;/opt/alt/python35/lib64/python3.5/distutils/bcppcompiler.pyr5s     zBCPPCompiler.__init__Nc Cs|j||||||\}} }} } |p6g} | jd|r_| j|jn| j|jx| D]} y| | \}}Wntk rwvYnXtjj|}tjj| } |j tjj | |dkrqv|dkrTy|j dd| |gWqvt k rP}zt |WYdd}~XqvXqv||jkrld}n||jkrd}nd}d| }y4|j |jg| | ||g||gWqvt k r}zt |WYdd}~XqvXqvW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF         .#zBCPPCompiler.compilec Cs|j||\}}|j|d|}|j||r|dg|}|rUy|j|jg|Wqtk r}zt|WYdd}~XqXntjd|dS)Nr*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs"zBCPPCompiler.create_static_libc Cs|j||\}}|j|||\}}}|rRtjdt||dk rstjj||}|j||r|t j krd}| r|j dd}q|j dd}n5d}| r|j dd}n|jdd}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x+|pgD]}|jd||fqW|jt||fd |ttjj|}|g}g}x[|D]S}tjjtjj|\}}|d kr:|j|q|j|qWx+|D]#}|jd tjj|qRW|jd |j||jd |g|jdxL|D]D}|j||| }|dkr|j|q|j|qW|jd|jd|jd |g|jd |j|| r_| |dd<| rr|j| |jtjj|y|j|jg|Wqtk r}zt|WYdd}~XqXntjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|         $  !          "zBCPPCompiler.linkc Cs|r-|d}|d|d||f}n|d|f}xW|D]K}xB|D]:}tjj||j|}tjj|rQ|SqQWqDWdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s     zBCPPCompiler.find_library_filercCs|dkrd}g}x|D]}tjjtjj|\}}||jddgkrxtd||f|rtjj|}|dkr|jtjj|||q|dkr|jtjj||dq|jtjj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"  $ # #zBCPPCompiler.object_filenamesc Cs#|jd||\}}}t||}dg|} |dk rW| jd||rm|| dd<|r| j|| j||js|dkst||r|r|jtjj |y|j | Wn;t k r} zt | t | WYdd} ~ XnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$     $ zBCPPCompiler.preprocess)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsJ     B|r)r^r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs .PKq|]F ==$__pycache__/cmd.cpython-35.opt-1.pycnu[ YfJ@sdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ Gdd d e ZdS) ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@seZdZdZgZddZddZddZdd Zd d Z d d ddZ ddZ dddZ ddZ d ddZd ddZddZd ddZdd Zd!d"Zd#d$Zd%d&Zdd'd(Zd)d*d+Zd,d-Zd.d/Zd0d1Zd dd2d3Zd4d5d6Zddd dd7d8Zddd)dd9d:Zdd;d<Zddd=d>Z d d d d d?d@Z!d d ddAdBZ"d S)CCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsddlm}t||s+td|jtkrFtd||_|jd|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r2/opt/alt/python35/lib64/python3.5/distutils/cmd.py__init__/s       zCommand.__init__cCsR|dkrBt|d|}|dkr;t|j|S|Sn t|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s   zCommand.__getattr__cCs |js|jd|_dS)N)rfinalize_options)rrrrensure_finalizedis  zCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr,d|j}|j||dtj|d}x||jD]q\}}}|j|}|d dkr|dd }t||}|j|d||fdtjqZWdS) Nr) longopt_xlatezcommand options for '%s':levelz r=z%s = %sr&) Zdistutils.fancy_getoptr#get_command_nameannouncerINFO user_options translater)rheaderindentr#optionrvaluerrr dump_optionss  zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrruns z Command.runrcCstj||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N)r)rmsgr$rrrr(szCommand.announcecCs1ddlm}|r-t|tjjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr3printsysstdoutflush)rr2r3rrr debug_prints zCommand.debug_printcCs[t||}|dkr/t||||St|tsWtd|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr.whatdefaultvalrrr_ensure_stringlikes zCommand._ensure_stringlikecCs|j|d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)r>)rr.r<rrr ensure_stringszCommand.ensure_stringcCst||}|dkrdSt|trMt||tjd|nMt|trxtdd|D}nd}|std||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdS)N)r r:).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r:r9resplitlistallr)rr.r=okrrrensure_string_lists zCommand.ensure_string_listcCsL|j|||}|dk rH|| rHtd|||fdS)Nzerror in '%s' option: )r>r)rr.Ztesterr;Z error_fmtr<r=rrr_ensure_tested_strings zCommand._ensure_tested_stringcCs |j|tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rJospathisfile)rr.rrrensure_filenameszCommand.ensure_filenamecCs |j|tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rJrLrMisdir)rr.rrrensure_dirnameszCommand.ensure_dirnamecCs$t|dr|jS|jjSdS)N command_name)hasattrrRr __name__)rrrrr' szCommand.get_command_namecGse|jj|}|jxB|D]:\}}t||dkr#t||t||q#WdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr!rr9)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs#|jj||}|j|S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrUr!)rcommandZcreateZcmd_objrrrget_finalized_command$s zCommand.get_finalized_commandrcCs|jj||S)N)rreinitialize_command)rrWZreinit_subcommandsrrrrY0s zCommand.reinitialize_commandcCs|jj|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rrWrrrrZ4szCommand.run_commandcCsIg}x<|jD]1\}}|dks4||r|j|qW|S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCs!tjd|j|fdS)Nzwarning: %s: %s )rwarnr')rr2rrrr_Ks z Command.warncCs tj|||d|jdS)Nr)rexecuter)rfuncargsr2r$rrrr`OszCommand.executeicCstj||d|jdS)Nr)rmkpathr)rnamemoderrrrcRszCommand.mkpathc Cs)tj|||||j |d|jS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.)r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrfUszCommand.copy_filec Cs)tj||||||j d|jS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. r)r copy_treerr)rrgrhrirjZpreserve_symlinksr$rrrrl^szCommand.copy_treecCstj||d|jS)z$Move a file respecting dry-run flag.r)r move_filer)rsrcZdstr$rrrrmgszCommand.move_filecCs*ddlm}|||d|jdS)z2Spawn an external command respecting dry-run flag.r)spawnrN)Zdistutils.spawnror)rcmdZ search_pathr$rorrrroksz Command.spawnc Cs+tj||||d|jd|d|S)Nrownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrqrrrrrrsps zCommand.make_archivecCs|dkrd|}t|tr1|f}n!t|ttfsRtd|dkrwd|dj|f}|jstj||r|j ||||n t j |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r:rFtupler joinrrZ newer_groupr`rdebug)rZinfilesrhrarbZexec_msgZskip_msgr$rrr make_filevs     zCommand.make_file)#rT __module__ __qualname____doc__r[rrr!rr r0r1r(r8r>r@rIrJrOrQr'rVrXrYrZr^r_r`rcrfrlrmrorsrxrrrrr sF  0              r c@sOeZdZdZdgZddZddZd d Zd d Zd S) install_miscz{Common base class for installing some files in a subdirectory. Currently used by install_data and install_scripts. install-dir=d!directory to install the files tocCsd|_g|_dS)N) install_diroutfiles)rrrrrs zinstall_misc.initialize_optionscCs|jd|dfdS)NZinstallr)rV)rdirnamerrr_install_dir_fromszinstall_misc._install_dir_fromcCsmg|_|sdS|j|jxC|D];}|j||j|jjtjj|j|q*WdS)N)rrcrrfr\rLrMrv)rZfilelistfrrr _copy_filess  zinstall_misc._copy_filescCs|jS)N)r)rrrr get_outputsszinstall_misc.get_outputsN)r}r~r) rTryrzr{r*rrrrrrrrr|s     r|)r{r5rLrDZdistutils.errorsrZ distutilsrrrrrrr r|rrrrs$(PKq|]*|g(__pycache__/unixccompiler.cpython-35.pycnu[ Yf:@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkrddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwincseZdZdZddddgddgddgddd gd dgd d d gddiZejdddkrdgedr?r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;r r!r"Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerir2r#r#r$linksH       "zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCs tjjtjd}tjdddkr<d|Stjdddkr]d|Stjddd kr|j|rd d|gSd d|gStjddd kstjddd krd|gS|j|rtjddkr d|Sd|Snd|SdS)NCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrOrr#r#r$runtime_library_dir_options 2  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_option szUnixCCompiler.library_optioncCs.|j|dd}|j|dd}|j|dd}|j|dd}tjdkrtjd}tjd|} | dkrd } n| jd } x|D]w} tj j | |} tj j | |} tj j | |}tj j | |}tjdkr| j d sF| j d r| j d  rtj j | | d d|} tj j | | d d|} tj j | | d d|}tj j | | d d|}tj j | r| Stj j |r|Stj j | r| Stj j |r|SqWdS)NZlib_typeshareddylib xcode_stubstaticr CFLAGSz-isysroot\s+(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrYr@Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrOr[r\r^r]r#r#r$find_library_file s>   """"zUnixCCompiler.find_library_file)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rCrNrPrRrXrZrhr#r#)rr$r -sF            6   , r )__doc__r(r4raZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r#r#r#r$s$" PKq|]B'__pycache__/archive_util.cpython-35.pycnu[ Yf&@sdZddlZddlmZddlZyddlZWnek rXdZYnXddlmZddl m Z ddl m Z ddl mZyddlmZWnek rdZYnXydd lmZWnek rdZYnXd d Zd d ZdddddddZddddZded&gdfded'gdfded(gdfded)gdfded*gdfd egd!fiZd"d#Zddddddd$d%ZdS)+zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc Cs_tdks|dkrdSyt|}Wntk rFd}YnX|dk r[|dSdS)z"Returns a gid, given a group name.N)rKeyError)nameresultr ;/opt/alt/python35/lib64/python3.5/distutils/archive_util.py_get_gids   rc Cs_tdks|dkrdSyt|}Wntk rFd}YnX|dk r[|dSdS)z"Returns an uid, given a user name.Nr )rr )r r r r r_get_uid+s   rgzipc sddddddddddi}dd dd dd dd i}|dk rl||jkrltd |d} |dkr| |j|d7} ttjj| d|ddl} tj dt t fdd} |sE| j | d||} z| j |d| Wd| jX|dkrtdt| ||} tjdkr|| | g}n|d| g}t|d|| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. rZgzbzip2bz2xzNcompressz.gzz.bz2z.xzz.ZzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tardry_runrzCreating tar archivecs@dk r|_|_dk r<|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidas      z"make_tarball.._set_uid_gidzw|%sfilterz'compress' will be deprecated.win32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer&rtarZcompressed_namecmdr )rrrrr make_tarball7s<             r3c Cs|d}ttjj|d|tdkr|rAd}nd}y td|||gd|Wqtk rtd|YqXntjd|||sytj |d d tj }Wn-t k rtj |d d tj }YnXxtj |D]t\}}} xb| D]Z} tjjtjj|| } tjj| r|j| | tjd | qWqW|j|S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.ziprNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itwZ compressionz adding '%s')rr#r$r%zipfilerrrr'ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDwalknormpathjoinisfilewriter*) r.r/r0rZ zip_filenameZ zipoptionsr4dirpathZdirnames filenamesr r$r r r make_zipfiles:         ! r?Zgztarrzgzip'ed tar-fileZbztarrzbzip2'ed tar-fileZxztarrzxz'ed tar-fileZztarzcompressed tar filer1zuncompressed tar filer4zZIP filecCs%x|D]}|tkr|SqWdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss  rBcCs7tj}|dk rMtjd|tjj|}|sMtj||dkrbtj}d|i} yt|} Wn"t k rt d|YnX| d} x"| dD]\} } | | | sB         G5 PKq|]gS@@__pycache__/util.cpython-35.pycnu[ YfP @sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZdaddZddZdddZdaaaddZddZdddddZddZdddddddddZd d!Zdddd"d#Z ddddd$d%Z!Gd&d'd'Z"dS)(zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorcCstjdkrd}tjj|}|d*kr:tjStjjd|}tj|t||j}|dkrdS|dkrdStjSd tjkrtjd Stjd kst td  rtjStj \}}}}}|jj d d }|j dd}|j d d}|dddkrTd||fS|dddkr|ddkrd}dt |dd|ddf}ddddi} |d | tj 7}n|dd!d"krd||fS|ddd#krd$|||fS|dd%d&krrd&}tjd'tj} | j|} | r| j}nX|dd%d(krddl} ddl} | j| jj|||\}}}d)|||fS)+aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. for IRIX the architecture isn't particularly important (IRIX only runs on SGI hardware), but for Linux the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u irix-5.3 irix64-6.2 Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win-ia64 (64bit Windows on Itanium) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntz bit ()amd64z win-amd64itaniumzwin-ia64_PYTHON_HOST_PLATFORMposixuname/ _-Nlinuxz%s-%ssunosr5solarisz%d.%si32bitl64bitz.%sirixaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionfindplatformlenlowerenvironhasattrrreplaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigget_platform_osx sysconfigget_config_vars)prefixijlookosnamehostreleaser'machinebitnessrel_remr6 distutilsrF3/opt/alt/python35/lib64/python3.5/distutils/util.py get_platformsX #   ( rHcCstjdkr|S|s|S|ddkr=td||ddkr]td||jd}xd|kr|jdqoW|stjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. rrzpath '%s' cannot be absoluterzpath '%s' cannot end with '/'.r#)r$sep ValueErrorsplitremovecurdirpathjoin)pathnamepathsrFrFrG convert_pathos rScCstjdkrTtjj|s4tjj||Stjj||ddSnmtjdkrtjj|\}}|ddkr|dd}tjj||StdtjdS)a Return 'pathname' with 'new_root' prepended. If 'pathname' is relative, this is equivalent to "os.path.join(new_root,pathname)". Otherwise, it requires making 'pathname' relative and then joining the two, which is tricky on DOS/Windows and Mac OS. r rNrr\z!nothing known about platform '%s')r$r%rOisabsrP splitdriver)Znew_rootrQZdriverOrFrFrG change_roots rWcCs}tr dStjdkrTdtjkrTddl}|jtjdtjd._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)r]r1subKeyErrorrK)sr_r`varrFrFrG subst_varss rezerror: cCs|t|S)N)r^)excr:rFrFrGgrok_environment_errorsrgcCs8tjdtjatjdatjdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r1r2string whitespace _wordchars_re _squote_re _dquote_rerFrFrFrG _init_regexsrmcCstdkrt|j}g}d}x|rtj||}|j}|t|kr||j|d|P||tjkr|j|d|||dj }d}n||dkr|d|||dd}|d}n||dkr)t j||}n9||dkrNt j||}nt d|||dkrt d|||j\}}|d|||d|d||d}|jd }|t|kr.|j|Pq.W|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. NrrTr'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rjrmstripr4endr*appendrhrilstriprkrl RuntimeErrorrKspan)rcZwordsposrDrqZbegrFrFrG split_quoteds@     "  4 rwcCsj|dkrId|j|f}|dddkrI|ddd}tj||sf||dS) aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rrz,)rr rx)__name__rinfo)funcargsmsgverbosedry_runrFrFrGexecutes  rcCsC|j}|dkrdS|dkr,dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. yyesttrueon1rnnoffalseoff0rzinvalid truth value %rN)rrrrrr)rrrrrr)r+rK)valrFrFrG strtobool0s    rrcCstjrtd|dkr3to0|dk}|sy&ddlm}|d\} } Wn5tk rddlm} d| d} } YnXtj d| |s7| dk rt j | d} nt | d} | j d | j d jtt|d | j d |||||f| jtj| g} |d kre| jd dn|dkr| jd dt| d|tt j| fd| d|nfddlm}xS|D]K}|dddkrq|dkr)|dkrdn|}tjj|d|}ntjj|}|}|r|dt||krytd||f|t|d}|rt jj||}t jj|}|r|st ||rtj d|||s||||qtj!d||qWdS)a~Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. zbyte-compiling is disabled.Nr)mkstempz.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) rz-Orz-OOrz removing %s)r2rr optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)"r&dont_write_bytecoder __debug__Ztempfiler ImportErrorrrrzr$fdopenopenwriterPmapreprclose executableinsertrrrM py_compiler2 importlibutilcache_from_sourcer*rKrObasenamerdebug)Zpy_filesoptimizeZforcer:Zbase_dirr~rZdirectrZ script_fdZ script_namerZscriptcmdr2fileZoptcfiledfileZ cfile_baserFrFrG byte_compile@sn"    #        rcCs"|jd}d}|j|S)zReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline.  rz z )rLrP)headerlinesrJrFrFrG rfc822_escapesrcCsw|s dSddlm}m}Gddd|}|dkrN|d}||d|}|j|dd dS) a Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.Nr)RefactoringToolget_fixers_from_packagec@s4eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj||dS)N)rerror)selfr}r|kwrFrFrG log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj||dS)N)rrz)rr}r|rFrFrG log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj||dS)N)rr)rr}r|rFrFrG log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)ry __module__ __qualname__rrrrFrFrFrGDistutilsRefactoringTools   rz lib2to3.fixesoptionsrT)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrrFrFrGrun_2to3s  rcCssddlm}ddlm}ddlm}|} tj} tj|z| j Wdtj| X| j | j dd<|rx6|j D](} | j } | sq| j| qWg} xw| j D]l} tjj|| }|tjj||tjj|| |dd}|dr| j|qWtdd | Dd |d |d || S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNupdatercSs+g|]!}|jjdr|qS)z.py)r+endswith).0fnrFrFrG s z$copydir_run_2to3..rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrr$getcwdchdirfindallZallfilesr splitlinesrpZprocess_template_linerOrPdirnamerrr)srcdesttemplaterrrrrrZfilelistrNlineZcopiedfilenameZoutnameresrFrFrGcopydir_run_2to3s4    $ rc@s4eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jS)N)rrrr)rrrFrFrGr)szMixin2to3.run_2to3)ryrr__doc__rrrrrFrFrFrGrs r)#rr$r1importlib.utilrr&rhZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrrErrrHrSrWrYr]rergrjrkrlrmrwrrrrrrrrFrFrFrGs>      ]      =   PKq|]HxY$jj%__pycache__/dist.cpython-35.opt-2.pycnu[ ]> @sddlZddlZddlZddlmZyddlZWnek r^dZYnXddlTddlm Z m Z ddl m Z m Z mZddlmZddlmZejdZGd d d ZGd d d Zd dZdS)N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$c@seZdZd}d~dddgZdZdddddddddddddddddddddgZd=d>eDZddiZdd?d@ZdAdBZ dddCdDdEZ dFdGZ ddHdIZ dJdKZ dLdMZdNdOZdPdQZddgdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zdd`daZddbdcZdddedfZejdgdhZdidjZdkdlZdmdnZ dodpZ!dqdrZ"dsdtZ#dudvZ$dwdxZ%dydzZ&d{d|Z'dS) Distributionverbosevrun verbosely (default)quietq!run quietly (turns verbosity off)dry-runndon't actually do anythinghelphshow detailed help message no-user-cfgN-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package help-commandslist all available commandsnameprint package nameversionVprint package versionfullnameprint -authorprint the author's name author-email print the author's email address maintainerprint the maintainer's namemaintainer-email$print the maintainer's email addresscontact7print the maintainer's name if known, else the author's contact-email@print the maintainer's email address if known, else the author'surlprint the URL for this packagelicense print the license of the packagelicencealias for --license descriptionprint the package descriptionlong-description"print the long package description platformsprint the list of platforms classifiersprint the list of classifierskeywordsprint the list of keywordsprovides+print the list of packages/modules providedrequires+print the list of packages/modules required obsoletes0print the list of packages/modules made obsoletecCs g|]}t|dqS)r)r).0xrH)/opt/alt/python35/lib64/python3.5/dist.py ss zDistribution.cCsWd|_d|_d|_x!|jD]}t||dq%Wt|_x:|jjD],}d|}t||t|j|qXWi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|jd}|dk r|d=xV|jD]H\}}|j |}x*|jD]\} } d| f|| r:cSsg|]}|jqSrH)strip)rFZelmrHrHrIrJ_s z1Distribution.finalize_options..,)r>r:)rVrTrstrrrR)rrrsrrHrHrIrqUs  zDistribution.finalize_optionsc Cspddlm}ddlm}|ro|r;|j}n |j}|j||j|jdt d|r|j|j |jddt dx|j D]}t |t rt||r|} n|j|} t| dr't | jtr'|j| jt| jn|j| j|jd | jt dqWt ||jdS) Nr) gen_usage)rz Global options:rLz*Information display options (just display z!information, ignore any commands)rzOptions for '%s' command:)distutils.corerrrrrr print_help common_usageprintrrrtyperrrmrrrrrrY) rrrrrrrrrMruklassrHrHrIrbs6      zDistribution._show_helpc Csddlm}|jrD|jtdt||jdSd}i}x|jD]}d||dr:rr<r@rBrDrN)r>r:)r<r@rBrD) rrZ help_commandsprint_commandsrrYrrerrVrTr) rrrrZany_display_optionsZis_display_optionoptionrwrxrrHrHrIrs,        z#Distribution.handle_display_optionscCst|dxt|D]l}|jj|}|sB|j|}y |j}Wntk rid}YnXtd|||fqWdS)N:z(no description available)z %-*s %s)rrWrerr6AttributeError)rrrr max_lengthcmdrr6rHrHrIprint_command_lists    zDistribution.print_command_listcCsddl}|jj}i}x|D]}d||.rzdistutils.commandr)rXrrrinsert)rrZpkgsrHrHrIget_command_packagess    z!Distribution.get_command_packagescCs|jj|}|r|Sx|jD]}d||f}|}yt|tj|}Wntk rww)YnXyt||}Wn+tk rt d|||fYnX||j|<|SWt d|dS)Nz%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s') rWrer __import__rjr ImportErrorrVrr)rrrurZpkgname module_nameZ klass_namemodulerHrHrIrs(     zDistribution.get_command_classcCs|jj|}| r|rtr6|jd||j|}||}|j||jd|xz|jD]l\}\}}tr}|jd|||fydd|jD}Wntk rg}YnXy |j}Wntk ri}YnXyt|t } ||kr| rt |||t | nf||krG| rGt ||t |n;t ||rit |||nt d|||fWqKtk r} zt | WYdd} ~ XqKXqKWdS)Nz# setting options for '%s' command:z %s = %s (from %s)cSsg|]}t|qSrH)r)rForHrHrIrJqs z5Distribution._set_command_options..z1error in %s: command '%s' has no such option '%s')get_command_namergr rrfZboolean_optionsrrrrrRrrmrr) rrrcZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringryrHrHrIr]s>         z!Distribution._set_command_optionsrcCsddlm}t||s7|}|j|}n |j}|jsP|S|jd|_d|j|<|j||rx$|j D]}|j ||qW|S)Nr)r) rrrrrZ finalizedZinitialize_optionsrdrZget_sub_commandsreinitialize_command)rrruZreinit_subcommandsrrsubrHrHrIrs      z!Distribution.reinitialize_commandcCstj||dS)N)r )rrrylevelrHrHrIrszDistribution.announcecCs%x|jD]}|j|q WdS)N)r run_command)rrrrHrHrI run_commandsszDistribution.run_commandscCsZ|jj|rdStjd||j|}|j|jd|j|Nr?)r@NrA)rBNrC)rDNrE)(r __module__ __qualname__rrrrQrr|rgrrrrrrrqrrrrrrrrrrr INFOrrrrrrrrrrrrHrHrHrIr s      0: C [ 1 (  ! " &,)        r c@soeZdZdNZdddZddZddZddZddZd d!Z d"d#Z d$d%Z d&d'Z d(d)Z d*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5ZeZd6d7Zd8d9Zd:d;Zd<d=Zd>d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZ dS)OrSrrr$ author_emailr(maintainer_emailr0r2r6long_descriptionr>r:r"r, contact_emailr< download_urlr@rBrDNcCs|dk r"|jt|nd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenrrr$r r(r r0r2r6r r>r:r<rr@rBrD)rrrrHrHrIr|s&                 zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d|_|d |_d|_|d |_|d |_ d kr|d |_ n d|_ |d|_ |d|_dkr|dj d|_ |d|_|d|_|dkrx|d|_|d|_|d|_nd|_d|_d|_dS)Ncs|}|dkrdS|S)NUNKNOWNrH)rr)ryrHrI _read_fields  z7DistributionMetadata.read_pkg_file.._read_fieldcs&j|d}|gkr"dS|S)N)Zget_all)rvalues)ryrHrI _read_list$s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionrrZsummaryr$z author-emailz home-pager2z download-urlr6r>rplatformZ classifierz1.1rBr@rD)rrrr6r$r(r r r0r2rr rr>r:r<rBr@rD)rrfilerrZmetadata_versionrH)ryrIrs:          z"DistributionMetadata.read_pkg_filec Cs?ttjj|dddd}|j|WdQRXdS)NzPKG-INFOwencodingzUTF-8)rrrrwrite_pkg_file)rrbase_dirZpkg_inforHrHrIwrite_pkg_infoNs z#DistributionMetadata.write_pkg_infocCsd}|js3|js3|js3|js3|jr9d}|jd||jd|j|jd|j|jd|j|jd|j |jd|j |jd |j |jd |j |jr|jd |jt |j}|jd |d j|j}|rW|jd||j|d|j|j|d|j|j|d|j|j|d|j|j|d|jdS)Nz1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ Obsoletes)r@rBrDr<rrlget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionr get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)rrrrZ long_descr>rHrHrIrUs0 z#DistributionMetadata.write_pkg_filecCs,x%|D]}|jd||fqWdS)Nz%s: %s )rl)rrrrrrrHrHrIr%ws z DistributionMetadata._write_listcCs |jp dS)Nr)r)rrrHrHrIr}szDistributionMetadata.get_namecCs |jp dS)Nz0.0.0)r)rrrHrHrIrsz DistributionMetadata.get_versioncCsd|j|jfS)Nz%s-%s)rr)rrrHrHrI get_fullnamesz!DistributionMetadata.get_fullnamecCs |jp dS)Nr)r$)rrrHrHrI get_authorszDistributionMetadata.get_authorcCs |jp dS)Nr)r )rrrHrHrIget_author_emailsz%DistributionMetadata.get_author_emailcCs |jp dS)Nr)r()rrrHrHrIget_maintainersz#DistributionMetadata.get_maintainercCs |jp dS)Nr)r )rrrHrHrIget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr)r(r$)rrrHrHrIr sz DistributionMetadata.get_contactcCs|jp|jpdS)Nr)r r )rrrHrHrIr!sz&DistributionMetadata.get_contact_emailcCs |jp dS)Nr)r0)rrrHrHrIrszDistributionMetadata.get_urlcCs |jp dS)Nr)r2)rrrHrHrIr"sz DistributionMetadata.get_licensecCs |jp dS)Nr)r6)rrrHrHrIrsz$DistributionMetadata.get_descriptioncCs |jp dS)Nr)r )rrrHrHrIr#sz)DistributionMetadata.get_long_descriptioncCs |jp gS)N)r>)rrrHrHrIr$sz!DistributionMetadata.get_keywordscCs|jpdgS)Nr)r:)rrrHrHrIr&sz"DistributionMetadata.get_platformscCs |jp gS)N)r<)rrrHrHrIr'sz$DistributionMetadata.get_classifierscCs |jp dS)Nr)r)rrrHrHrIget_download_urlsz%DistributionMetadata.get_download_urlcCs |jp gS)N)rB)rrrHrHrIr(sz!DistributionMetadata.get_requirescCs:ddl}x|D]}|jj|qW||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterB)rrrrr rHrHrI set_requiress  z!DistributionMetadata.set_requirescCs |jp gS)N)r@)rrrHrHrIr)sz!DistributionMetadata.get_providescCsMdd|D}x*|D]"}ddl}|jj|qW||_dS)NcSsg|]}|jqSrH)r)rFr rHrHrIrJs z5DistributionMetadata.set_provides..r)r1r2Zsplit_provisionr@)rrrr rrHrHrI set_providess   z!DistributionMetadata.set_providescCs |jp gS)N)rD)rrrHrHrIr*sz"DistributionMetadata.get_obsoletescCs:ddl}x|D]}|jj|qW||_dS)Nr)r1r2r3rD)rrrrr rHrHrI set_obsoletess  z"DistributionMetadata.set_obsoletes)rrr$r r(r r0r2r6r r>r:r"r,r r2r<rr@rBrD)!rrrrUr|rrrr%rrr+r,r-r.r/r r!rr"Z get_licencerr#r$r&r'r0r(r4r)r5r*r6rHrHrHrIrSsH  4  "                       rScCs2g}x%|D]}|j|ddq W|S)Nr)r)rMZ new_optionsZ help_tuplerHrHrIrs r)rjrreZemailrrhrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrr Zdistutils.debugr compilerr rSrrHrHrHrIs&      PKq|]z'__pycache__/config.cpython-35.opt-1.pycnu[ Yf@sRdZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@seZdZdZdZdZdZdZdddefdgZdgZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s] show-response&display full response text from servercCstjjtjjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduser)selfr5/opt/alt/python35/lib64/python3.5/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec Cs\|j}tjtj|tjtjBdd}|jt||fWdQRXdS)zCreates a default .pypirc file.iwN)rr fdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)rusernamepasswordrcfrrr _store_pypirc*s .zPyPIRCCommand._store_pypircc CsM|j}tjj|rI|jd||jp>|j}|jpP|j}t }|j ||j }d|kr|j dd}dd|j dD}|gkrd|krdg}niSxo|D]}d|i} |j |d | d >s z.PyPIRCCommand._read_pypirc.. rr!r repositoryrealmrNz server-login)rN)rr r existsZannouncer$DEFAULT_REPOSITORYr% DEFAULT_REALMrreadsectionsgetsplitZ has_option) rrr$r%configr*Z index_serversZ_serversr!Zcurrentkeydefaultrrr _read_pypirc0sX                   zPyPIRCCommand._read_pypirccCsPddl}|jdd}|j|djdd}|jj|S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr+r)decode)rZresponser4Z content_typeencodingrrr_read_pypi_responseqs z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r$r%Z show_response)rrrrinitialize_optionsxs  z PyPIRCCommand.initialize_optionscCs:|jdkr|j|_|jdkr6|j|_dS)zFinalizes options.N)r$r'r%r()rrrrfinalize_options~s zPyPIRCCommand.finalize_options)rNr)__name__ __module__ __qualname____doc__r'r(r$r%Z user_optionsZboolean_optionsrrr0r7r8r9rrrrrs"      A  r)r=r Z configparserrZ distutils.cmdrrrrrrrs   PKq|]B-__pycache__/archive_util.cpython-35.opt-1.pycnu[ Yf&@sdZddlZddlmZddlZyddlZWnek rXdZYnXddlmZddl m Z ddl m Z ddl mZyddlmZWnek rdZYnXydd lmZWnek rdZYnXd d Zd d ZdddddddZddddZded&gdfded'gdfded(gdfded)gdfded*gdfd egd!fiZd"d#Zddddddd$d%ZdS)+zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamc Cs_tdks|dkrdSyt|}Wntk rFd}YnX|dk r[|dSdS)z"Returns a gid, given a group name.N)rKeyError)nameresultr ;/opt/alt/python35/lib64/python3.5/distutils/archive_util.py_get_gids   rc Cs_tdks|dkrdSyt|}Wntk rFd}YnX|dk r[|dSdS)z"Returns an uid, given a user name.Nr )rr )r r r r r_get_uid+s   rgzipc sddddddddddi}dd dd dd dd i}|dk rl||jkrltd |d} |dkr| |j|d7} ttjj| d|ddl} tj dt t fdd} |sE| j | d||} z| j |d| Wd| jX|dkrtdt| ||} tjdkr|| | g}n|d| g}t|d|| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. rZgzbzip2bz2xzNcompressz.gzz.bz2z.xzz.ZzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tardry_runrzCreating tar archivecs@dk r|_|_dk r<|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidas      z"make_tarball.._set_uid_gidzw|%sfilterz'compress' will be deprecated.win32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer&rtarZcompressed_namecmdr )rrrrr make_tarball7s<             r3c Cs|d}ttjj|d|tdkr|rAd}nd}y td|||gd|Wqtk rtd|YqXntjd|||sytj |d d tj }Wn-t k rtj |d d tj }YnXxtj |D]t\}}} xb| D]Z} tjjtjj|| } tjj| r|j| | tjd | qWqW|j|S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.ziprNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itwZ compressionz adding '%s')rr#r$r%zipfilerrrr'ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDwalknormpathjoinisfilewriter*) r.r/r0rZ zip_filenameZ zipoptionsr4dirpathZdirnames filenamesr r$r r r make_zipfiles:         ! r?Zgztarrzgzip'ed tar-fileZbztarrzbzip2'ed tar-fileZxztarrzxz'ed tar-fileZztarzcompressed tar filer1zuncompressed tar filer4zZIP filecCs%x|D]}|tkr|SqWdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss  rBcCs7tj}|dk rMtjd|tjj|}|sMtj||dkrbtj}d|i} yt|} Wn"t k rt d|YnX| d} x"| dD]\} } | | | sB         G5 PKq|]SW%__pycache__/core.cpython-35.opt-1.pycnu[ Yf"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad4Zd5Zd/d0Zdd1d2d3ZdS)6a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstjj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr3/opt/alt/python35/lib64/python3.5/distutils/core.py gen_usage sr distclassr script_argsoptionsnameversionauthor author_email maintainermaintainer_emailurllicense descriptionlong_descriptionkeywords platforms classifiers download_urlrequiresprovides obsoletessources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_args swig_optsexport_symbolsdependslanguagec,Ks|jd}|r|d=nt}d|krNtjjtjd|dd|krt d|nt d |d|fWYdd}~XnXt d kr|S|j t rt d |jt d kr*|Sy|j}WnBtk r~}z"t t|jd |WYdd}~XnXt rt d|jt dkr|S|ry|jWntk rt dYntk r7}z;t rtjjd|fnt d|fWYdd}~XnMttfk r}z't r[nt dt|WYdd}~XnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`%    '     0    %)rGruncCs|d krtd|f|atj}d|i}i}yvz_|tjd<|dk rr|tjd ds2      qPKq|]"Z 8 8-__pycache__/msvccompiler.cpython-35.opt-2.pycnu[ ]\@sddlZddlZddlmZmZmZmZmZddlm Z m Z m Z ddl m Z dZy@ddlZdZeZejZejZejZejZWnek r4yLddlZddlZdZeZejZejZejZejZWnek r/e jdYnXYnXerYejejejej fZ!dd Z"d d Z#d d Z$GdddZ%ddZ&ddZ'ddZ(Gddde Z)e&dkr e j*de)Z+ddl,m)Z)ddl,m%Z%dS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsyt||}Wntk r+dSYnXg}d}xDyt||}Wntk rcPYnX|j||d7}q;W|S)Nr) RegOpenKeyExRegError RegEnumKeyappend)basekeyhandleLikr1/opt/alt/python35/lib64/python3.5/msvccompiler.py read_keys7s    rcCsyt||}Wntk r+dSYnXi}d}xbyt||\}}}Wntk rlPYnX|j}t||t|<|d7}q;W|S)Nrr )r r RegEnumValuelower convert_mbcs)rrrdrnamevaluetyperrr read_valuesHs    r c CsGt|dd}|dk rCy|d}Wntk rBYnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr]s  rc@s@eZdZddZddZddZddZd S) MacroExpandercCsi|_|j|dS)N)macros load_macros)selfversionrrr__init__gs zMacroExpander.__init__cCs@x9tD]1}t||}|r|||jd| sX(                   -   PKq|] .##0__pycache__/cygwinccompiler.cpython-35.opt-1.pycnu[ YfZ@@sgdZddlZddlZddlZddlmZmZmZddlZddl m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZdd lmZd d ZGd dde ZGdddeZdZdZdZ ddZ!ej"dZ#ddZ$ddZ%ddZ&dS)adistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjjd}|dkrtj|d|d}|dkrLdgS|dkr_dgS|d krrd gS|d krd gS|d krdgStd|dS)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)sysversionfind ValueError)Zmsc_posZmsc_verr>/opt/alt/python35/lib64/python3.5/distutils/cygwinccompiler.py get_msvcr?s      rc @seZdZdZdZdZdZdZdZdZ dZ d d d d d Z d d Z dddddd dddddd Z d dddZdS)CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. cygwinz.oz.az.dllzlib%s%sz%s%sz.exerc CsPtj||||t\}}|jd||f|tk rY|jd|t\|_|_|_ |j|j d|j|j|j f|jdkrd|_ n d|_ |jdkrd}nd }|j d d d d dddddd|j |f|jdkr@dg|_ |jdn t|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticcompilerzgcc -mcygwin -O -Wall compiler_sozgcc -mcygwin -mdll -O -Wall compiler_cxxzg++ -mcygwin -O -Wall linker_exez gcc -mcygwin linker_soz%s -mcygwin %sz2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr$ds<       zCygwinCCompiler.__init__cCs|dks|dkroy |jdd|d|gWqtk rk}zt|WYdd}~XqXn]y)|j|j||d|g|Wn1tk r}zt|WYdd}~XnXdS)z:Compiles the source by spawning GCC and windres if needed.z.rcz.resZwindresz-iz-oN)Zspawnr r r )r/objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles " zCygwinCCompiler._compileNcCstj| pg} tj|p$g}tj|p9g}|j|j|dk r||jksy|jdkrtjj|d}tjjtjj |\}}tjj ||d}tjj |d|d}dtjj |dg}x|D]}|j |q W|j t ||fd ||jd krx| jd |g| jd |gn |j || s| j d tj||||||||d| | | | | dS)zLink the objects.Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr.Z EXECUTABLEr,ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r/Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr7Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrDs:          zCygwinCCompiler.linkcCs|dkrd}g}x|D]}tjjtjj|\}}||jddgkrxtd||f|rtjj|}|dkr|jtjj||||j q|jtjj|||j qW|S)z#Adds supports for rc and res files.NrH.rc.resz"unknown file type '%s' (from '%s'))rJrI) r=r>r@normcaseZsrc_extensionsr rArCrB obj_extension)r/Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess   $ z CygwinCCompiler.object_filenames)__name__ __module__ __qualname____doc__r+rLZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr$r9rDrNrrrrrYs ;   Krc@s1eZdZdZdZdddddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rcCstj|||||jdkr.d}nd}|jdkrLd}nd}trgtd|jdd d d d d dddd|j||fg|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rHz1Cygwin gcc cannot be used with --compiler=mingw32rz gcc -O -Wallr zgcc -mdll -O -Wallr!z g++ -O -Wallr"rr#z%s %s %s) rr$r*r) is_cygwingccr r-r,r.r)r/r0r1r2r3Z entry_pointrrrr$s&       zMingw32CCompiler.__init__N)rOrPrQrRr+r$rrrrrSs rSokznot okZ uncertaincCsddlm}dtjkr)tdfS|j}yPt|}z2d|jkrgtd|fStd|fSWd|j XWn<t k r}zt d ||j ffSWYdd}~XnXdS) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'Nzcouldn't read '%s': %s) distutilsrVrrr&get_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rVfnconfig_hexcrrrr%Hs   r%s(\d+\.\d+(\.\d+)*)c Cs|jd}t|dkr&dSt|dddtj}z|j}Wd|jXtj|}|dkr~dSt |j dj S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNshellTstdoutr) splitrrrrdrZr\ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus  rocCs&dddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|]}t|qSr)ro).0rjrrr s z get_versions..)tuple)Zcommandsrrrr(sr(cCs%tddg}|jjdS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rmrrrrTsrT)'rRr=rr; subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rWr Zdistutils.versionrZdistutils.spawnrrrrSr&r[r^r%compilerfror(rTrrrrs.)    " 1 +  PKq|]T&__pycache__/debug.cpython-35.opt-2.pycnu[ ]@s"ddlZejjdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr*/opt/alt/python35/lib64/python3.5/debug.pys PKq|]891__pycache__/versionpredicate.cpython-35.opt-1.pycnu[ Yf  @sdZddlZddlZddlZejdejZejdZejdZ ddZ dej d ej d ej d ejd ejd ejiZGdddZdaddZdS)zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCsMtj|}|s%td||j\}}|tjj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr ?/opt/alt/python35/lib64/python3.5/distutils/versionpredicate.pysplitUps rz>=z!=c@s:eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|j}|stdtj|}|sCtd||j\|_}|j}|rtj|}|std||jd}dd|jdD|_|jstd|n g|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|]}t|qSr )r).0ZaPredr r r ts z-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$     zVersionPredicate.__init__cCsF|jr;dd|jD}|jddj|dS|jSdS)NcSs*g|] \}}|dt|qS) )r)rcondverr r r r}s z,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{s zVersionPredicate.__str__cCs5x.|jD]#\}}t|||s dSq WdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr#r%r r r r rs ?  rcCstdkr!tjdtja|j}tj|}|sRtd||jdpdd}|rtj j |}|jd|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions   r3)r)r-Zdistutils.versionroperatorr.r/rrrrltleeqgtgener$rr,r3r r r r s      !nPKq|]E )__pycache__/__init__.cpython-35.opt-2.pycnu[ ]@s/ddlZejdejjdZdS)N )sysversionindex __version__rr-/opt/alt/python35/lib64/python3.5/__init__.py s PKq|]-__pycache__/bcppcompiler.cpython-35.opt-2.pycnu[ ]W:@sddlZddlmZmZmZmZmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZGddde ZdS) N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZiZdgZdddgZeeZdZdZ dZ d Z Z d Z d d d d d Zdddd dddddZdd dddZdddddd dddddd Zd ddZd dddZdddddddZdS) BCPPCompilerZbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverbosedry_runforcer1/opt/alt/python35/lib64/python3.5/bcppcompiler.pyr5s     zBCPPCompiler.__init__Nc Cs|j||||||\}} }} } |p6g} | jd|r_| j|jn| j|jx| D]} y| | \}}Wntk rwvYnXtjj|}tjj| } |j tjj | |dkrqv|dkrTy|j dd| |gWqvt k rP}zt |WYdd}~XqvXqv||jkrld}n||jkrd}nd}d| }y4|j |jg| | ||g||gWqvt k r}zt |WYdd}~XqvXqvW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF         .#zBCPPCompiler.compilec Cs|j||\}}|j|d|}|j||r|dg|}|rUy|j|jg|Wqtk r}zt|WYdd}~XqXntjd|dS)Nr+z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr(rrrr r.) rr1Zoutput_libnamer+r. target_langoutput_filenameZlib_argsr6rrrcreate_static_libs"zBCPPCompiler.create_static_libc Cs|j||\}}|j|||\}}}|rRtjdt||dk rstjj||}|j||r|t j krd}| r|j dd}q|j dd}n5d}| r|j dd}n|jdd}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x+|pgD]}|jd||fqW|jt||fd |ttjj|}|g}g}x[|D]S}tjjtjj|\}}|d kr:|j|q|j|qWx+|D]#}|jd tjj|qRW|jd |j||jd |g|jdxL|D]D}|j||| }|dkr|j|q|j|qW|jd|jd|jd |g|jd |j|| r_| |dd<| rr|j| |jtjj|y|j|jg|Wqtk r}zt|WYdd}~XqXntjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r8Z _fix_lib_argsr warnstrr#r$joinr:rZ EXECUTABLErrrrsplitsplitextr'r Zexecuter mapr%normcaser!find_library_filer&r(rrrr.) rZ target_descr1r<r+Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr.r/r0Z build_tempr;Z startup_objZld_argsZdef_fileheadtailmodnamer5Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler6rrrlinks|         $  !          "zBCPPCompiler.linkc Cs|r-|d}|d|d||f}n|d|f}xW|D]K}xB|D]:}tjj||j|}tjj|rQ|SqQWqDWdSdS)NZ_dZ_bcpp)r#r$rAr9exists) rdirsrr.ZdlibZ try_namesdirnamerNrrrrF4s     zBCPPCompiler.find_library_filercCs|dkrd}g}x|D]}tjjtjj|\}}||jddgkrxtd||f|rtjj|}|dkr|jtjj|||q|dkr|jtjj||dq|jtjj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r#r$rCrEsrc_extensionsrbasenamer rA obj_extension)rZsource_filenamesZ strip_dirr+Z obj_namesZsrc_namerLr5rrrobject_filenamesNs"  $ # #zBCPPCompiler.object_filenamesc Cs#|jd||\}}}t||}dg|} |dk rW| jd||rm|| dd<|r| j|| j||js|dkst||r|r|jtjj |y|j | Wn;t k r} zt | t | WYdd} ~ XnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr r r!rr r&r#r$r'r(rprintr) rsourceZ output_filer,r-r/r0_r2Zpp_argsr6rrr preprocessis$     $ zBCPPCompiler.preprocess)__name__ __module__ __qualname__Z compiler_typeZ executablesr)r*rTrVZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr7r=rOrFrWr[rrrrrsH     B|r)r#Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs .PKq|]E>E>'__pycache__/msvccompiler.cpython-35.pycnu[ Yf\@sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZy@ddlZdZeZejZejZejZejZWnek r:yLddlZddlZdZeZejZejZejZejZWnek r5ejdYnXYnXer_ejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkrej+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsyt||}Wntk r+dSYnXg}d}xDyt||}Wntk rcPYnX|j||d7}q;W|S)zReturn list of registry keys.Nr) RegOpenKeyExRegError RegEnumKeyappend)basekeyhandleLikr;/opt/alt/python35/lib64/python3.5/distutils/msvccompiler.py read_keys7s    rcCsyt||}Wntk r+dSYnXi}d}xbyt||\}}}Wntk rlPYnX|j}t||t|<|d7}q;W|S)zXReturn dict of registry keys and values. All names are converted to lowercase. Nrr )r r RegEnumValuelower convert_mbcs)rrrdrnamevaluetyperrr read_valuesHs    r c CsGt|dd}|dk rCy|d}Wntk rBYnX|S)Ndecodembcs)getattr UnicodeError)sZdecrrrr]s  rc@s@eZdZddZddZddZddZd S) MacroExpandercCsi|_|j|dS)N)macros load_macros)selfversionrrr__init__gs zMacroExpander.__init__cCs@x9tD]1}t||}|r|||jd|sZ(                   -   PKq|] .##*__pycache__/cygwinccompiler.cpython-35.pycnu[ YfZ@@sgdZddlZddlZddlZddlmZmZmZddlZddl m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZdd lmZd d ZGd dde ZGdddeZdZdZdZ ddZ!ej"dZ#ddZ$ddZ%ddZ&dS)adistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjjd}|dkrtj|d|d}|dkrLdgS|dkr_dgS|d krrd gS|d krd gS|d krdgStd|dS)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)sysversionfind ValueError)Zmsc_posZmsc_verr>/opt/alt/python35/lib64/python3.5/distutils/cygwinccompiler.py get_msvcr?s      rc @seZdZdZdZdZdZdZdZdZ dZ d d d d d Z d d Z dddddd dddddd Z d dddZdS)CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. cygwinz.oz.az.dllzlib%s%sz%s%sz.exerc CsPtj||||t\}}|jd||f|tk rY|jd|t\|_|_|_ |j|j d|j|j|j f|jdkrd|_ n d|_ |jdkrd}nd }|j d d d d dddddd|j |f|jdkr@dg|_ |jdn t|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticcompilerzgcc -mcygwin -O -Wall compiler_sozgcc -mcygwin -mdll -O -Wall compiler_cxxzg++ -mcygwin -O -Wall linker_exez gcc -mcygwin linker_soz%s -mcygwin %sz2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr$ds<       zCygwinCCompiler.__init__cCs|dks|dkroy |jdd|d|gWqtk rk}zt|WYdd}~XqXn]y)|j|j||d|g|Wn1tk r}zt|WYdd}~XnXdS)z:Compiles the source by spawning GCC and windres if needed.z.rcz.resZwindresz-iz-oN)Zspawnr r r )r/objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles " zCygwinCCompiler._compileNcCstj| pg} tj|p$g}tj|p9g}|j|j|dk r||jksy|jdkrtjj|d}tjjtjj |\}}tjj ||d}tjj |d|d}dtjj |dg}x|D]}|j |q W|j t ||fd ||jd krx| jd |g| jd |gn |j || s| j d tj||||||||d| | | | | dS)zLink the objects.Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr.Z EXECUTABLEr,ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r/Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr7Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrDs:          zCygwinCCompiler.linkcCs|dkrd}g}x|D]}tjjtjj|\}}||jddgkrxtd||f|rtjj|}|dkr|jtjj||||j q|jtjj|||j qW|S)z#Adds supports for rc and res files.NrH.rc.resz"unknown file type '%s' (from '%s'))rJrI) r=r>r@normcaseZsrc_extensionsr rArCrB obj_extension)r/Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess   $ z CygwinCCompiler.object_filenames)__name__ __module__ __qualname____doc__r+rLZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr$r9rDrNrrrrrYs ;   Krc@s1eZdZdZdZdddddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rcCstj|||||jdkr.d}nd}|jdkrLd}nd}trgtd|jdd d d d d dddd|j||fg|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rHz1Cygwin gcc cannot be used with --compiler=mingw32rz gcc -O -Wallr zgcc -mdll -O -Wallr!z g++ -O -Wallr"rr#z%s %s %s) rr$r*r) is_cygwingccr r-r,r.r)r/r0r1r2r3Z entry_pointrrrr$s&       zMingw32CCompiler.__init__N)rOrPrQrRr+r$rrrrrSs rSokznot okZ uncertaincCsddlm}dtjkr)tdfS|j}yPt|}z2d|jkrgtd|fStd|fSWd|j XWn<t k r}zt d ||j ffSWYdd}~XnXdS) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'Nzcouldn't read '%s': %s) distutilsrVrrr&get_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rVfnconfig_hexcrrrr%Hs   r%s(\d+\.\d+(\.\d+)*)c Cs|jd}t|dkr&dSt|dddtj}z|j}Wd|jXtj|}|dkr~dSt |j dj S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNshellTstdoutr) splitrrrrdrZr\ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus  rocCs&dddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|]}t|qSr)ro).0rjrrr s z get_versions..)tuple)Zcommandsrrrr(sr(cCs%tddg}|jjdS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rmrrrrTsrT)'rRr=rr; subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rWr Zdistutils.versionrZdistutils.spawnrrrrSr&r[r^r%compilerfror(rTrrrrs.)    " 1 +  PKq|]S9""$__pycache__/text_file.cpython-35.pycnu[ Yf0@sAdZddlZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@seZdZdZddddddddddd dd d iZd d d dZddZddZd ddZd ddZ d ddZ ddZ ddZ ddZ d S)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.strip_comments skip_blanks lstrip_wsr rstrip_ws join_lines collapse_joinerrorsstrictNcKs|dkr$|dkr$tdxQ|jjD]@}||kr]t||||q4t|||j|q4Wx3|jD]%}||jkrtd|qW|dkr|j|n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsZoptr8/opt/alt/python35/lib64/python3.5/distutils/text_file.py__init__Ns      zTextFile.__init__cCs7||_tj|jdd|j|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.rr rN)riorr rr)rrrrrros !z TextFile.opencCs2|j}d|_d|_d|_|jdS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs     zTextFile.closecCsg}|dkr|j}|j|jdt|ttfr^|jdt|n|jd||jt|dj|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errors  zTextFile.gen_errorcCs td|j||dS)Nzerror: ) ValueErrorr&)rr$r%rrrerrorszTextFile.errorcCs(tjjd|j||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter&)rr$r%rrrwarnsz TextFile.warncCs|jr$|jd }|jd =|Sd}xu|jj}|dkrNd}|jr|r|jd}|dkr{nz|dks||ddkr|ddkrdpd}|d||}|jdkrq-n|jdd}|jr|r|dkr!|jd |S|j r6|j }||}t |j t rm|j dd|j ds$PKq|]e:`G`G*__pycache__/ccompiler.cpython-35.opt-2.pycnu[ ]7 @stddlZddlZddlZddlTddlmZddlmZddlm Z ddl m Z m Z ddl mZmZddlmZGd d d Zd d fd d fddffZddddZd dddfddddfddddfddddfdd d!d"fiZd#d$Zdddddd%d&Zd'd(Zd)d*ZdS)+N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dddddddddd iZ dd dgZ d d d d d Z d dZddZddZddZdddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Z dd3d4Z!d5d6Z"d7d8Z#d9d:Z$d;d<Z%dddddd=d>Z&dddd dddd?d@Z'dAdBZ(dd ddCdDZ)dEZ*dFZ+dGZ,dddddd dddddHdI Z-dddddd dddddJdK Z.dddddd dddddLdM Z/ddddd ddddNdOZ0dPdQZ1dRdSZ2dTdUZ3dddddVdWZ4d dXdYZ5d dZd[d\Z6d dZd]d^Z7d dZd_d`Z8dad dZdbdcZ9dddedfZ:dgdhZ;didjZ<ddddkdlZ=dmdnZ>dodpZ?dqdrdsZ@dS)t CCompilerNz.ccz.cczc++z.cppz.cxxz.mZobjcrcCs||_||_||_d|_g|_g|_g|_g|_g|_g|_ x.|j j D]}|j ||j |qjWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr./opt/alt/python35/lib64/python3.5/ccompiler.py__init__Us          zCCompiler.__init__cKsTxM|D]E}||jkr8td||jjf|j|||qWdS)Nz$unknown executable '%s' for class %s)r ValueError __class____name__r)rkwargsrrrrset_executablesys  zCCompiler.set_executablescCs<t|tr(t||t|nt|||dS)N) isinstancestrsetattrr)rrvaluerrrrszCCompiler.set_executablecCs<d}x/|jD]$}|d|kr*|S|d7}qWdS)Nr)r)rnameidefnrrr _find_macros zCCompiler._find_macrocCsx}|D]u}t|toat|dkoat|dtsQ|ddkoat|dtstd|ddqWdS)Nr(rzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r(r-)r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss # z"CCompiler._check_macro_definitionscCs?|j|}|dk r%|j|=|jj||fdS)N)r,rappend)rr)r'r*rrr define_macros   zCCompiler.define_macrocCsB|j|}|dk r%|j|=|f}|jj|dS)N)r,rr2)rr)r*Zundefnrrrundefine_macros    zCCompiler.undefine_macrocCs|jj|dS)N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|jj|dS)N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|jj|dS)N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|jj|dS)N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|jj|dS)N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts3td|dkrK|j}n1t|trp||jpig}n td|dkr|j}n=t|ttfrt||jpg}n td|dkrg}|j|ddd|}t ||}i} xmt t |D]Y} || } || } t j j| d} |jt j j| | | f| | 'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&          zCCompiler._fix_lib_argscCsE|jr dS|jr.t||dd}nt||}|SdS)NTmissingnewer)rr r)rr output_filer]rrr _need_links   zCCompiler._need_linkc Cst|ts|g}d}t|j}x{|D]s}tjj|\}}|jj|}y.|jj |}||kr|}|}Wq4t k rYq4Xq4W|S)N) r$rDr/language_orderrHrIrJ language_mapgetindexr) rrLlangrcsourcebaserSZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)Nr)rrer^rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc Cs|j||||||\}} }} } |j| ||} xV| D]N} y| | \}}Wntk rzwIYnX|j| ||| || qIW| S)N)rTrWKeyError_compile)rrLrrrrUrhrirMrrOrPrVrRrQrSrrrcompiles6   zCCompiler.compilecCsdS)Nr)rrRrQrSrVrirOrrrrlCszCCompiler._compilecCsdS)Nr)rroutput_libnamerrU target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCs tdS)N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrUrhri build_temprorrrlinkis9zCCompiler.linkc CsG|jtj||j|dd||||||| | | | dS)Nlib_typeshared)rvr SHARED_LIBRARYlibrary_filename) rrrnrrrrrtrUrhrirurorrrlink_shared_libs  zCCompiler.link_shared_libc Cs8|jtj||||||||| | | | dS)N)rvr SHARED_OBJECT) rrrsrrrrrtrUrhrirurorrrlink_shared_objects  zCCompiler.link_shared_objectc CsA|jtj||j|||||d||| d| dS)N)rvr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrUrhrirorrrlink_executables  zCCompiler.link_executablecCs tdS)N)rr)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCs tdS)N)rr)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCs tdS)N)rr)rlibrrrlibrary_optionszCCompiler.library_optionc CsAddl}|dkrg}|dkr0g}|dkrBg}|dkrTg}|jd|dd\}}tj|d} z7x|D]} | jd| qW| jd|Wd| jXy|j|gd|} Wntk rd SYnXy |j| d d |d |Wnt t fk r<d SYnXdS) Nrz.ctextTwz#include "%s" z+main (int argc, char **argv) { %s(); } rFza.outrr) tempfilemkstemprHfdopenwriteclosermZ CompileErrorrZ LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8           zCCompiler.has_functioncCs tdS)N)rr)rr7rrUrrrfind_library_file#szCCompiler.find_library_filecCs|dkrd}g}x|D]}tjj|\}}tjj|d}|tjj|d}||jkrtd||f|rtjj|}|jtjj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rHrIrJ splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namerfrSrrrrENs  zCCompiler.object_filenamescCs2|rtjj|}tjj|||jS)N)rHrIrrshared_lib_extension)rrrCrrrrshared_object_filename_sz CCompiler.shared_object_filenamecCs8|rtjj|}tjj|||jp3dS)Nr)rHrIrr exe_extension)rrrCrrrrreszCCompiler.executable_filenamestaticc Cs|d krtdt||d}t||d}tjj|\}}|||f} |rrd}tjj||| S) Nrrxdylib xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rrxrr)rgetattrrHrIsplitr) rr9rwrCrfmtrSr5rffilenamerrrrzks  zCCompiler.library_filenamer(cCstj|dS)N)r rU)rmsglevelrrrannounce~szCCompiler.announcecCs$ddlm}|r t|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_printszCCompiler.debug_printcCstjjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst|d|jdS)Nr )rr )rcmdrrrrszCCompiler.spawncCst||d|jS)Nr )rr )rrQdstrrrrszCCompiler.move_fileicCst||d|jdS)Nr )rr )rr)moderrrrszCCompiler.mkpath)Ar! __module__ __qualname__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrrar`rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrTrWrXrYrZr[r_rgrjrmrlrpr|ryr~rvr{r}rrrrrrrErrrzrrrr rrrrrrrr s  $              +   "   B 4     *+    r zcygwin.*unixposixntZmsvccCsy|dkrtj}|dkr*tj}xHtD]@\}}tj||dk smtj||dk r1|Sq1WdS)Nr)rHr)rplatform_default_compilersrematch)osnamerpatterncompilerrrrget_default_compilers    rZ unixccompilerZ UnixCCompilerzstandard UNIX-style compilerZ _msvccompilerZ MSVCCompilerzMicrosoft Visual C++cygwinZcygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32Zmingw32ZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32ZbcppZ bcppcompilerZ BCPPCompilerzBorland C++ CompilercCsvddlm}g}x6tjD](}|jd|dt|dfq#W|j||}|jddS)Nr) FancyGetoptz compiler=r-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sort print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y/|dkr0t|}t|\}}}WnBtk rd|}|dk rx|d|}t|YnXy5d|}t|tj|} t | |} WnIt k rt d|Yn(tk r t d||fYnX| d||S)Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rHr)rrrkZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr r module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2            rcCsg}x|D]}t|toAdt|ko?dknsTtd|t|dkr~|jd|dq t|dkr |ddkr|jd|dq |jd|q Wx|D]}|jd|qW|S) Nr(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrOZmacror5rrrrF s 1  rFc Csg}x$|D]}|j|j|q WxF|D]>}|j|}t|tre||}q4|j|q4Wx|D]y}tjj|\}} |r|j|g| } | r|j| q|j d|q}|j|j |q}W|S)Nz6no library file corresponding to '%s' found (skipping)) r2rrr$rDrHrIrrrr) rrrrZlib_optsr5optrZlib_dirZlib_nameZlib_filerrrgen_lib_options7s$      r)rrHrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrFrrrrrs:$          - -PKq|]t$A<<*__pycache__/extension.cpython-35.opt-2.pycnu[ ])@sGddlZddlZddlZGdddZddZdS)Nc@sReZdZddddddddddddddddZddZdS) ExtensionNcKs|t|tstdt|to@tdd|DsOtd||_||_|pjg|_|pyg|_|pg|_ |pg|_ |pg|_ |pg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrxdd|D}djt|}d |}tj|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr./opt/alt/python35/lib64/python3.5/extension.py ksz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|]}t|qSr)repr)roptionrrr s z&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwoptionsmsgrrr__init__Ws4       zExtension.__init__cCs)d|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r%rrr__repr__s   zExtension.__repr__)__name__r+r,r)r.rrrrrs D!rcCsddlm}m}m}ddlm}ddlm}||}||ddddddd dd d}zg}x|j} | dkrP|j | rq~| d| d'kod knr|j d | q~|| |} || } | d} t | g} d} x`| ddD]N}| dk rT| j |d} q,t jj|d}|dd }|d d}|d(kr| jj |q,|dkr| jj |q,|dkr9|jd}|d)kr| jj |dfqz| jj |d|||d dfq,|dkrX| jj |q,|dkrw| jj |q,|dkr| jj |q,|dkr| jj |q,|dkr| jj |q,|dkr| j} q,|dkr| j} q,|dkr| j} q,|d krJ| jj ||sz| j} q,|d*kri| jj |q,|j d&|q,W|j | q~WWd|jX|S)+Nr)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quotedZstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_ws*z'%s' lines not handled yet.c.cc.cpp.cxx.c++.m.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u.a.so.sl.o.dylibzunrecognized argument '%s')r8r9r:r;r<r=r>rE)r@rArBrCrD)Zdistutils.sysconfigr0r1r2Zdistutils.text_filer3Zdistutils.utilr4readlinematchr$rappendospathsplitextrrfindrrrrrrrrclose)filenamer0r1r2r3r4varsfile extensionslineZwordsmoduleextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files    $                       rW)rIsysr#rrWrrrrs   zPKq|]ӧ UU'__pycache__/errors.cpython-35.opt-1.pycnu[ Yf @sdZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N)__name__ __module__ __qualname____doc__rr5/opt/alt/python35/lib64/python3.5/distutils/errors.pyr s rc@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).N)rrrrrrrrrs rc@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.N)rrrrrrrrr s r c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.N)rrrrrrrrr s r c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.N)rrrrrrrrr s r c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.N)rrrrrrrrr $s r c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.N)rrrrrrrrr *s r c@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.N)rrrrrrrrr3s rc@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.N)rrrrrrrrr8s rc@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).N)rrrrrrrrr>s rc@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).N)rrrrrrrrrCs rc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.N)rrrrrrrrrHs rc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.N)rrrrrrrrrKs rc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.N)rrrrrrrrrOs rc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.N)rrrrrrrrrRs rc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.N)rrrrrrrrrUs rc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.N)rrrrrrrrrXs rc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.N)rrrrrrrrr\s rc@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.N)rrrrrrrrr`s rN)r Exceptionrrr r r r r rrrrrrrrrrrrrrrr s& PKq|]=J.3.3$__pycache__/sysconfig.cpython-35.pycnu[ YfP @sdZddlZddlZddlZddlZddlmZejjej Z ejjej Z ejjej ZejjejZdejkrejjejdZn!ejjejjejZejdkr(ejjd,r(ejjejjeZd d Zeed dZerejdkrejjd-rejjejjeZd d ZeZdZyesejZWne k rYnXddZ!ddddZ"dddddZ#ddZ$ddZ%ddZ&dddZ'ej(dZ)ej(dZ*ej(dZ+dd d!Z,d"d#Z-da.d$d%Z/d&d'Z0d(d)Z1d*d+Z2dS).aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEnt\pcbuild\win32\pcbuild\amd64cCs=x6dD].}tjjtjj|d|rdSqWdS)N Setup.dist Setup.localModulesTF)rr)ospathisfilejoin)dfnr8/opt/alt/python35/lib64/python3.5/distutils/sysconfig.py_is_python_source_dir)s $r_homecCstrttSttS)N) _sys_homer project_baserrrr _python_build2s rcCstjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. N)sysversionrrrrget_python_versionDsrcCs|dkr|rtpt}tjdkrtrn|rCtpBtStjjt dd}tjj |Sdt t }tjj|d|Stjdkrtjj|dSt dtjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonincluderzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr name python_buildrrr r get_config_varnormpathr build_flagsr) plat_specificprefixZincdirZ python_dirrrrget_python_incLs  r)cCs|dkr9|r'|rtp!t}n|r3tp6t}tjdkr|sT|r]d}nd}tjj||dt}|r|Stjj|dSnTtjdkr|rtjj|dStjj|ddSnt d tjdS) aSReturn the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing platform-specific modules, i.e. any module from a non-pure-Python module distribution; otherwise, return the platform-shared library directory. If 'standard_lib' is true, return the directory containing standard Python library modules; otherwise, return the directory for site-specific modules. If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. Nrlib64librz site-packagesrZLibz?I don't know where Python installs its library on platform '%s') r r! EXEC_PREFIXPREFIXr r"r r rr)r' standard_libr(r+Z libpythonrrrget_python_libos(    r/cCs|jdkrtjdkrMtdsMddl}|jtdtdrAZccZcxxZoptZcflagsZccsharedZldsharedZ shlib_suffixarZar_flagsZnewccZcppr?Zcc_cmdrrrrBs\    0      rBcCsdtrBtjdkr3tjjtp'td}qQtp<t}ntdd}tjj|dS)z2Return full pathname of installed pyconfig.h file.rPCr'rz pyconfig-64.h)r#r r"r r rrr))inc_dirrrrget_config_h_filenames rKcCs_trtjjtptdStdddd}djtt }tjj||dS)zAReturn full pathname of installed Makefile from the Python build.Makefiler'rr.rz config-{}{}) r#r r r rrr/formatrr&)Zlib_dirZ config_filerrrget_makefile_filenames rNc Cs|dkri}tjd}tjd}x|j}|sFP|j|}|r|jdd\}}yt|}Wntk rYnX||| sZ    !      #+ I m  $  JPKq|]N%%$__pycache__/cmd.cpython-35.opt-2.pycnu[ ]J@sddlZddlZddlZddlmZddlmZmZmZm Z m Z ddlm Z GdddZ Gddde Z dS) N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@seZdZgZddZddZddZddZd d Zd d d dZ ddZ dddZ ddZ d ddZ d ddZddZd ddZddZd d!Zd"d#Zd$d%Zdd&d'Zd(d)d*Zd+d,Zd-d.Zd/d0Zd dd1d2Zd3d4d5Zddd dd6d7Zddd(dd8d9Zdd:d;Zddd<d=Zd d d d d>d?Z d d dd@dAZ!d S)BCommandcCsddlm}t||s+td|jtkrFtd||_|jd|_ |j |_ d|_ d|_ d|_ dS)Nr) Distributionz$dist must be a Distribution instancezCommand is an abstract class)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r(/opt/alt/python35/lib64/python3.5/cmd.py__init__/s       zCommand.__init__cCsR|dkrBt|d|}|dkr;t|j|S|Sn t|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s   zCommand.__getattr__cCs |js|jd|_dS)N)rfinalize_options)rrrrensure_finalizedis  zCommand.ensure_finalizedcCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr,d|j}|j||dtj|d}x||jD]q\}}}|j|}|d dkr|dd }t||}|j|d||fdtjqZWdS) Nr) longopt_xlatezcommand options for '%s':levelz r=z%s = %sr&) Zdistutils.fancy_getoptr#get_command_nameannouncerINFO user_options translater)rheaderindentr#optionrvaluerrr dump_optionss  zCommand.dump_optionscCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrruns z Command.runrcCstj||dS)N)r)rmsgr$rrrr(szCommand.announcecCs1ddlm}|r-t|tjjdS)Nr)DEBUG)Zdistutils.debugr3printsysstdoutflush)rr2r3rrr debug_prints zCommand.debug_printcCs[t||}|dkr/t||||St|tsWtd|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr.whatdefaultvalrrr_ensure_stringlikes zCommand._ensure_stringlikecCs|j|d|dS)Nstring)r>)rr.r<rrr ensure_stringszCommand.ensure_stringcCst||}|dkrdSt|trMt||tjd|nMt|trxtdd|D}nd}|std||fdS)Nz,\s*|\s+css|]}t|tVqdS)N)r r:).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r:r9resplitlistallr)rr.r=okrrrensure_string_lists zCommand.ensure_string_listcCsL|j|||}|dk rH|| rHtd|||fdS)Nzerror in '%s' option: )r>r)rr.Ztesterr;Z error_fmtr<r=rrr_ensure_tested_strings zCommand._ensure_tested_stringcCs |j|tjjdddS)Nfilenamez$'%s' does not exist or is not a file)rJospathisfile)rr.rrrensure_filenameszCommand.ensure_filenamecCs |j|tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rJrLrMisdir)rr.rrrensure_dirnameszCommand.ensure_dirnamecCs$t|dr|jS|jjSdS)N command_name)hasattrrRr __name__)rrrrr' szCommand.get_command_namecGse|jj|}|jxB|D]:\}}t||dkr#t||t||q#WdS)N)rget_command_objr!rr9)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs#|jj||}|j|S)N)rrUr!)rcommandZcreateZcmd_objrrrget_finalized_command$s zCommand.get_finalized_commandrcCs|jj||S)N)rreinitialize_command)rrWZreinit_subcommandsrrrrY0s zCommand.reinitialize_commandcCs|jj|dS)N)r run_command)rrWrrrrZ4szCommand.run_commandcCsIg}x<|jD]1\}}|dks4||r|j|qW|S)N) sub_commandsappend)rcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCs!tjd|j|fdS)Nzwarning: %s: %s )rwarnr')rr2rrrr`Ks z Command.warncCs tj|||d|jdS)Nr)rexecuter)rfuncargsr2r$rrrraOszCommand.executeicCstj||d|jdS)Nr)rmkpathr)rnamemoderrrrdRszCommand.mkpathc Cs)tj|||||j |d|jS)Nr)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrgUszCommand.copy_filec Cs)tj||||||j d|jS)Nr)r copy_treerr)rrhrirjrkZpreserve_symlinksr$rrrrm^szCommand.copy_treecCstj||d|jS)Nr)r move_filer)rsrcdstr$rrrrngszCommand.move_filecCs*ddlm}|||d|jdS)Nr)spawnr)Zdistutils.spawnrqr)rcmdZ search_pathr$rqrrrrqksz Command.spawnc Cs+tj||||d|jd|d|S)Nrownergroup)r make_archiver)r base_nameformatroot_dirbase_dirrsrtrrrrups zCommand.make_archivecCs|dkrd|}t|tr1|f}n!t|ttfsRtd|dkrwd|dj|f}|jstj||r|j ||||n t j |dS)Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r:rFtupler joinrrZ newer_grouprardebug)rZinfilesrirbrcZexec_msgZskip_msgr$rrr make_filevs     zCommand.make_file)"rT __module__ __qualname__r[rrr!rr r0r1r(r8r>r@rIrJrOrQr'rVrXrYrZr_r`rardrgrmrnrqrur}rrrrr sD  0              r c@sIeZdZd gZddZddZdd Zd d Zd S) install_misc install-dir=d!directory to install the files tocCsd|_g|_dS)N) install_diroutfiles)rrrrrs zinstall_misc.initialize_optionscCs|jd|dfdS)Ninstallr)rV)rdirnamerrr_install_dir_fromszinstall_misc._install_dir_fromcCsmg|_|sdS|j|jxC|D];}|j||j|jjtjj|j|q*WdS)N)rrdrrgr\rLrMr{)rZfilelistfrrr _copy_filess  zinstall_misc._copy_filescCs|jS)N)r)rrrr get_outputsszinstall_misc.get_outputsN)rrr)rTr~rr*rrrrrrrrrs     r)r5rLrDZdistutils.errorsrZ distutilsrrrrrrr rrrrrs $(PKq|]bz __pycache__/spawn.cpython-35.pycnu[ Yf@sdZddlZddlZddlmZmZddlmZddlm Z dddddZ d d Z dddd d Z ej d krddlmZdadadddddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsmt|}tjdkr1t||d|n8tjdkrVt||d|ntdtjdS)aRun another program, specified as a command list 'cmd', in a new process. 'cmd' is just the argument list for the new process, ie. cmd[0] is the program to run and cmd[1:] are the rest of its arguments. There is no way to run a program with a name different from that of its executable. If 'search_path' is true (the default), the system's executable search path will be used to find the program; otherwise, cmd[0] must be the exact path to the executable. If 'dry_run' is true, the command will not actually be run. Raise DistutilsExecError if running the program fails in any way; just return on success. posixdry_runntz1don't know how to spawn programs on platform '%s'N)listosname _spawn_posix _spawn_ntr)cmd search_pathverboserr4/opt/alt/python35/lib64/python3.5/distutils/spawn.pyspawns rcCs;x4t|D]&\}}d|kr d|||es z _spawn_posix...cSsg|]}t|qSr)r))r*r+rrrr,ks zF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configurezunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %sz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %dr)"rrrr execvpexecvsysplatform _cfg_targetr&get_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr$Z exit_statusrrrr Xs  "         - r cCs|dkrtjd}|jtj}tjj|\}}tjdkrh|dkrh|d}tjj|sx9|D]1}tjj ||}tjj|r|SqWdS|SdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. NPATHwin32z.exe) r r6r4pathseppathsplitextr0r1isfiler)r"rLpathsbaseZextpfrrrrs    r)__doc__r0r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr1r&r2r5r rrrrrs   QPKq|]89+__pycache__/versionpredicate.cpython-35.pycnu[ Yf  @sdZddlZddlZddlZejdejZejdZejdZ ddZ dej d ej d ej d ejd ejd ejiZGdddZdaddZdS)zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCsMtj|}|s%td||j\}}|tjj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr ?/opt/alt/python35/lib64/python3.5/distutils/versionpredicate.pysplitUps rz>=z!=c@s:eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|j}|stdtj|}|sCtd||j\|_}|j}|rtj|}|std||jd}dd|jdD|_|jstd|n g|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|]}t|qSr )r).0ZaPredr r r ts z-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$     zVersionPredicate.__init__cCsF|jr;dd|jD}|jddj|dS|jSdS)NcSs*g|] \}}|dt|qS) )r)rcondverr r r r}s z,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{s zVersionPredicate.__str__cCs5x.|jD]#\}}t|||s dSq WdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr#r%r r r r rs ?  rcCstdkr!tjdtja|j}tj|}|sRtd||jdpdd}|rtj j |}|jd|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions   r3)r)r-Zdistutils.versionroperatorr.r/rrrrltleeqgtgener$rr,r3r r r r s      !nPKq|]BMM-__pycache__/bcppcompiler.cpython-35.opt-1.pycnu[ YfW:@sdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zd d d d dZdddd dddddZdd dddZdddddd dddddd Zd ddZd dddZdddddddZdS) BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCstj||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer;/opt/alt/python35/lib64/python3.5/distutils/bcppcompiler.pyr5s     zBCPPCompiler.__init__Nc Cs|j||||||\}} }} } |p6g} | jd|r_| j|jn| j|jx| D]} y| | \}}Wntk rwvYnXtjj|}tjj| } |j tjj | |dkrqv|dkrTy|j dd| |gWqvt k rP}zt |WYdd}~XqvXqv||jkrld}n||jkrd}nd}d| }y4|j |jg| | ||g||gWqvt k r}zt |WYdd}~XqvXqvW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF         .#zBCPPCompiler.compilec Cs|j||\}}|j|d|}|j||r|dg|}|rUy|j|jg|Wqtk r}zt|WYdd}~XqXntjd|dS)Nr*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs"zBCPPCompiler.create_static_libc Cs|j||\}}|j|||\}}}|rRtjdt||dk rstjj||}|j||r|t j krd}| r|j dd}q|j dd}n5d}| r|j dd}n|jdd}|dkrd}ntjj|\}}tjj|\}}tjj|d}tjj|d|}dg}x+|pgD]}|jd||fqW|jt||fd |ttjj|}|g}g}x[|D]S}tjjtjj|\}}|d kr:|j|q|j|qWx+|D]#}|jd tjj|qRW|jd |j||jd |g|jdxL|D]D}|j||| }|dkr|j|q|j|qW|jd|jd|jd |g|jd |j|| r_| |dd<| rr|j| |jtjj|y|j|jg|Wqtk r}zt|WYdd}~XqXntjd|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|         $  !          "zBCPPCompiler.linkc Cs|r-|d}|d|d||f}n|d|f}xW|D]K}xB|D]:}tjj||j|}tjj|rQ|SqQWqDWdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s     zBCPPCompiler.find_library_filercCs|dkrd}g}x|D]}tjjtjj|\}}||jddgkrxtd||f|rtjj|}|dkr|jtjj|||q|dkr|jtjj||dq|jtjj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"  $ # #zBCPPCompiler.object_filenamesc Cs#|jd||\}}}t||}dg|} |dk rW| jd||rm|| dd<|r| j|| j||js|dkst||r|r|jtjj |y|j | Wn;t k r} zt | t | WYdd} ~ XnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$     $ zBCPPCompiler.preprocess)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsJ     B|r)r^r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs .PKq|].alP**(__pycache__/version.cpython-35.opt-1.pycnu[ Yf90@sUdZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@smeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r|j|dS)N)parse)selfvstringr6/opt/alt/python35/lib64/python3.5/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs)|j|}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs)|j|}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__) r __module__ __qualname____doc__rr rrrrrrrrrrs      rc@sVeZdZdZejdejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|jj|}|s(td||jddddd\}}}}}|r|ttt|||g|_n"ttt||gd|_|r|dt|f|_n d|_dS) Nzinvalid version number '%s'r)r) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr majorminorZpatchr'Zprerelease_numrrrrs*$"zStrictVersion.parsecCs|jddkr;djtt|jdd}ndjtt|j}|jr||jdt|jd}|S)Nrr.r)r&joinr$r r')rrrrr__str__s ( "zStrictVersion.__str__cCst|trt|}|j|jkrG|j|jkrCdSdS|j r_|j r_dS|jrv|j rvdS|j r|jrdS|jr|jr|j|jkrdS|j|jkrdSdSndS)Nrrr-r-) isinstancer rr&r')rrrrrr s& zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIrrr,r rrrrr]s #   rc@sjeZdZdZejdejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r|j|dS)N)r)rrrrrr.szLooseVersion.__init__c Cs{||_dd|jj|D}xCt|D]5\}}yt|||8s z&LooseVersion.parse..)r component_resplit enumerater%r!r&)rrZ componentsiobjrrrr3s   zLooseVersion.parsecCs|jS)N)r)rrrrr,CszLooseVersion.__str__cCsdt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsat|trt|}|j|jkr1dS|j|jkrGdS|j|jkr]dSdS)Nrrr-)r.r r3r&)rrrrrr Ks zLooseVersion._cmp) r rrrr/r0r1r7rrr,r r rrrrr3 s    r3)rr/rrr3rrrrs >PKq|]eaJ33*__pycache__/file_util.cpython-35.opt-2.pycnu[ ]@sddlZddlmZddlmZddddddiZdd d Zd d ddd dddZd dddZddZ dS)N)DistutilsFileError)logZcopyinghardz hard linkingsymzsymbolically linkingicNCsd}d}zyt|d}Wn>tk rb}ztd||jfWYdd}~XnXtjj|rytj|Wn>tk r}ztd||jfWYdd}~XnXyt|d}Wn>tk r}ztd||jfWYdd}~XnXxy|j|}Wn>tk rq}ztd||jfWYdd}~XnX|syPy|j |Wqtk r}ztd||jfWYdd}~XqXqWWd|r|j |r|j XdS)Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdstZ buffer_sizefsrcfdstebufr./opt/alt/python35/lib64/python3.5/file_util.py_copy_file_contentssF ,)))1 rcCsddlm}ddlm} m} m} m} tjj |sTt d|tjj |r|} tjj |tjj |}ntjj|} |r||| r|dkrtjd||dfSyt|}Wn"tk rtd|YnX|dkrptjj |tjj |krZtjd||| ntjd||||r|dfS|d krtjj|otjj||s6ytj|||dfSWq6tk rYq6XnM|d kr6tjj|otjj||s6tj|||dfSt|||sO|rtj|}|rtj||| || f|rtj|| || |dfS) Nr)newer)ST_ATIMEST_MTIMEST_MODES_IMODEz4can't copy '%s': doesn't exist or not a regular filerz"not copying %s (output up-to-date)z&invalid value '%s' for 'link' argumentz %s %s -> %srr)Zdistutils.dep_utilrstatrrr r!r r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater.verbosedry_runrrrr r!diractionstrrr copy_fileCsT!" $    $  '  '   r8c(Csddlm}m}m}m}m}ddl} |dkrStjd|||r]|S||syt d|||rt j j |||}n"||rt d||f|||st d||fd} yt j ||Wnetk rn} zE| j\} } | | jkrCd } nt d ||| fWYdd} ~ XnX| rt||d |yt j|Wnvtk r} zV| j\} } yt j|Wntk rYnXt d |||| fWYdd} ~ XnX|S) Nr)rr#r$r&r'rzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %sr3zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr#r$r&r'errnorr,rr r r%renamer argsZEXDEVr8r)rrr3r4rr#r$r&r'r9Zcopy_itrnummsgrrr move_filesR (      ) )r>c CsGt|d}z&x|D]}|j|dqWWd|jXdS)Nw )r rr)filenamecontentsflinerrr write_files  rEi@) r Zdistutils.errorsrZ distutilsrr)rr8r>rErrrrs  3 c=PKq|]jU(U(#__pycache__/filelist.cpython-35.pycnu[ Yf0@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejd d Zd d ZdddddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@seZdZdZddddZddZejddZd d Z d d Z d dZ ddZ ddZ ddZddZdddddZdddddZdS)FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr 7/opt/alt/python35/lib64/python3.5/distutils/filelist.py__init__s zFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCs$ddlm}|r t|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrr r r r )szFileList.debug_printcCs|jj|dS)N)rappend)r itemr r r r3szFileList.appendcCs|jj|dS)N)rextend)r itemsr r r r6szFileList.extendcCsXtttjj|j}g|_x*|D]"}|jjtjj|q.WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s  z FileList.sortcCsVxOtt|jdddD].}|j||j|dkr |j|=q WdS)Nr)rangelenr)r ir r r remove_duplicatesCs&zFileList.remove_duplicatescCs1|j}|d}d}}}|dkrrt|dkrRtd|dd |d dD}n|dkrt|d krtd|t|d }dd |ddD}nQ|dkrt|dkrtd|t|d }ntd|||||fS)Nrincludeexcludeglobal-includeglobal-excludez&'%s' expects ...cSsg|]}t|qSr )r).0wr r r Ws z1FileList._parse_template_line..r recursive-includerecursive-excludez,'%s' expects ...cSsg|]}t|qSr )r)r+r,r r r r-]s graftprunez#'%s' expects a single zunknown action '%s')r&r'r(r))r.r/)r1r2)rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs,          zFileList._parse_template_linecCs|j|\}}}}|dkrz|jddj|x|D]+}|j|ddsHtjd|qHWn|dkr|jddj|x^|D]+}|j|ddstjd |qWn(|d kr8|jd dj|x|D]+}|j|dd stjd |qWn|dkr|jddj|x|D]+}|j|dd setjd|qeWnj|dkr|jd|dj|fx;|D].}|j|d|stjd||qWn|dkrg|jd|dj|fx|D].}|j|d|s2tjd||q2Wn|dkr|jd||jdd|stjd|nU|dkr|jd||jdd|stjd|ntd|dS)Nr&zinclude  anchorr z%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %sprefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r1zgraft z+warning: no directories found matching '%s'r2zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r7r rinclude_patternrr exclude_patternr)r r3r4r5rr6patternr r r process_template_linehsf                          zFileList.process_template_liner rcCsd}t||||}|jd|j|jdkrH|jxG|jD]<}|j|rR|jd||jj|d}qRW|S)aSelect strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform- dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return True if files are found, False otherwise. Fz%include_pattern: applying regex r'%s'Nz adding T)translate_patternr r=rrsearchrr)r r=r9r:is_regex files_found pattern_renamer r r r;s    zFileList.include_patterncCsd}t||||}|jd|jxett|jdddD]D}|j|j|rO|jd|j||j|=d}qOW|S)aRemove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return True if files are found, False otherwise. Fz%exclude_pattern: applying regex r'%s'r z removing Tr!r!)r?r r=r"r#rr@)r r=r9r:rArBrCr$r r r r<s  &  zFileList.exclude_pattern)__name__ __module__ __qualname____doc__rrrcurdirrr rrrr%r7r>r;r<r r r r rs      L,rcCs5ddtj|ddD}ttjj|S)z% Find all files under 'path' css:|]0\}}}|D]}tjj||VqqdS)N)rrr)r+basedirsrfiler r r s z#_find_all_simple.. followlinksT)rwalkfilterrisfile)rZresultsr r r _find_all_simples rRcCsOt|}|tjkrEtjtjjd|}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. start) rRrrI functoolspartialrrelpathrlist)rrZmake_relr r r rs  rcCsPtj|}tj}tjdkr-d}d|}tjd||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?s    PKq|]=T0__pycache__/cygwinccompiler.cpython-35.opt-2.pycnu[ ]Z@@saddlZddlZddlZddlmZmZmZddlZddlm Z m Z ddl m Z ddl mZddlmZmZmZmZddlmZddlmZdd lmZd d ZGd d d e ZGdddeZdZdZdZddZ ej!dZ"ddZ#ddZ$ddZ%dS)N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjjd}|dkrtj|d|d}|dkrLdgS|dkr_dgS|d krrd gS|d krd gS|d krdgStd|dS)NzMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )sysversionfind ValueError)Zmsc_posZmsc_verr4/opt/alt/python35/lib64/python3.5/cygwinccompiler.py get_msvcr?s      rc @seZdZdZdZdZdZdZdZdZ dddd d Z d d Z d d d d d dd d d d dd Z ddddZ d S)CygwinCCompilercygwinz.oz.az.dllzlib%s%sz%s%sz.exerc CsPtj||||t\}}|jd||f|tk rY|jd|t\|_|_|_ |j|j d|j|j|j f|jdkrd|_ n d|_ |jdkrd}nd }|j d d d d dddddd|j |f|jdkr@dg|_ |jdn t|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticcompilerzgcc -mcygwin -O -Wall compiler_sozgcc -mcygwin -mdll -O -Wall compiler_cxxzg++ -mcygwin -O -Wall linker_exez gcc -mcygwin linker_soz%s -mcygwin %sz2.91.57msvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforcestatusZdetails shared_optionrrrr%ds<       zCygwinCCompiler.__init__cCs|dks|dkroy |jdd|d|gWqtk rk}zt|WYdd}~XqXn]y)|j|j||d|g|Wn1tk r}zt|WYdd}~XnXdS)Nz.rcz.resZwindresz-iz-o)spawnr r r )r0objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles " zCygwinCCompiler._compileNcCstj| pg} tj|p$g}tj|p9g}|j|j|dk r||jksy|jdkrtjj|d}tjjtjj |\}}tjj ||d}tjj |d|d}dtjj |dg}x|D]}|j |q W|j t ||fd||jd krx| jd |g| jd |gn |j || s| j d tj||||||||d| | | | | dS) Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr/Z EXECUTABLEr-ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r0Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr:Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrGs:          zCygwinCCompiler.linkcCs|dkrd}g}x|D]}tjjtjj|\}}||jddgkrxtd||f|rtjj|}|dkr|jtjj||||j q|jtjj|||j qW|S)NrK.rc.resz"unknown file type '%s' (from '%s'))rMrL) r@rArCnormcaseZsrc_extensionsr rDrFrE obj_extension)r0Zsource_filenamesZ strip_dirrHZ obj_namesZsrc_namebaser9rrrobject_filenamess   $ z CygwinCCompiler.object_filenames)__name__ __module__ __qualname__r,rOZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr%r<rGrQrrrrrYs ;   Krc@s+eZdZdZdddddZdS)Mingw32CCompilerZmingw32rcCstj|||||jdkr.d}nd}|jdkrLd}nd}trgtd|jdd d d d d dddd|j||fg|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rKz1Cygwin gcc cannot be used with --compiler=mingw32rz gcc -O -Wallr zgcc -mdll -O -Wallr!z g++ -O -Wallr"rr#z%s %s %s) rr%r+r* is_cygwingccr r.r-r/r)r0r1r2r3r5Z entry_pointrrrr%s&       zMingw32CCompiler.__init__N)rRrSrTr,r%rrrrrUs rUokznot okZ uncertaincCsddlm}dtjkr)tdfS|j}yPt|}z2d|jkrgtd|fStd|fSWd|j XWn<t k r}zt d||j ffSWYdd}~XnXdS) Nr) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s) distutilsrXrrr'get_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rXfnconfig_hexcrrrr&Hs   r&s(\d+\.\d+(\.\d+)*)c Cs|jd}t|dkr&dSt|dddtj}z|j}Wd|jXtj|}|dkr~dSt |j dj S)NrshellTstdoutr) splitrrrrfr\r^ RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus  rqcCs&dddg}tdd|DS)Nzgcc -dumpversionzld -vzdllwrap --versioncSsg|]}t|qSr)rq).0rlrrr s z get_versions..)tuple)commandsrrrr)sr)cCs%tddg}|jjdS)Nrz -dumpmachinescygwin)rstripendswith)rorrrrVsrV)&r@rr> subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rYr Zdistutils.versionrZdistutils.spawnrrrrUr'r]r`r&compilerhrqr)rVrrrr0s,    " 1 +  PKq|],%%*__pycache__/sysconfig.cpython-35.opt-2.pycnu[ $YfP @sddlZddlZddlZddlZddlmZejjejZ ejjej Z ejjej Z ejjejZdejkrejjejdZn!ejjejjejZejdkr"ejjd+r"ejjejjeZdd Zeed dZerejdkrejjd,rejjejjeZd d ZeZd ZyesejZWnek rYnXddZ ddddZ!dddddZ"ddZ#ddZ$ddZ%dddZ&ej'dZ(ej'dZ)ej'dZ*ddd Z+d!d"Z,da-d#d$Z.d%d&Z/d'd(Z0d)d*Z1dS)-N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEnt\pcbuild\win32\pcbuild\amd64cCs=x6dD].}tjjtjj|d|rdSqWdS)N Setup.dist Setup.localModulesTF)rr)ospathisfilejoin)dfnr./opt/alt/python35/lib64/python3.5/sysconfig.py_is_python_source_dir)s $r_homecCstrttSttS)N) _sys_homer project_baserrrr _python_build2s rcCstjddS)N)sysversionrrrrget_python_versionDsrcCs|dkr|rtpt}tjdkrtrn|rCtpBtStjjt dd}tjj |Sdt t }tjj|d|Stjdkrtjj|dSt dtjdS)NposixsrcdirZIncludepythonincluderzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXr name python_buildrrr r get_config_varnormpathr build_flagsr) plat_specificprefixZincdirZ python_dirrrrget_python_incLs  r)cCs|dkr9|r'|rtp!t}n|r3tp6t}tjdkr|sT|r]d}nd}tjj||dt}|r|Stjj|dSnTtjdkr|rtjj|dStjj|ddSnt dtjdS) Nrlib64librz site-packagesrZLibz?I don't know where Python installs its library on platform '%s') r r! EXEC_PREFIXPREFIXr r"r r rr)r' standard_libr(r+Z libpythonrrrget_python_libos(    r/cCs|jdkrtjdkrMtdsMddl}|jtdtdrAZccZcxxoptZcflagsZccsharedZldsharedZ shlib_suffixarZar_flagsZnewccZcppr?Zcc_cmdrrrrBs\    0      rBcCsdtrBtjdkr3tjjtp'td}qQtp<t}ntdd}tjj|dS)NrPCr'rz pyconfig.h)r#r r"r r rrr))inc_dirrrrget_config_h_filenames rLcCs_trtjjtptdStdddd}djtt }tjj||dS)NMakefiler'rr.rz config-{}{}) r#r r r rrr/formatrr&)Zlib_dirZ config_filerrrget_makefile_filenames rOc Cs|dkri}tjd}tjd}x|j}|sFP|j|}|r|jdd\}}yt|}Wntk rYnX||| sX    !      #+ I m  $  JPKq|]*|g.__pycache__/unixccompiler.cpython-35.opt-1.pycnu[ Yf:@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkrddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwincseZdZdZddddgddgddgddd gd dgd d d gddiZejdddkrdgedr?r%r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;r r!r"Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerir2r#r#r$linksH       "zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCs tjjtjd}tjdddkr<d|Stjdddkr]d|Stjddd kr|j|rd d|gSd d|gStjddd kstjddd krd|gS|j|rtjddkr d|Sd|Snd|SdS)NCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrOrr#r#r$runtime_library_dir_options 2  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_option szUnixCCompiler.library_optioncCs.|j|dd}|j|dd}|j|dd}|j|dd}tjdkrtjd}tjd|} | dkrd } n| jd } x|D]w} tj j | |} tj j | |} tj j | |}tj j | |}tjdkr| j d sF| j d r| j d  rtj j | | d d|} tj j | | d d|} tj j | | d d|}tj j | | d d|}tj j | r| Stj j |r|Stj j | r| Stj j |r|SqWdS)NZlib_typeshareddylib xcode_stubstaticr CFLAGSz-isysroot\s+(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrYr@Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrOr[r\r^r]r#r#r$find_library_file s>   """"zUnixCCompiler.find_library_file)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rCrNrPrRrXrZrhr#r#)rr$r -sF            6   , r )__doc__r(r4raZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r#r#r#r$s$" PKq|]F11.__pycache__/_msvccompiler.cpython-35.opt-2.pycnu[ ]O@s$ddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z ddl mZddlmZddlZddlmZddZd d Zdd d Zd dddiZddddddiZedgZGddde ZdS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc $Csy)tjtjddtjtjB}Wn#tk rNtjdd SYnX|d}d}xtD]}ytj ||\}}}Wntk rPYnX|rl|tj krlt j j |rlytt|}Wnttfk rwlYnX|dkrl||krl||}}qlW|sBtjdd St j j|d} t j j| s}tjd| d Sd} tj|} | rt j j|| j|} t j j| stjd| d} | | fSWdQRXdS) Nz'Software\Microsoft\VisualStudio\SxS\VC7accesszVisual C++ is not registeredrz$No suitable Visual C++ version foundz vcvarsall.batz%s cannot be found)NN)NN)NN)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeErrorjoinisfile _VCVARS_PLAT_TO_VCRUNTIME_REDISTgetformat) plat_speckeyZ best_versionZbest_dirivZvc_dirZvtversion vcvarsall vcruntimeZvcruntime_specr%2/opt/alt/python35/lib64/python3.5/_msvccompiler.py_find_vcvarsallsN    '  r'cCstjdr)ddtjjDSt|\}}|sMtdy7tjdj||dtj j ddd }WnPtj k r}z-t j |jtd j|jWYdd}~XnXd dd d |jDD}|r ||d<|S)NZDISTUTILS_USE_SDKcSs%i|]\}}||jqSr%)lower).0rvaluer%r%r& Ns z_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && setstderrzutf-16leerrorsreplacezError executing {}cSs4i|]*\}}}|r|r||jqSr%)r()r)r_r*r%r%r&r+as  css|]}|jdVqdS)=N) partition)r)liner%r%r& dsz_get_vc_env..py_vcruntime_redist)rgetenvenvironitemsr'r subprocess check_outputrSTDOUTdecodeCalledProcessErrorr erroroutputcmd splitlines)rr#r$outexcenvr%r%r& _get_vc_envLs(    "  rDcCsm|s!tjdjtj}xE|D]=}tjjtjj||}tjj|r(|Sq(W|S)Nr)rr5splitpathseprrabspathr)Zexepathspfnr%r%r& _find_exels  !rKwin32Zx86z win-amd64Z x86_amd64z1redist\x86\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllamd64z1redist\x64\Microsoft.VC{0}0.CRT\vcruntime{0}0.dllzvcruntime140.dllc sgeZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd ZdddddZdddZddddZdddddddddZdddddZdddddddddddd ZddZfdd Zd!d"Zd#d$Zd%d&Zdd'd(ZS)) MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs,tj||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverbosedry_runforcer%r%r&rOs zMSVCCompiler.__init__NcCs%|dkrt}|tkr<tdjttt|}t|}|sdtd|jdd|_|jjt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_|jd d|_x9|jd djt j D]}|r.|j|q.Wx9|jd djt j D]}|rj|j|qjWd|_dddddg|_|jj|jrdndddddddg|_dddg}|js|jd$ddddg}|d%|_|d&|_|d'|_|d(|_||_||_t j!df|jt j!d"f|jt j!d#f|jt j"df|jt j"d"f|jt j"d#f|jt j#df|jt j#d"f|jt j#d#f|ji |_$d#|_%dS))Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exer4includelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/MTz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCG/nodefaultlib:libucrt.libucrt.libz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)rYrZ)r[)r[)r\r]r^)r\r]r^)&r PLAT_TO_VCVARSrrtuplerDr_pathsrErrFrKcclinkerrXrcmcmt_vcruntime_redistZadd_include_dirZadd_library_dirZpreprocess_optionscompile_optionsappendcompile_options_debugextendZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsrQ)rRrPrZvc_envrHdirldflagsZ ldflags_debugr%r%r& initializes`       %%     zMSVCCompiler.initializerVcsvfddjDfddjjDpHdfdd}tt||S)Ncsi|]}j|qSr%) obj_extension)r)ext)rRr%r&r+s z1MSVCCompiler.object_filenames..csi|]}j|qSr%) res_extension)r)rq)rRr%r&r+s rVc stjj|\}}r3tjj|}nItjj|\}}|jtjjtjjfr||dd}ytjj||SWn't k rt dj |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithsepaltsepr LookupErrorrr)rIbaserqr/)ext_map output_dir strip_dirr%r& make_out_paths! z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)rRZsource_filenamesr~r}rr%)r|r}rRr~r&object_filenames s & zMSVCCompiler.object_filenamesc Cs?|js|j|j||||||} | \}} }} } |pOg} | jd|rx| j|jn| j|jd}x| D]}y| |\}}Wntk rwYnX|rtj j |}||j krd|}n||j krd|}d}n||j kr|}d|}y%|j|jg| ||gWqtk r}zt|WYdd}~XqXqn||jkrtj j|}tj j|}y|j|jd|d||gtj jtj j|\}}tj j||d }|j|jd||gWqtk r}zt|WYdd}~XqXqntd j|||jg| | }|r|jd |j||jd ||j|y|j|Wqtk r6}zt|WYdd}~XqXqW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rQroZ_setup_compilerirkrjrhKeyErrorrrrG _c_extensions_cpp_extensionsrspawnrdrrrdirnamerertrurrrb)rRZsourcesr}ZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrqZ input_optZ output_optmsgZh_dirZrc_dirr{r/Zrc_fileargsr%r%r&compile+sn          % "$!    #zMSVCCompiler.compilec Cs|js|j|j||\}}|j|d|}|j||r|d|g}|riy:tjd|jdj||j |jg|Wqt k r}zt |WYdd}~XqXntjd|dS)Nr}z/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rQro_fix_object_argslibrary_filename _need_linkr rrXrrrr) rRrZoutput_libnamer}r target_langoutput_filenameZlib_argsrr%r%r&create_static_libs    "zMSVCCompiler.create_static_libcCsX|js|j|j||\}}|j|||}|\}}}|rl|jdt|t||||}|dk rtjj ||}|j ||rD|j || f}dd|pgD}||||d|g}tjj |d} |dk rrtjj tjj|\}}tjj | |j|}|jd|| r| |dd<| r|j| tjj tjj|}|j|yGtjd|jdj ||j|jg||j|WqTtk r@}zt|WYdd}~XqTXntjd |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|]}d|qS)z/EXPORT:r%)r)Zsymr%r%r& s z%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rQrorZ _fix_lib_argswarnstrrrrrrrlrrtrurrirkrGZmkpathr rrcr_copy_vcruntimerr)rRZ target_descrrr}Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrnZ export_optsZld_argsZdll_nameZdll_extZ implib_filerr%r%r&linksN            "zMSVCCompiler.linkcCs|j}| s#tjj| r'dStjj|jtkrIdStjd|t j ||}tj |t j dS)Nz Copying "%s")rgrrrrur( _BUNDLED_DLLSr rshutilcopychmodstatS_IWRITE)rRr}r$r%r%r&rs zMSVCCompiler._copy_vcruntimec sHtjd}z$|jtjds&    (  .   PKq|]n% % )__pycache__/dep_util.cpython-35.opt-1.pycnu[ Yf @sMdZddlZddlmZddZddZdd d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCstjj|s.tdtjj|tjj|sDdSddlm}tj||}tj||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r 7/opt/alt/python35/lib64/python3.5/distutils/dep_util.pynewer srcCst|t|kr$tdg}g}xStt|D]?}t||||rC|j|||j||qCW||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise s rerrorcCstjj|sdSddlm}tj||}xx|D]l}tjj|s|dkrgn"|dkryq@n|dkrdStj||}||kr@dSq@WdSdS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rr)rrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s      r)__doc__rZdistutils.errorsrrrrr r r r s    PKq|]S9""*__pycache__/text_file.cpython-35.opt-1.pycnu[ Yf0@sAdZddlZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@seZdZdZddddddddddd dd d iZd d d dZddZddZd ddZd ddZ d ddZ ddZ ddZ ddZ d S)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.strip_comments skip_blanks lstrip_wsr rstrip_ws join_lines collapse_joinerrorsstrictNcKs|dkr$|dkr$tdxQ|jjD]@}||kr]t||||q4t|||j|q4Wx3|jD]%}||jkrtd|qW|dkr|j|n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsZoptr8/opt/alt/python35/lib64/python3.5/distutils/text_file.py__init__Ns      zTextFile.__init__cCs7||_tj|jdd|j|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.rr rN)riorr rr)rrrrrros !z TextFile.opencCs2|j}d|_d|_d|_|jdS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs     zTextFile.closecCsg}|dkr|j}|j|jdt|ttfr^|jdt|n|jd||jt|dj|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errors  zTextFile.gen_errorcCs td|j||dS)Nzerror: ) ValueErrorr&)rr$r%rrrerrorszTextFile.errorcCs(tjjd|j||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter&)rr$r%rrrwarnsz TextFile.warncCs|jr$|jd }|jd =|Sd}xu|jj}|dkrNd}|jr|r|jd}|dkr{nz|dks||ddkr|ddkrdpd}|d||}|jdkrq-n|jdd}|jr|r|dkr!|jd |S|j r6|j }||}t |j t rm|j dd|j ds$PKq|]:$ &__pycache__/debug.cpython-35.opt-1.pycnu[ Yf@s"ddlZejjdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr4/opt/alt/python35/lib64/python3.5/distutils/debug.pys PKq|]V44.__pycache__/unixccompiler.cpython-35.opt-2.pycnu[ $Yf:@sddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z m Z mZmZddlmZejdkrddlZGdd d eZdS) N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwincseZdZdZddddgddgddgddd gd dgd d d gddiZejdddkrdgedrr isinstancestrtype TypeErrorr)r*joinr@rAr%r(r+rZ EXECUTABLErrrbasenamer5r6r7r8r,rr r rB)rZ target_descrArDr=r r!r"Zexport_symbolsrBr.r/Z build_temprCr0Zlib_optsZld_argsZlinkerir3r#r#r$linksH       "zUnixCCompiler.linkcCsd|S)Nz-Lr#)rdirr#r#r$library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)Ngcczg++r#)rZ compiler_namer#r#r$_is_gccszUnixCCompiler._is_gcccCs tjjtjd}tjdddkr<d|Stjdddkr]d|Stjddd kr|j|rd d|gSd d|gStjddd kstjddd krd|gS|j|rtjddkr d|Sd|Snd|SdS)NCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZirix646Zosf1V5z-rpathGNULDyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r)r*rNrrr5r6rT)rrQrr#r#r$runtime_library_dir_options 2  z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr#)rlibr#r#r$library_option szUnixCCompiler.library_optioncCs.|j|dd}|j|dd}|j|dd}|j|dd}tjdkrtjd}tjd|} | dkrd } n| jd } x|D]w} tj j | |} tj j | |} tj j | |}tj j | |}tjdkr| j d sF| j d r| j d  rtj j | | d d|} tj j | | d d|} tj j | | d d|}tj j | | d d|}tj j | r| Stj j |r|Stj j | r| Stj j |r|SqWdS)NZlib_typeshareddylib xcode_stubstaticr CFLAGSz-isysroot\s+(\S+)/rGz/System/z/usr/z /usr/local/) r?r5r6rrresearchgroupr)r*rM startswithexists)rdirsr[rBZshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrQr]r^r`r_r#r#r$find_library_file s>   """"zUnixCCompiler.find_library_file)__name__ __module__ __qualname__Z compiler_typeZ executablesr5r6Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr4r<rErPrRrTrZr\rjr#r#)rr$r -sF            6   , r )r)r5rcZ distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r6r7r r#r#r#r$s$" PKq|]233)__pycache__/dir_util.cpython-35.opt-1.pycnu[ Yfb@sdZddlZddlZddlmZmZddlmZiadddddZ dddd d Z ddddddd d Z d dZ ddddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logic Cst|ts"td|ftjj|}g}tjj|sX|dkr\|Stjtjj |r{|Stjj |\}}|g}xK|r|rtjj| rtjj |\}}|j d|qWx|D]}tjj ||}tjj |} tj| r0q|dkrLt jd||sytj||Wnftk r} zF| jtjkotjj|std|| jdfWYdd} ~ XnX|j|dt|  "  $- r$cCsvt}x6|D].}|jtjj|tjj|qWx-t|D]}t||d|d|qOWdS)aCreate all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. rrN)setaddr r rdirnamesortedr$)Zbase_dirfilesrrrZneed_dirfiledirr"r"r# create_treePs  ,r,cCsddlm}| r:tjj| r:td|ytj|} WnMtk r} z-|rqg} ntd|| jfWYdd} ~ XnX|st |d|g} x(| D] } tjj || } tjj || }| j drq|rntjj | rntj | }|dkrHtjd |||s^tj||| j|qtjj| r| jt| |||||d|d |q|| ||||d|d || j|qW| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sNrz.nfsrzlinking %s -> %sr)Zdistutils.file_utilr-r r r rlistdirrstrerrorr$r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcZdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr-nameseZoutputsnZsrc_nameZdst_nameZ link_destr"r"r#r5csH  )     r5cCsxwtj|D]f}tjj||}tjj|r`tjj| r`t||q|jtj|fqW|jtj |fdS)zHelper for remove_tree().N) r r.r rr r1_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr"r"r#r;s %r;cCs|dkrtjd||r&dSg}t||x|D]}y?|d|dtjj|d}|tkrt|=Wq@tk r}ztjd||WYdd}~Xq@Xq@WdS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr;r r rrrwarn)Z directoryrrr>cmdrr!r"r"r# remove_trees     rBcCsItjj|\}}|ddtjkrE||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver"r"r#ensure_relativesrE)__doc__r rZdistutils.errorsrrZ distutilsrrr$r,r5r;rBrEr"r"r"r#s  ?D PKq|]Z# # 8command/__pycache__/install_scripts.cpython-35.opt-1.pycnu[ Yf@s\dZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@speZdZdZddddgZdd gZddZddZddZddZ ddZ d S)install_scriptsz%install scripts (Python or otherwise) install-dir=ddirectory to install scripts to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files) skip-buildNskip the build stepscCs(d|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfrF/opt/alt/python35/lib64/python3.5/distutils/command/install_scripts.pyinitialize_optionss   z"install_scripts.initialize_optionscCs*|jdd |jdd d d dS) NZbuild build_scriptsrZinstallrrr r)rr)rr)r r )rr)Zset_undefined_options)rrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|jd|j|j|j|_tjdkrxn|jD]`}|j rot j d|qMtj |t dBd@}t j d||tj||qMWdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)rZ run_commandZ copy_treerroutfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s   zinstall_scripts.runcCs|jjpgS)N)Z distributionscripts)rrrr get_inputs8szinstall_scripts.get_inputscCs |jp gS)N)r)rrrrr;szinstall_scripts.get_outputs)rrr)r r r )r r r)rNr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr$r&rrrrrrs       r) __doc__rZdistutils.corerZ distutilsrr rrrrrrs  PKq|]n,n,1command/__pycache__/build_py.cpython-35.opt-1.pycnu[ Yf C@sdZddlZddlZddlZddlmZddlmZddlTddl m Z m Z ddl m Z Gdd d eZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)glob)Command)*) convert_path Mixin2to3)logc@s*eZdZdZd8d9d:d;d<gZddgZddiZddZddZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd S)=build_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr?/opt/alt/python35/lib64/python3.5/distutils/command/build_py.pyinitialize_options s       zbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrx3|jjjD]\}}t||j|ts z+build_py.get_data_files..) r"get_package_dirosr+joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r8rr$as %%zbuild_py.get_data_filescs|jjdg|jj|g}gxO|D]G}ttjj|t|}jfdd|Dq5WS)z6Return filenames for package's data files in 'src_dir'cs4g|]*}|krtjj|r|qSr)r;r+isfile)r6fn)filesrrr9s z,build_py.find_data_files..)rgetrr;r+r<rextend)rrrBZglobspatternZfilelistr)rHrr?ys !$zbuild_py.find_data_filescCsd}x|jD]v\}}}}xa|D]Y}tjj||}|jtjj||jtjj|||ddq)WqWdS)z$Copy data files into build directoryN preserve_modeF)r%r;r+r<mkpathdirname copy_file)rZlastdirrrBrCrDfilenametargetrrrr0s zbuild_py.build_package_datac Cs|jd}|js5|r.tjj|SdSng}x|ry|jdj|}Wn-tk r|jd|d|d=Yq>X|jd|tjj|Sq>W|jjd}|dk r|jd||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r4rErr5NrR)r=rr;r+r<KeyErrorinsertrI)rrr+tailZpdirrrrr:s(      zbuild_py.get_package_dircCs|dkrPtjj|s.td|tjj|sPtd||rtjj|d}tjj|r|Stjdd|dS)NrEz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)) r;r+existsZDistutilsFileErrorisdirr<rFrwarn)rrrinit_pyrrr check_packages     zbuild_py.check_packagecCs1tjj|s)tjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r;r+rFrrX)rmodule module_filerrr check_moduleszbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S)Nz*.pyrz excluding %s) rZrr;r+r<abspathr!Z script_namesplitextbasenamer@Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr[rrrfind_package_moduless  "zbuild_py.find_package_modulesc Csi}g}x |jD]}|jd}dj|dd}|d}y||\}}Wn'tk r|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r4rr5__init__z.pyrRrR) rr=r<rSr:rZr@r;r+r]) rr"rar[r+rZ module_baserZcheckedrYr\rrr find_moduless*   zbuild_py.find_modulescCsqg}|jr"|j|j|jrmx?|jD]4}|j|}|j||}|j|q5W|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrJrdr"r:rb)rrarrmrrrfind_all_moduless  zbuild_py.find_all_modulescCsdd|jDS)NcSsg|]}|dqS)r5rRr)r6r[rrrr9-s z-build_py.get_source_files..)rf)rrrrget_source_files,szbuild_py.get_source_filescCs.|gt||dg}tjj|S)Nz.py)listr;r+r<)rrCrr[Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler5cCs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|jtjj|dd|j dkr|jtjj|d|j qW|dd|j D7}|S)Nr4 optimizationrErcSs>g|]4\}}}}|D]}tjj||qqSr)r;r+r<)r6rrBrCrDrPrrrr9Cs z(build_py.get_outputs..) rfr=rirr@r importlibutilcache_from_sourcerr%)rr-raZoutputsrr[r\rPrrrr23s"    zbuild_py.get_outputscCst|tr!|jd}n!t|ttfsBtd|j|j||}tj j |}|j ||j ||ddS)Nr4z:'package' must be a string (dot-separated), list, or tuplerLr) r&strr=rhtuple TypeErrorrirr;r+rNrMrO)rr[r\rZoutfiledirrrr build_moduleJs  zbuild_py.build_modulecCs=|j}x*|D]"\}}}|j|||qWdS)N)rdrr)rrarr[r\rrrr.Ys zbuild_py.build_modulescCsfx_|jD]T}|j|}|j||}x*|D]"\}}}|j|||q8Wq WdS)N)r"r:rbrr)rrrraZpackage_r[r\rrrr/bs  zbuild_py.build_packagesc Cstjr|jddSddlm}|j}|d tjkrS|tj}|jr||ddd|j d|d|j |j dkr||d|j d|j d|d|j dS) Nz%byte-compiling is disabled, skipping.r)r1r5rrprefixdry_runrR) sysdont_write_bytecoderXdistutils.utilr1rr;sepr rrtr)rrHr1rsrrrr1vs     zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr r,r3r$r?r0r:rZr]rbrdrfrgrir2rrr.r/r1rrrrrs8        '    4     rc@s(eZdZddZddZdS) build_py_2to3cCsfg|_|jr|j|jr9|j|j|j|j|j|jdddS)Nr-r) updated_filesrr.r"r/r0Zrun_2to3r1r2)rrrrr3s      zbuild_py_2to3.runcCs:tj||||}|dr6|jj|d|S)Nr5r)rrrr}r@)rr[r\rresrrrrrs zbuild_py_2to3.build_moduleN)ryrzr{r3rrrrrrr|s  r|)__doc__r;importlib.utilrkrurZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr|rrrrs    |PKq|]𶃗TT2command/__pycache__/bdist_msi.cpython-35.opt-1.pycnu[ Yf@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@speZdZdZddZddZdddd Zd dd d Zd dddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOsKtj|||jd}d|d}|jdd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr@/opt/alt/python35/lib64/python3.5/distutils/command/bdist_msi.pyrs zPyDialog.__init__c Cs'|jddddddd|dS) z,Set the title text of the dialog at the top.Title i@<iz{\VerdanaBold10}%sN)r )rtitlerrrr #szPyDialog.titleBackc Cs>|rd}nd}|j|d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr"8) pushbuttonr)rr nextnameactiveflagsrrrback*s z PyDialog.backCancelc Cs>|rd}nd}|j|d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5s zPyDialog.cancelNextc Cs>|rd}nd}|j|d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@s z PyDialog.nextc Cs:|j|t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN) __name__ __module__ __qualname____doc__rr r-r/r)r4rrrrrs     rc@s]eZdZdZdddfdddefdd d d fd dd dfdddfdddfdddfdddfdddfdddfg ZddddgZddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1gZd2Zd3d4Z d5d6Z d7d8Z d9d:Z d;d<Z d=d>Zd?d@ZdAdBZdS)C bdist_msiz7create a Microsoft Installer (.msi) binary distributionz bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archiveztarget-version=z!require a specific python versionz on the target systemzno-target-compilecz/do not compile .py to .pyc on the target systemzno-target-optimizeoz:do not compile .py to .pyo (optimized)on the target systemz dist-dir=dz-directory to put final built distributions inz skip-buildz2skip rebuilding everything (for testing/debugging)zinstall-script=zTbasename of installation script to be run afterinstallation or before deinstallationzpre-install-script=z{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}s          zbdist_msi.initialize_optionscCs`|jdd |jdkrI|jdj}tjj|d|_t}|j rt|j j rt||_|jr|jg|_ |j r|j j r|j|krt d|fnt|j|_ |jdd d |jrt d|jrSxC|j jD]"}|jtjj|krPqWt d|jd|_dS) NZbdistrEZmsizMtarget version can only be %s, or the '--skip-build' option must be specifiedrDrAz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)rErE)rDrD)rArA)Zset_undefined_optionsr@get_finalized_command bdist_baseospathjoinrrC distributionhas_ext_modulesrHrErlist all_versionsrGrFscriptsbasenameinstall_script_key)rrKZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCs\|js|jd|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|st j dd}d|j |f}|jd}tjj|jd ||_tjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|rtj||jj }|j!} | s|j"} | sd } |j#} d t$| j } |jj}|j rd|j |f} n d|} t%j&|t'| t%j(| | |_)t%j*|j)t+d| fg} |j,ps|j-}|r| j.d|f|j/r| j.d|j/f| rt0|j)d| |j1|j2|j3|j4|j)j5t6|jdr9d|j pd|f}|jj7j.||j8sXt9|jd|j:dS)NbuildinstallZreinit_subcommandsr"r install_libr#z.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr9anydry_run);rEZ run_commandZreinitialize_commandr@prefixZwarn_dircompileoptimizerOrPrCsysversionrArJrLrMrNZ build_baseZ build_librinfoZensure_finalizedinsertrunZmkpathrD get_fullnameget_installer_filenameabspathexistsunlinkmetadataauthorZ maintainerZ get_versionrmsilibZ init_databaser Zgen_uuiddbZ add_tablesr Z author_emailZmaintainer_emailappendZurlradd_find_python add_files add_scriptsadd_uiCommithasattrr\rBrr^)rrXrYrCZplat_specifierrWfullnameinstaller_namerlrmrcZsversionZ product_nameZpropsZemailtuprrrrfs|         %                  z bdist_msi.runc Cs|j}tjd}tjj|j}t||d|dd}t|ddddddd}||d fg}x|j |j gD]}d|}d|} } d} ||j krd } d } nd |} d} t|| | | d| d|}t|||||| }|j |||fqW|j i}x|D]\}}}|g}x^|r|j }xEtj|jD]1}tjj|j|}tjj|r d |j||f}||} t||||| |}|j |q|js+|j|j|d||kr|j|}||<||jkr|jrvtd|d||_q||}t|jd|||j|d|jfgqWqiW|j qNW|j|dS)NZ distfiles TARGETDIRZ SourceDirPythonZ Everythingrr"Z directoryzPython from another locationzPython %s from registryz%s|%szMultiple files with name %sz[#%s]Z DuplicateFile)rornZCABrLrMrir@r r rH other_versionrprupoplistdirZabsoluterNisdirZ make_shortZ componentZstart_componentZlogicalZadd_filerFrUrrZcommit)rroZcabZrootdirrootfitemsrctargetr*defaultZdescr leveldirseenZfeatureZtodofileZafileZshortZnewdirkeyrrrrr s\    !           +zbdist_msi.add_filesc Csd}x|jD]}d|}d|}d|}d|}d|}d|}d|} d |} d |} d |} tjrd} nd } t|jd|d |d| f|d|d| fgt|jd||f||fgt|jd|d | d|df| d!| d|df| d"| d| dfgt|jd|||f| ||df| d|d fgt|jd|||f| ||df| d|d fgt|jdd|dd|fg|d7}qWdS)#asAdds code to the installer to compute the location of Python. Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the registry for each version of Python. Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined, else from PYTHON.MACHINE.X.Y. Properties PYTHONX.Y will be set to TARGETDIRX.Y\python.exeiz)SOFTWARE\Python\PythonCore\%s\InstallPathzpython.machine.z python.user.zPYTHON.MACHINE.z PYTHON.USER.ZPythonFromMachineZPythonFromUserZ PythonExerzPYTHONr}Z RegLocatorNr"Z AppSearch CustomAction3[]z ]\python.exeInstallExecuteSequenceInstallUISequenceZ Conditionr{rz NOT TARGETDIRi3i3i3)rHrnZWin64rro)rstartverZ install_pathZ machine_regZuser_regZ machine_propZ user_propZmachine_actionZ user_actionZ exe_actionZtarget_dir_propexe_propZTyperrrrqCsJ                       zbdist_msi.add_find_pythoncCsK|jrd}x|j|jgD]l}d|}d|}t|jd|d||jfgt|jd|d||fg|d7}q#W|jrGtjj |j d }t |d }|j d |j t |jj |jt|jd d tj|fgt|jddgt|jddgdS)Nizinstall_script.rr2rz &Python%s=3r"zpreinstall.batrzrem =""" %1 %0 exit """ Binary PreInstallr} NOT Installed)rr}rN)rrr)rFrHr~rrorUrGrLrMrNr@openwritereadclosernr)rrrZinstall_actionrZscriptfnrrrrrsys,            zbdist_msi.add_scriptscCsG|j}d}}d}d}d}d}d}d} t|dddddddgt|dddddgt|d dddddgt|d/tjt|d0tjt|d1||||||d2d2d2 } | jd3| jd4d2d5d| jd6d7d5d| jd8d9d:d;d<d=d>| jd?d9d@d;dAd=dB| j d2d6dCd2} | j dDdEt|dF||||||d2d2d2 } | jdG| jd4d2d5d| jd6d7d5d| jd8d9d:d;d<d=dH| jd?d9d@d;dAd=dB| j d2d6dCd2} | j dDdEt|dI||||||d2d2d2 } | jdJ| jd4d2d5d| jd6d7d5d| jdKd9dLd;dAd=dB| j d2d6dCd2} | j dDdMt|dN||||dO|dPdPdPdQdR }|jdSd9dTdUd9d=dV|jdKdAdWdXdAd=dY|jdZdAd[d\ddd]|j d^d_dAd`d\dadbdcddd |jdEdddCdE} | j dDdE|j dddPdCdd} | j dDdd|jdPdEdCdP} | j dDdPt |d ddd\dedf|dgdd }|jdgdddXdhddi|j djdkdldmdnddodj dDdp|j dqdrdldmdnddsdj dDdt|j duddldmdnddvdj dDdw|j dxdydldmdndd6dj dDdz|j d{dmdldmdnddddj dDd||j d}d~dldmdndddj dDd|j dddldmdnddPdj dDdt |dddddd|dododo }|jdZdhd9dddd|j dsdldddddsdo} | j dDdE|j doddddddods} | j dDdMt |ddddd||dMdMdM }|jdZdhd9dddd|j dMddddddMd} | j dDdEt|d!||||||d6d6d6 }|jdKd9d:d;dd=d|jd|jd/d9dd;dAd=d} | jd/dZ|jdd9dd;dd=d} | jddZ|jd7dd5d|j ddd5d|jd6d} | j ddt|d'||||||ddd6 }|jd|jdd9dddAdd|jj|jd4dd5d|j dd6} d}| j ddd|xF|j|jgD]1}|d7}| j dd|d|d|qW| j ddd|d| j dDdMd|d|jd6d} | j dd|j ddd9dddkddddd } | j dd|j}d|}d|}|jdd9dUdd9dd} | jd|| jd|| jd|| jd||j ddd9ddddd|ddd } | jd|| jd|| jd|| jd|t|d||||||ddddQdR }|jdSd9dTdUd9d=d|jdKdAdAdXdAd=d|jdZdAdd\ddd|j dddAdd\dddddd |jddddj dDdMt|d$||||||ddd6 }|jd|jdd9ddddddid }|jdddddAd|jdddddAd|jd7dd5d|j dd6} | j dddd| j dDdMdd|jd6d} | j ddt|d-||||||d6d6d6dQdR }|jdSdAd9dUd9d=d|jdZdddddd|jdddddAdd|jd/d:d|d:dAdd} | jd/dZ|j ddddkddddddd } | jdd|jd4dd5dR|j dd6d5dR|jd6d7j ddt|d*||||||ddd6 }|jd|jdd9dd\dydd|jdd9dd\ddddid }|jddddUdd|jddddUdd|jd4dd5dR|j d2d6} | j dddd| j ddddT| j ddddb| j dddd| j dddd| j dddd| j dddd| j dddd| j dDdMddA|jd6dj dddS(Nriri,z[ProductName] Setupr#r" r[ DefaultUIFontDlgFont8 ErrorDialogErrorDlg Progress1Install Progress2installsMaintenanceForm_ActionRepair WhichUsersALLZ TextStyleTahoma r DlgFontBold8 VerdanaBold10Verdanar VerdanaRed9r PrepareDlg(Not Privileged or Windows9x or Installed WhichUsersDlg.Privileged and not Windows9x and not InstalledSelectFeaturesDlg Not InstalledMaintenanceTypeDlg,Installed AND NOT RESUME AND NOT Preselected ProgressDlg ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr+r.r!Z Description1rFi@Piz[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.r*Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryZbitmapFrz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnoreeiZ ErrorText0r|NxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r&r'ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.f(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar0Z SpawnDialogzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir]Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogr}ZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderrzZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?Z AdminInstallzGSelect whether to install [ProductName] for all users of this computer.zInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"z({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rr)rr)rr)rr)rr)rr)rrrNr)rrrNr")rrrNr")rrrrr)rrr)rrr)rrr)rrr)rNr)rorr rrrr r-r/r)ZeventZcontrolrr(mappingrOrgrHr~Z conditionr4Z radiogroupadd)rroxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalr<Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrcrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrts                .......$$$ !!        "  % zbdist_msi.add_uicCsT|jr%d||j|jf}nd||jf}tjj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rCrArLrMrNrD)rrwZ base_namerxrrrrhs   z bdist_msi.get_installer_filename)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrRr~rIrVrfrrrqrsrtrhrrrrr9SsP      ( [ 6 6 & ?r9)r8rbrLZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrnr r r r r rrrr9rrrrs ">PKq|]kjn n 9command/__pycache__/install_egg_info.cpython-35.opt-1.pycnu[ Yf" @sdZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@sUeZdZdZdZdgZddZdd Zd d Zd d Z dS)install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file install-dir=ddirectory to install tocCs d|_dS)N) install_dir)selfr G/opt/alt/python35/lib64/python3.5/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCs|jdddtt|jjtt|jjtjddf}t j j |j ||_ |j g|_dS)NZ install_libr z%s-%s-py%s.egg-info)r r )Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsysversionospathjoinr targetoutputs)r basenamer r r finalize_optionssz!install_egg_info.finalize_optionsc Cs|j}tjj|rGtjj| rGtj|d|jnmtjj|r||j tj |jfd|n8tjj|j s|j tj |j fd|j t jd||jst|ddd}|jjj|WdQRXdS)Ndry_runz Removing z Creating z Writing %swencodingzUTF-8)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkr makedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s %# zinstall_egg_info.runcCs|jS)N)r)r r r r get_outputs.szinstall_egg_info.get_outputsN)rrr) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr'r(r r r r r s    rcCstjdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. z[^A-Za-z0-9.]+-)resub)namer r r r6srcCs%|jdd}tjdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .z[^A-Za-z0-9.]+r-)replacer.r/)rr r r r>srcCs|jddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r-_)r3)r0r r r rHsr) r,Z distutils.cmdrZ distutilsrrrrr.rrrrr r r r s$+  PKq|] 4command/__pycache__/install_lib.cpython-35.opt-1.pycnu[ Yf @sjdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc @seZdZdZd*d+d,d-d.d/d0gZdd dgZdd iZddZddZddZ ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)ZdS)1 install_libz7install all Python modules (extensions and pure Python) install-dir=ddirectory to install to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files)compileccompile .py to .pyc [default] no-compileNdon't compile .py files optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0] skip-buildskip the build stepscCs:d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirr roptimize skip_build)selfrB/opt/alt/python35/lib64/python3.5/distutils/command/install_lib.pyinitialize_options3s      zinstall_lib.initialize_optionsc Cs|jddddddd|jdkr7d |_|jdkrOd |_t|jtsy+t|j|_|jdkrtWn$ttfk rtdYnXdS)Ninstall build_librrrr rrrTFrzoptimize must be 0, 1, or 2)r!r)rr)r r )rr)rr)rr)rr"r#)Zset_undefined_optionsrr isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$    zinstall_lib.finalize_optionscCsB|j|j}|dk r>|jjr>|j|dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVs  zinstall_lib.runcCsE|jsA|jjr%|jd|jjrA|jddS)Nbuild_py build_ext)rr*r+Z run_commandhas_ext_modules)rrrrr)fs   zinstall_lib.buildcCsLtjj|jr0|j|j|j}n|jd|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarn)rr-rrrr ms   zinstall_lib.installc Cstjr|jddSddlm}|jdj}|jrm||ddd|jd|d|j |j dkr||d|j d|jd|d |j d|j dS) Nz%byte-compiling is disabled, skipping.r)r,r rr prefixdry_runverbose) sysdont_write_bytecoder5Zdistutils.utilr,get_finalized_commandrootrr r7rr8)rfilesr,Z install_rootrrrr,vs    zinstall_lib.byte_compilec Cs|s gS|j|}|j}t||}t|ttj}g}x4|D],} |jtjj|| |dqZW|S)N) r; get_outputsgetattrlenr2sepappendr3join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesrZ prefix_lenZoutputsfilerrr_mutate_outputss  *zinstall_lib._mutate_outputscCsg}x|D]}tjjtjj|d}|tkrDq |jrl|jtjj |dd|j dkr |jtjj |d|j q W|S)Nr" optimizationr) r2r3splitextnormcasePYTHON_SOURCE_EXTENSIONrrB importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess "  zinstall_lib._bytecode_filenamescCsu|j|jjdd|j}|jr?|j|}ng}|j|jjdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r/r!r0)rEr*r+rrrNr1)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr>s   zinstall_lib.get_outputscCslg}|jjr7|jd}|j|j|jjrh|jd}|j|j|S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r/r0)r*r+r;extendr>r1)rZinputsr/r0rrr get_inputsszinstall_lib.get_inputs)rrr)rr r )r r r )rrr)rNr)rrr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr(r.r)r r,rErNr>rPrrrrrs*          r) __doc__r2importlib.utilrKr9Zdistutils.corerZdistutils.errorsrrJrrrrrs   PKq|]~U##+command/__pycache__/register.cpython-35.pycnu[ Yf-@sdZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl Tddl mZGddde ZdS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejdd gZejdddgZdd d fgZd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdddZdS)!registerz7register the distribution with the Python package indexlist-classifiersN list the valid Trove classifiersstrictBWill stop the registering if the meta-data are not fully compliantverifycheckcCsdS)NT)selfr r ?/opt/alt/python35/lib64/python3.5/distutils/command/register.pyszregister.cCs#tj|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr )rr r rrs  zregister.initialize_optionscCs<tj|dd|jfddi}||jjds$  PKq|]I##2command/__pycache__/install_headers.cpython-35.pycnu[ Yf@s0dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sgeZdZdZddgZdgZdd Zd d Zd d ZddZ ddZ dS)install_headerszinstall C/C++ header files install-dir=d$directory to install header files toforcef-force installation (overwrite existing files)cCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr F/opt/alt/python35/lib64/python3.5/distutils/command/install_headers.pyinitialize_optionss  z"install_headers.initialize_optionscCs|jddddS)NZinstallrr r)rr )rr)Zset_undefined_options)r r r rfinalize_optionss z install_headers.finalize_optionscCsf|jj}|sdS|j|jx9|D]1}|j||j\}}|jj|q-WdS)N) distributionheadersZmkpathr Z copy_filer append)r rheaderout_r r rrun!s  zinstall_headers.runcCs|jjpgS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r )r r r r get_outputs.szinstall_headers.get_outputsN)rrr)rrr ) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrr r r rr s      rN)__doc__Zdistutils.corerrr r r rsPKq|]Ԧ;;+command/__pycache__/__init__.cpython-35.pycnu[ Yf@sIdZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr?/opt/alt/python35/lib64/python3.5/distutils/command/__init__.pys&PKq|] __.command/__pycache__/check.cpython-35.opt-1.pycnu[ Yfx @sdZddlmZddlmZypddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@s4eZdZddddddZddZdS) SilentReporterNrasciireplacec Cs/g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerrr>)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrA source_pathparserZsettingsZreporterrDerrrr?ys*           *zcheck._check_rst_dataN)r"r#r$)r%r&r')r(r)r*)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r?rrrrr!$s        r!N)rJZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs   PKq|]662command/__pycache__/bdist_rpm.cpython-35.opt-1.pycnu[ YfT@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc+@seZdZdZdfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddg)Zd4d9d=d2dUgZd7d4d;d9d?d=iZdXdYZdZd[Zd\d]Z d^d_Z d`daZ dbdcZ dddeZ dS) bdist_rpmzcreate an RPM distribution bdist-base=N/base directory for creating built distributions rpm-base=dbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2) dist-dir=dDdirectory to put final RPM files in (and .spec files if --spec-only)python=Mpath to Python interpreter to hard-code in the .spec file (default: "python") fix-pythonLhard-code the exact path to the current Python interpreter in the .spec file spec-onlyonly regenerate spec file source-onlyonly generate source RPM binary-onlyonly generate binary RPM use-bzip27use bzip2 instead of gzip to create source distributiondistribution-name=gname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)group=9package classification [default: "Development/Libraries"]release=RPM release numberserial=RPM serial numbervendor=aRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script] packager=ARPM packager (eg. "Jane Doe ")[default: vendor] doc-files=6list of documentation files (space or comma-separated) changelog= RPM changelogicon=name of icon file provides=%capabilities provided by this package requires=%capabilities required by this package conflicts=-capabilities which conflict with this packagebuild-requires=+capabilities required to build this package obsoletes=*capabilities made obsolete by this package no-autoreq+do not automatically calculate dependencies keep-tempk"don't clean up RPM build directory no-keep-temp&clean up RPM build directory [default]use-rpm-opt-flags8compile with RPM_OPT_FLAGS when building from source RPMno-rpm-opt-flags&do not pass any RPM CFLAGS to compiler rpm3-mode"RPM 3 compatibility mode (default) rpm2-modeRPM 2 compatibility mode prep-script=3Specify a script for the PREP phase of RPM building build-script=4Specify a script for the BUILD phase of RPM building pre-install=:Specify a script for the pre-INSTALL phase of RPM buildinginstall-script=6Specify a script for the INSTALL phase of RPM building post-install=;Specify a script for the post-INSTALL phase of RPM buildingpre-uninstall=rnroREADME README.txtrk1rlrirprqrrrsrtrurvrwrxryrzr|r}r~rrr)rr)Z ensure_stringrZ get_contactZget_contact_emailZensure_string_list isinstancerolistrrexistsappend_format_changelogrpZensure_filename)rZreadmerrrrs>    !                  zbdist_rpm.finalize_package_datac CstrPtdtd|jtd|jtd|jtd|j|jrr|j}|j|nNi}x;d(D]3}t j j |j |||<|j||qW|d}t j j |d |j j}|jt||jfd ||jrdS|j jdd}|jd }|jrOdg|_n dg|_|jd ||j _|jd}|d}|j|||jrt j j|jr|j|j|ntd|jtjddg} t j jdst j jdr(dg} |jrA| jdn&|j rZ| jdn | jd| j!dd|j"g|j#r| j!ddt j j$|j g|j%s| jd|j&r| jd| j|d} | d } d!| d"} d#| | |f} t j'| }zg}d}xP|j(}|sNP|j)j*}|j|d$|dkr;|d}q;W|j+}|rt,d%t-| Wd|j+X|j.| |j/s|j j0rt1}nd&}|j sbt j j |d |}|j2||jt j j |j|}|j jjd'||f|jsx|D]}t j j |d |}t j j|rr|j2||jt j j |jt j j3|}|j jjd'||fqrWdS))Nzbefore _get_package_data():zvendor =z packager =z doc_files =z changelog =SOURCESSPECSBUILDRPMSSRPMSz%s.specz writing '%s'sdistZbztarZgztarrzicon file '%s' does not existz building RPMsrz/usr/bin/rpmbuildz /bin/rpmbuildZrpmbuildz-bsz-bbz-baz--definez __python %sz _topdir %sz--cleanz--quietz%{name}-%{version}-%{release}z.src.rpmz%{arch}/z .%{arch}.rpmz%rpm -q --qf '%s %s\n' --specfile '%s'r_zFailed to execute: %sanyr )rrrrr)4rprintrmrnrorprerbZmkpathrrrrarget_nameZexecuter_make_spec_fileZ dist_filesZreinitialize_commandrhZformatsZ run_commandZget_archive_filesZ copy_filerqrZDistutilsFileErrorrinforgrrfextendrcrabspathrr\popenreadlinestripsplitcloseZDistutilsExecErrorreprZspawnZdry_runrrZ move_filebasename)rZspec_dirZrpm_dirrZ spec_pathZsaved_dist_filesrsourceZ source_dirZrpm_cmdZ nvr_stringZsrc_rpmZ non_src_rpmZq_cmdoutZ binary_rpmsZ source_rpmlinelZstatusZ pyversionZsrpmfilenamerrrrruns                                          z bdist_rpm.runcCs"tjj|jtjj|S)N)rrrrbr)rrrrr _dist_pathszbdist_rpm._dist_pathc CsKd|jjd|jjjddd|jjd|jjdddd|jjg}tjd }d jd d |j D}d }d}|j||}||kr|j d|j d|d |j dddg|j r|j dn |j d|j d|jj d|jddg|jsy|jjs|j dn|j d|jxxdKD]p}t||j}t|tr|j d"|d#j|fq|d$k r|j d"||fqW|jjd%kr7|j d&|jj|jrT|j d'|j|jrz|j d(d#j|j|jr|j d)tjj|j|jr|j d*|j dd+|jjgd,|jtjjtj d-f}d.|} |j!rd/| } d0|} dLd4d5| fd6d7| fdMdNdOdPdQdRg } x| D]|\} } }t|| }|s|r_|j ddE| g|r|j t"|dFj#j$d q_|j |q_W|j ddGdHg|j%r|j dId#j|j%|j&rG|j ddJg|j |j&|S)SziGenerate the text of an RPM spec file and return it as a list of strings (one per line). z %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} cSs g|]}d|jqS)z %s \)r).0rrrr s z-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %sVendorPackagerProvidesRequires Conflicts Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESr{rr&%setup -n %{name}-%{unmangled_version}ZbuildrsZinstallrtcleanrurm -rf $RPM_BUILD_ROOT verifyscriptrvprerwpostrxpreunrypostunrz%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)rrrrrr)r{rrr)rrur)rrvN)rrwN)rrxN)rryN)rrzN)'rrZ get_versionreplacerkZget_description subprocessZ getoutputr splitlinesrrrhZ get_licenserjrrgetattrlowerrrZget_urlrirrqrrrrZget_long_descriptionrcrargvropenreadrrorp)rZ spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultrrrrs          #        &       (    zbdist_rpm._make_spec_filecCs|s |Sg}x|jjdD]i}|j}|ddkr^|jd|gq&|ddkr~|j|q&|jd|q&W|ds|d=|S)zKFormat the changelog correctly and convert it to a list of strings rrrrrz )rrrr)rrpZ new_changelogrrrrr3s  zbdist_rpm._format_changelog)r Nr )r Nr )rrr)rNr)rNr)rNr)rNr)rNr)rNr)rNr)rNr )r!Nr")r#Nr$)r%Nr&)r'Nr()r)Nr*)r+Nr,)r-Nr.)r/Nr0)r1Nr2)r3Nr4)r5Nr6)r7Nr8)r9Nr:)r;r<r=)r>Nr?)r@NrA)rBNrC)rDNrE)rFNrG)rHNrI)rJNrK)rLNrM)rNNrO)rPNrQ)rRNrS)rTNrU)rVNrW)rXNrY)rZNr[)r\r]r^)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrrrrrrrrrrr s      -  -  r )__doc__rrrZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs$ PKq|].6j5 5 5command/__pycache__/install_data.cpython-35.opt-2.pycnu[ ] @sLddlZddlmZddlmZmZGdddeZdS)N)Command) change_root convert_pathc@sjeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) install_datazinstall data files install-dir=dIbase directory for installing data files (default: installation base dir)root=Ns PKq|]Qii-command/__pycache__/bdist_dumb.cpython-35.pycnu[ Yf1@sdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @seZdZdZd&dddefd'd d d dfd(d)d*d+d,g Zd ddgZddddiZd d!Zd"d#Z d$d%Z dS)- bdist_dumbz"create a "dumb" built distribution bdist-dir=d1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)format=f>archive format to create (tar, gztar, bztar, xztar, ztar, zip)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=-directory to put final built distributions in skip-buildN2skip rebuilding everything (for testing/debugging)relative6build the archive using relative paths(default: false)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]posixZgztarntzipcCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr*A/opt/alt/python35/lib64/python3.5/distutils/command/bdist_dumb.pyinitialize_options2s        zbdist_dumb.initialize_optionscCs|jdkr9|jdj}tjj|d|_|jdkry|jtj|_Wn%t k rt dtjYnX|j dddd dS) NZbdistZdumbz@don't know how to create dumb built distributions on platform %sr%r"r&)r%r%)r"r")r&r&) r!Zget_finalized_command bdist_baseospathjoinr#default_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)r)r-r*r*r+finalize_options=s  zbdist_dumb.finalize_optionsc Cs|js|jd|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j j |j|}|js|j}nm|jjr|j|jkrtdt|jt|jfn!t j j |jt|j}|j||jd |d |jd |j}|jjrkt}nd }|jjjd ||f|jst|jd|jdS)NZbuildinstallZreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s)Zroot_dirr'r(anyr dry_run) r&Z run_commandZreinitialize_commandr!rootZwarn_dirrinfoZ distributionZ get_fullnamer"r.r/r0r%rZhas_ext_modulesZ install_baseZinstall_platbaser4reprrZ make_archiver#r'r(rZ dist_filesappendr$rr9)r)r6Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionr*r*r+runOs>              zbdist_dumb.run)r r r )rrr)rr r)rNr)rNr)rrr)rrr) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr1r,r5r?r*r*r*r+r s6     r )__doc__r.Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r*r*r*r+s  PKq|].command/__pycache__/clean.cpython-35.opt-2.pycnu[ ] @sVddlZddlmZddlmZddlmZGdddeZdS)N)Command) remove_tree)logc@s[eZdZdZddddddgZdgZddZddZddZdS)cleanz-clean up temporary files from 'build' command build-base=b2base build directory (default: 'build.build-base') build-lib=N}tjj|rt|d|jqctj d|qcW|jsy'tj |jtjd|jWntk rYnXdS)Ndry_runz%'%s' does not exist -- can't clean itz removing '%s')ospathexistsrrrrdebugrrrrwarnrmdirrinfoOSError)rZ directoryrrrrun1s$        z clean.run)rrr)r Nr )r r r )rNr)rNr)rrr) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrrr(rrrrr s"     r)r Zdistutils.corerZdistutils.dir_utilrZ distutilsrrrrrrs PKq|].~*7*7(command/__pycache__/sdist.cpython-35.pycnu[ Yf-G@sdZddlZddlZddlZddlTddlmZddlmZddlm Z ddl m Z m Z m Z mZddlmZddlTdd lmZdd l mZdd lmZd d ZGddde ZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)*)glob)warn)Command)dir_utildep_util file_util archive_util)TextFile)FileList)log) convert_pathcCsddlm}ddlm}g}x6|jD](}|jd|d||dfq3W|j||jddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSzformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatrZd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZd S)Zsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_check)selfrrrchecking_metadata&szsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST] use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults] no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list)z keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz#list available distribution formatsposixZgztarntzipcheckcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) templatemanifest use_defaultsr' manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_optionsds            zsdist.initialize_optionsc Cs|jdkrd|_|jdkr0d|_|jd|jdkry|jtjg|_Wn%tk rtdtjYnXt j |j}|rt d||j dkrd|_ dS)NZMANIFESTz MANIFEST.inrz)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optrNZ sub_commandsrMrRrVrYrTr_r`rarbr\r]rrUrrrrrr"sn           ( P     * r)__doc__rOstringrtypesrwarningsrZdistutils.corerZ distutilsrrrr Zdistutils.text_filer Zdistutils.errorsZdistutils.filelistr r Zdistutils.utilr rrrrrrs    "  PKq|]7""6command/__pycache__/bdist_wininst.cpython-35.opt-1.pycnu[ Yf;@sdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc@seZdZdZd4dddefdd d d fd dd dfd5d6d7d8d9d:d;d<d=g ZddddgZd&d'Zd(d)Zd*d+Z d,d-Z dd.d/Z d0d1Z d2d3Z dS)> bdist_wininstz-create an executable installer for MS Windows bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archiveztarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo:do not compile .py to .pyo (optimized)on the target system dist-dir=d-directory to put final built distributions inbitmap=b>bitmap to use for the installer instead of python-powered logotitle=t?title to display on the installer background instead of default skip-build2skip rebuilding everything (for testing/debugging)install-script=Tbasename of installation script to be run afterinstallation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionuser-access-control=specify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr3D/opt/alt/python35/lib64/python3.5/distutils/command/bdist_wininst.pyinitialize_options:s            z bdist_wininst.initialize_optionscCsG|jdd |jdkry|jrO|jrO|jjd}|j|_|jdj}tj j |d|_|j sd|_ |j r|jj rt }|j r|j |krtd|f||_ |jdd d |jrCxC|jjD]"}|jtj j|kr Pq Wtd|jdS) Nbdistr.ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specifiedr+r&z(install_script '%s' not found in scripts)r.r.)r+r+)r&r&)Zset_undefined_optionsr%r.r& distributionZget_command_objget_finalized_command bdist_baseospathjoinr*has_ext_modulesrZDistutilsOptionErrorr/scriptsbasename)r2r6r:Z short_versionscriptr3r3r4finalize_optionsJs4        zbdist_wininst.finalize_optionsc Cstjdkr9|jjs-|jjr9td|jsO|jd|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr$|j}|stjdd }d |j |f}|jd}tjj|jd ||_xDdD]<}|j}|dkrS|d}t|d||q+Wtjd|j |jtjjdtjj|j d|jtjd=ddlm}|} |jj } |j!| dd|j } |j"| | |j#|jjr5t$} nd} |jj%j&d| |j'| ftj(d| tj)| |j*st+|j d|j,dS)Nwin32z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstallZreinit_subcommandsr install_libz.%s-%slibpurelibplatlibheadersr?dataz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzipZroot_diranyr zremoving temporary file '%s'dry_run)rJrKrLr?rM)-sysplatformr8r>Zhas_c_librariesZDistutilsPlatformErrorr.Z run_commandZreinitialize_commandr%rootZwarn_dirr&compileoptimizer*versionr9r;r<r=Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerN get_fullnameZ make_archive create_exer,rZ dist_filesappendget_installer_filenamedebugremover'rrQ) r2rErGr*Zplat_specifierrDkeyvaluerNZarchive_basenamefullnamearcnameZ pyversionr3r3r4r\psd                %       zbdist_wininst.runc Csg}|jj}|jd|jp+dd}dd}x{dddd d d d d gD][}t||d}|r]|d|j||f}|jd|||fq]W|jd|jr|jd|j|jd|||jd|j |jd|j |j rD|jd|j |j ra|jd|j |j pv|jj }|jd||ddl }ddl} d|j|j | jf} |jd| dj|S)Nz [metadata]r7 cSs|jddS)Nrgz\n)replace)sr3r3r4escapesz)bdist_wininst.get_inidata..escapeZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlrWz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r8metadatar_Zlong_descriptiongetattr capitalizer/r(r)r*r1r-r]time distutilsZctime __version__r=) r2linesrmrZrjrlrMr-rprqZ build_infor3r3r4 get_inidatas<   !      zbdist_wininst.get_inidatac Csddl}|j|j|j}|j|}|jd||rrt|dj}t|}nd}t|d} | j |j |r| j |t |t r|j d}|d}|jr&t|jddd } | jj d } WdQRX|| d }n |d}| j ||jd d t||} | j | | j t|djdS) Nrz creating %srbwbmbcssrencodingzlatin-1s zs PKq|]0zT,,+command/__pycache__/build_py.cpython-35.pycnu[ Yf C@sdZddlZddlZddlZddlmZddlmZddlTddl m Z m Z ddl m Z Gdd d eZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)glob)Command)*) convert_path Mixin2to3)logc@s*eZdZdZd8d9d:d;d<gZddgZddiZddZddZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd S)=build_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr?/opt/alt/python35/lib64/python3.5/distutils/command/build_py.pyinitialize_options s       zbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrx3|jjjD]\}}t||j|ts z+build_py.get_data_files..) r#get_package_dirosr,joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r9rr%as %%zbuild_py.get_data_filescs|jjdg|jj|g}gxO|D]G}ttjj|t|}jfdd|Dq5WS)z6Return filenames for package's data files in 'src_dir'cs4g|]*}|krtjj|r|qSr)r<r,isfile)r7fn)filesrrr:s z,build_py.find_data_files..)rgetrr<r,r=rextend)rrrCZglobspatternZfilelistr)rIrr@ys !$zbuild_py.find_data_filescCsd}x|jD]v\}}}}xa|D]Y}tjj||}|jtjj||jtjj|||ddq)WqWdS)z$Copy data files into build directoryN preserve_modeF)r&r<r,r=mkpathdirname copy_file)rZlastdirrrCrDrEfilenametargetrrrr1s zbuild_py.build_package_datac Cs|jd}|js5|r.tjj|SdSng}x|ry|jdj|}Wn-tk r|jd|d|d=Yq>X|jd|tjj|Sq>W|jjd}|dk r|jd||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r5rFrr6NrS)r>rr<r,r=KeyErrorinsertrJ)rrr,tailZpdirrrrr;s(      zbuild_py.get_package_dircCs|dkrPtjj|s.td|tjj|sPtd||rtjj|d}tjj|r|Stjdd|dS)NrFz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)) r<r,existsZDistutilsFileErrorisdirr=rGrwarn)rrrinit_pyrrr check_packages     zbuild_py.check_packagecCs1tjj|s)tjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r<r,rGrrY)rmodule module_filerrr check_moduleszbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S)Nz*.pyrz excluding %s) r[rr<r,r=abspathr"Z script_namesplitextbasenamerAZ debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr\rrrfind_package_moduless  "zbuild_py.find_package_modulesc Csi}g}x |jD]}|jd}dj|dd}|d}y||\}}Wn'tk r|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r5rr6__init__z.pyrSrS) rr>r=rTr;r[rAr<r,r^) rr#rbr\r,rZ module_baserZcheckedrZr]rrr find_moduless*   zbuild_py.find_modulescCsqg}|jr"|j|j|jrmx?|jD]4}|j|}|j||}|j|q5W|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrKrer#r;rc)rrbrrmrrrfind_all_moduless  zbuild_py.find_all_modulescCsdd|jDS)NcSsg|]}|dqS)r6rSr)r7r\rrrr:-s z-build_py.get_source_files..)rg)rrrrget_source_files,szbuild_py.get_source_filescCs.|gt||dg}tjj|S)Nz.py)listr<r,r=)rrDrr\Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler6cCs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|jtjj|dd|j dkr|jtjj|d|j qW|dd|j D7}|S)Nr5 optimizationrFrcSs>g|]4\}}}}|D]}tjj||qqSr)r<r,r=)r7rrCrDrErQrrrr:Cs z(build_py.get_outputs..) rgr>rjrrAr importlibutilcache_from_sourcerr&)rr.rbZoutputsrr\r]rQrrrr33s"    zbuild_py.get_outputscCst|tr!|jd}n!t|ttfsBtd|j|j||}tj j |}|j ||j ||ddS)Nr5z:'package' must be a string (dot-separated), list, or tuplerMr) r'strr>rituple TypeErrorrjrr<r,rOrNrP)rr\r]rZoutfiledirrrr build_moduleJs  zbuild_py.build_modulecCs=|j}x*|D]"\}}}|j|||qWdS)N)rers)rrbrr\r]rrrr/Ys zbuild_py.build_modulescCsxxq|jD]f}|j|}|j||}x<|D]4\}}}||ksYt|j|||q8Wq WdS)N)r#r;rcr)rs)rrrrbZpackage_r\r]rrrr0bs  zbuild_py.build_packagesc Cstjr|jddSddlm}|j}|d tjkrS|tj}|jr||ddd|j d|d|j |j dkr||d|j d|j d|d|j dS) Nz%byte-compiling is disabled, skipping.r)r2r6rrprefixdry_runrS) sysdont_write_bytecoderYdistutils.utilr2rr<sepr rrur)rrIr2rtrrrr2vs     zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr r-r4r%r@r1r;r[r^rcrergrhrjr3rsr/r0r2rrrrrs8        '    4     rc@s(eZdZddZddZdS) build_py_2to3cCsfg|_|jr|j|jr9|j|j|j|j|j|jdddS)Nr.r) updated_filesrr/r#r0r1Zrun_2to3r2r3)rrrrr4s      zbuild_py_2to3.runcCs:tj||||}|dr6|jj|d|S)Nr6r)rrsr~rA)rr\r]rresrrrrss zbuild_py_2to3.build_moduleN)rzr{r|r4rsrrrrr}s  r})__doc__r<importlib.utilrlrvrZdistutils.corerZdistutils.errorsrxrrZ distutilsrrr}rrrrs    |PKq|]3^F^F2command/__pycache__/build_ext.cpython-35.opt-1.pycnu[ Yf{@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZejd Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r@/opt/alt/python35/lib64/python3.5/distutils/command/build_ext.pyr sr c@seZdZdZdejZd`dad d d efd d ddfdddefdbdcdddddefdedfdgdhdidjdkdldmdngZd d%d(d1d8gZ d:d2d;e fgZ d<d=Z d>d?Z d@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZejdNdOZdPdQZdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zd2S)o build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s') build-lib=b(directory for compiled extension modules build-temp=t1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s)inplaceiz=ignore build-lib and put compiled extensions into the source z,directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link withz library-dirs=Lz.directories to search for external C librariesrpath=R7directories to search for shared C libraries at runtime link-objects=O2extra explicit link objects to include in the linkdebugg'compile/link with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsswig-cppN)make SWIG create C++ files (default is C) swig-opts=!list of SWIG command line optionsswig=path to the SWIG executableuser#add user include, library and rpathz help-compilerzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsr+r.compilerswigswig_cpp swig_optsr=parallel)selfrrrinitialize_optionsjs*                    zbuild_ext.initialize_optionsc Csrddlm}|jdd'd(d)d*d+d,d-|jdkrP|jj|_|jj|_|j}|jd d }|j dkr|jj pg|_ t |j t r|j j t j|_ tjtjkr|j jt jjtjd |j j|||kr+|j j||jd|jd|jdkr]g|_|jdkrxg|_n*t |jt r|jj t j|_|jdkrg|_n*t |jt r|jj t j|_t jdkrC|jjt jjtjdtjtjkrL|jjt jjtjd|jrst jj|jd|_nt jj|jd|_|j jt jjtttdd}|r|jj||j dkrd}n|j dd}t jjtjd}|r3t jj||}|jj|tj!dddksutj!dddkrtj"j#t jjtjdr|jjt jjtjddt$dn|jjd|j%d r|j&s|jj|j%d!n|jjd|j'rP|j'j d"}d#d$|D|_'|j(rn|j(j d"|_(|j)dkrg|_)n|j)j d%|_)|j*r%t jjt+d }t jjt+d} t jj,|r|j j|t jj,| r%|jj| |jj| t |j-t rnyt.|j-|_-Wnt/k rmt0d&YnXdS).Nr) sysconfigZbuildr@rBrKr+r.rOrAZ plat_specificincluderGrJntZlibsZDebugZRelease_homewin32ZPCbuildcygwinatheosbinlibpythonconfig.Py_ENABLE_SHAREDLIBDIR,cSsg|]}|dfqS)1r).0Zsymbolrrr s z.build_ext.finalize_options.. zparallel should be an integer)r@r@)rBrB)rKrK)r+r+)r.r.)rOrO)rArA)1 distutilsrRZset_undefined_optionsrC distributionZ ext_packageZ ext_modulesr?Zget_python_incrD isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinZensure_string_listrGrHrInameprefixr+rBdirnamergetattrrAplatform executable startswithrget_config_varZ python_buildrErFrNr=r isdirrOint ValueErrorZDistutilsOptionError) rPrRZ py_includeZplat_py_include _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss  "      ""  2$        zbuild_ext.finalize_optionsc Csddlm}|jsdS|jjrj|jd}|jj|jpSg|j j |j |d|j d|j d|jd|j|_ t|j tjdkr|jtkr|j j|j|jdk r|j j|j|jdk r9x*|jD]\}}|j j||qW|jdk rlx!|jD]}|j j|qRW|jdk r|j j|j|j dk r|j j|j |jdk r|j j|j|j dk r|j j!|j |j"dS) Nr) new_compiler build_clibrKverbosedry_runr.rU)#r rr?riZhas_c_librariesget_finalized_commandrGextendZget_library_namesrHrrrrKrrr.rrmrurAr Z initializerDZset_include_dirsrEZ define_macrorFZundefine_macroZ set_librariesZset_library_dirsrIZset_runtime_library_dirsrJZset_link_objectsbuild_extensions)rPrrruvaluemacrorrrruns>    !z build_ext.runc Cst|tstdxt|D]\}}t|trFq(t|t sht|dkrttd|\}}tjd|t|t ot j |stdt|t stdt||d}x9dD]1}|j |}|dk rt|||qW|j d|_d|krPtjd|j d}|rg|_g|_x|D]~} t| tot| dkstdt| dkr|jj| dq~t| dkr~|jj| q~W||||j|jg}x!|jD]}|j|jq W|S)N)rr?rr)rP filenamesrrrrget_source_filess zbuild_ext.get_source_filescCsG|j|jg}x*|jD]}|j|j|jq W|S)N)rr?rrget_ext_fullpathru)rPZoutputsrrrr get_outputss zbuild_ext.get_outputscCs4|j|j|jr&|jn |jdS)N)rr?rO_build_extensions_parallel_build_extensions_serial)rPrrrrs  zbuild_ext.build_extensionscsj}jdkr$tj}yddlm}Wntk rRd}YnX|dkrmjdS|d|jfddjD}xAtj|D]-\}}j ||j WdQRXqWWdQRXdS)NTr)ThreadPoolExecutorZ max_workerscs%g|]}jj|qSr)Zsubmitbuild_extension)rer)executorrPrrrfs z8build_ext._build_extensions_parallel..) rOrm cpu_countZconcurrent.futuresr ImportErrorrr?zip_filter_build_errorsresult)rPZworkersrZfuturesrZfutr)rrPrrs        z$build_ext._build_extensions_parallelc Cs<x5|jD]*}|j||j|WdQRXq WdS)N)r?rr)rPrrrrrsz"build_ext._build_extensions_serialccsdy dVWnTtttfk r_}z+|js3|jd|j|fWYdd}~XnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrru)rPrerrrrs   zbuild_ext._filter_build_errorsc Cs|j}|dks+t|ttf r>td|jt|}|j|j}||j}|jpt ||dst j d|jdSt j d|j|j ||}|jpg}|jdd}x!|jD]}|j|fqW|jj|d|jd|d|jd|j d |d |j}|dd|_|jrt|j|j|jpg}|jp|jj|} |jj||d |j|d |jd |jd |d|j |d|j d|jd| dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extensionZ output_dirrrDr+Zextra_postargsdependsrGrHrexport_symbolsrBZ target_lang)!rrjrrrrurrr.rr r+info swig_sourcesrrrrrrKcompilerBrDZ_built_objectsrrrlanguageZdetect_languageZlink_shared_object get_librariesrHrget_export_symbols) rPrrext_pathrZ extra_argsrrFZobjectsrrrrrsN "              zbuild_ext.build_extensioncCsg}g}i}|jr(tjd|jsOd|jksOd|jkrXd}nd}xr|D]j}tjj|\}} | dkr|j|d||j||d ||            zbuild_ext.swig_sourcescCstjdkrdStjdkrixWd D]5}tjjd|d}tjj|r)|Sq)WdSntd tjd S) zReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. posixrLrU1.31.21.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s'N)rrr)rmrursrtisfileZDistutilsPlatformError)rPZversfnrrrrfs zbuild_ext.find_swigcCs|j|}|jd}|j|d}|jsstjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S) zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). r`rSNrbuild_pyrrr) get_ext_fullnamerlget_ext_filenamerrmrsrtr@rabspathZget_package_dir)rPrfullnameZmodpathfilenamerCrZ package_dirrrrr~s #zbuild_ext.get_ext_fullpathcCs&|jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNr`)rC)rPrrrrrszbuild_ext.get_ext_fullnamecCs?ddlm}|jd}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). r)r|r` EXT_SUFFIX)distutils.sysconfigr|rlrmrsrt)rPrr|rZ ext_suffixrrrrs zbuild_ext.get_ext_filenamecCs@d|jjdd}||jkr9|jj||jS)aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. ZPyInit_r`rSr)rurlrrr)rPrZ initfunc_namerrrrszbuild_ext.get_export_symbolscCs3tjdkrddlm}t|j|szd}|jrJ|d}|tjd?tjd?d@f}|j|gS|jSntjd d d krd }|tjd?tjd?d@f}|j|gStjd d d krddl m }d }|tjd?tjd?d@f}g}xS|j dj D]<}|j dro|j|dd q@|j|q@W|j|dg|Stjdkr|jStjd ddkr|jSddl m }|j dr(djtjd?tjd?d@|j d}|j|gS|jSd S)zReturn the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). rWr) MSVCCompilerz python%d%dZ_dNrYrZz python%d.%dr[)rRSHLIBSz-lrmdarwinaixraz python{}.{}{}ABIFLAGS)roryZdistutils._msvccompilerrrjrKr+ hexversionrGrhrRr|rlr{rrformat)rPrrtemplateZ pythonlibrRZextrar]rrrrsJ    zbuild_ext.get_libraries)rrr)rrr)rrr)rrr )r!r"r#)r%r&r')r(r)r*)r+r,r-)r.r/r0)r1r2r3)r4r5r6)r7Nr8)r9Nr:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrmrnZsep_byr Z user_optionsZboolean_optionsr Z help_optionsrQrrrrrrrr contextlibcontextmanagerrrrrrrrrrrrrrr!s~        @ N     K 6   r)__doc__rrmreroZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rhr Zsiter rrr rrrrrs"       PKq|]'ENPP0command/__pycache__/build_scripts.cpython-35.pycnu[ YfW@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZejd ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sjeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line) build-dir=ddirectory to "build" (copy) toforcef1forcibly build everything (ignore file timestamps executable=e*specify final destination interpreter pathcCs1d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfrD/opt/alt/python35/lib64/python3.5/distutils/command/build_scripts.pyinitialize_optionss     z build_scripts.initialize_optionscCs)|jdddd|jj|_dS) NZbuildr rr r)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s  zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|jdS)N)r copy_scripts)rrrrrun/s zbuild_scripts.runc"Cs|j|jg}g}x|jD]}d}t|}tjj|jtjj|}|j||j rt || rt j d|q&yt |d}Wn$tk r|jsd}Yn|Xtj|j\}}|jd|j} | s!|jd|q&tj| } | rQd}| jdpNd } |rt jd ||j|j||jstjs|j} n:tjjtjd d tjd tjdf} tj| } d| | d} y| jdWn'tk r-t dj!| YnXy| j|Wn*tk rkt dj!| |YnXt |d'}|j"| |j#|j$WdQRX|r|j%q&|r|j%|j||j&||q&Wtj'dkr|x|D]y}|jr!t jd|qtj(|t)d@}|dBd@}||krt jd|||tj*||qW||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sBINDIRz python%s%sVERSIONEXEs#!s zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfilerencodinglinesZ first_liner6Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s $                         zbuild_scripts.copy_scriptsN)r r r )r rr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr s       r c@seZdZddZdS)build_scripts_2to3cCs5tj|\}}|js+|j|||fS)N)r rr/Zrun_2to3)rrrFrrrrs  zbuild_scripts_2to3.copy_scriptsN)rJrKrLrrrrrrMs rM)__doc__r'rerDrZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr0compiler5r rMrrrrs PKq|]Qii3command/__pycache__/bdist_dumb.cpython-35.opt-1.pycnu[ Yf1@sdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @seZdZdZd&dddefd'd d d dfd(d)d*d+d,g Zd ddgZddddiZd d!Zd"d#Z d$d%Z dS)- bdist_dumbz"create a "dumb" built distribution bdist-dir=d1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)format=f>archive format to create (tar, gztar, bztar, xztar, ztar, zip)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=-directory to put final built distributions in skip-buildN2skip rebuilding everything (for testing/debugging)relative6build the archive using relative paths(default: false)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]posixZgztarntzipcCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr*A/opt/alt/python35/lib64/python3.5/distutils/command/bdist_dumb.pyinitialize_options2s        zbdist_dumb.initialize_optionscCs|jdkr9|jdj}tjj|d|_|jdkry|jtj|_Wn%t k rt dtjYnX|j dddd dS) NZbdistZdumbz@don't know how to create dumb built distributions on platform %sr%r"r&)r%r%)r"r")r&r&) r!Zget_finalized_command bdist_baseospathjoinr#default_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)r)r-r*r*r+finalize_options=s  zbdist_dumb.finalize_optionsc Cs|js|jd|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j j |j|}|js|j}nm|jjr|j|jkrtdt|jt|jfn!t j j |jt|j}|j||jd |d |jd |j}|jjrkt}nd }|jjjd ||f|jst|jd|jdS)NZbuildinstallZreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s)Zroot_dirr'r(anyr dry_run) r&Z run_commandZreinitialize_commandr!rootZwarn_dirrinfoZ distributionZ get_fullnamer"r.r/r0r%rZhas_ext_modulesZ install_baseZinstall_platbaser4reprrZ make_archiver#r'r(rZ dist_filesappendr$rr9)r)r6Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionr*r*r+runOs>              zbdist_dumb.run)r r r )rrr)rr r)rNr)rNr)rrr)rrr) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr1r,r5r?r*r*r*r+r s6     r )__doc__r.Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r*r*r*r+s  PKq|]"00)command/__pycache__/upload.cpython-35.pycnu[ Yf@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sieZdZdZejddgZejdgZdd Zd d Zd d Z ddZ dS)uploadzupload binary package to PyPIsignssign files to upload using gpg identity=iGPG identity used to sign filescCs>tj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr=/opt/alt/python35/lib64/python3.5/distutils/command/upload.pyr s      zupload.initialize_optionscCstj||jr,|j r,td|j}|ikrx|d|_|d|_|d|_|d|_ |j r|j jr|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rconfigrrrr(s        zupload.finalize_optionscCsU|jjsd}t|x0|jjD]"\}}}|j|||q+WdS)Nz'No dist file created in earlier command)rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s   z upload.runc$4Cst|j\}}}}}} |s3|s3| rFtd|j|dIkrbtd||jrddd|g} |jrd|jg| d d |d?t/t5|d@|i}t6|jdA|dB|}y%t7|}|j8} |j9}!Wnwt:k r}"z|"j;} |"j9}!WYdd}"~"XnAt<k r}"z!|j2t/|"t3j=WYdd}"~"XnX| dCkr|j2dD| |!ft3j4|j>r|j?|}#dEj@dFdG|#dFdGf}|j2|t3j4n/dH| |!f}|j2|t3j=tA|dS)KNzIncompatible url %shttphttpszunsupported schema Zgpgz --detach-signz-az --local-userdry_runrbz:actionZ file_uploadZprotocol_version1nameversioncontentZfiletyper$Z md5_digestZmetadata_versionz1.0ZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %sZtersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s s s zSubmitting %s to %sz Content-typez multipart/form-data; boundary=%szContent-lengthZ AuthorizationdataheaderszServer response (%s): %s -KzUpload failed (%s): %s)r'r()BrrAssertionErrorr rr r*openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZmd5Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesr3distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvalueZannouncer INFOlenrrZgetcoder"rcodeOSErrorZERRORrZ_read_pypi_responsejoinr)$rr#r$r%ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr/metar8r5rGr.idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler"r9ZrequestresultZstatusreasonetextrrrr!As!                                                zupload.upload_fileN)r rr)rrr) __name__ __module__ __qualname__r1r Z user_optionsZboolean_optionsrrr&r!rrrrr s     r )__doc__rCrJr3rFbase64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs    PKq|]Z# # 2command/__pycache__/install_scripts.cpython-35.pycnu[ Yf@s\dZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@speZdZdZddddgZdd gZddZddZddZddZ ddZ d S)install_scriptsz%install scripts (Python or otherwise) install-dir=ddirectory to install scripts to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files) skip-buildNskip the build stepscCs(d|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfrF/opt/alt/python35/lib64/python3.5/distutils/command/install_scripts.pyinitialize_optionss   z"install_scripts.initialize_optionscCs*|jdd |jdd d d dS) NZbuild build_scriptsrZinstallrrr r)rr)rr)r r )rr)Zset_undefined_options)rrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|jd|j|j|j|_tjdkrxn|jD]`}|j rot j d|qMtj |t dBd@}t j d||tj||qMWdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)rZ run_commandZ copy_treerroutfilesosname get_outputsZdry_runrinfostatrchmod)rfilemoderrrrun)s   zinstall_scripts.runcCs|jjpgS)N)Z distributionscripts)rrrr get_inputs8szinstall_scripts.get_inputscCs |jp gS)N)r)rrrrr;szinstall_scripts.get_outputs)rrr)r r r )r r r)rNr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr$r&rrrrrrs       r) __doc__rZdistutils.corerZ distutilsrr rrrrrrs  PKq|].command/__pycache__/bdist.cpython-35.opt-1.pycnu[ Yf@sbdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCslddlm}g}x6tjD]+}|jd|dtj|dfq W||}|jddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptzformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr dd?dd@d dAd!dBd"dCddDd#dEi Z d0d1Z d2d3Zd4d5Zd S)Frz$create a built (binary) distribution bdist-base=b4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s)formats=N/formats for distribution (comma-separated list) dist-dir=d=directory to put final built distributions in [default: dist] skip-build2skip rebuilding everything (for testing/debugging)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz$lists available distribution formats bdist_rpmposixZgztarntzipZrpmZbztarZxztarZztarZtarZwininstZmsiRPM distribution bdist_dumbgzip'ed tar filebzip2'ed tar filexz'ed tar filecompressed tar filetar file bdist_wininstWindows executable installerZIP file bdist_msiMicrosoft InstallercCsCd|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfr r rinitialize_optionsQs      zbdist.initialize_optionsc Cs|jdkr<|jr't|_n|jdj|_|jdkr||jdj}tjj|d|j|_|j d|j dkry|j tj g|_ Wn%t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r2r4rZget_finalized_commandr1 build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr3)r7r9r r rfinalize_optionsZs$    zbdist.finalize_optionsc Cs g}xR|jD]G}y|j|j|dWqtk rVtd|YqXqWxtt|jD]}||}|j|}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ |j |qqWdS)Nrzinvalid format '%s'r&r)r r r r?ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r6r5Z keep_tempZ run_command)r7Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"      z bdist.run)rrr)rNr)rrr)rNr)rrr)rrr )r!)r!r%)r&r')r&r()r&r))r&r*)r&r+)r,r-)r&r.)r/r0)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrCr=rr r8r@rEr r r rrsJ       r) __doc__r:Zdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKq|]aG|:|:*command/__pycache__/install.cpython-35.pycnu[ Yfg @sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZmZdd lmZdd l mZdd lmZdd lmZdZddddddddddiZdddddddddddiddddddd ddddid!eiZerdd"dd"dd#dd$dd%ied&d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVdWZdXefdYefdZefd[efd\d]d^fgZdS)oinstallz'install everything from build directoryprefix=Ninstallation prefix exec-prefix=.(Unix only) prefix for platform-specific fileshome=+(Unix only) home directory to install under install-base=;base installation directory (instead of --prefix or --home)zinstall-platbase=z8base installation directory for platform-specific files z$(instead of --exec-prefix or --home)root=/opt/alt/python35/lib64/python3.5/distutils/command/install.pyinitialize_optionss2                       zinstall.initialize_optionscCsr|js|js|jr=|js-|jr=tdd|jrd|jsX|jrdtd|jr|js|js|js|js|jrtdtjdkr|jr|j dd|_|j dtjdkr|j n |j |j d t jjd }td d \}}y t j}Wntk rcd }YnXd|jjd|jjd|jjd|d|d dd|d |dd|d |d|d |d|i |_tr|j|jd<|j|jd<|j|j d|j|jd<|j|jd=z %s: %sr) rZdistutils.fancy_getoptrrdebug user_options negative_opt translategetattr)rUmsgrZoptZopt_namevalrVrVrWrjss  zinstall.dump_dirscCs|jdk s|jdk r|jdkrK|jdkrK|jdksx|jdksx|jdksx|jdkrtddS|j r|j dkrt d|j |_|_|j dn|j dk r|j |_|_|j dn|jdkr^|jdk r+tdtjjtj|_tjjtj|_n|jdkry|j|_|j|_|j|_|j ddS)z&Finalizes options for posix platforms.NzPinstall-base or install-platbase supplied, but installation scheme is incompletez$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)rBrCrHrErFrGrIrJr r=rKr select_schemerAr?r@rgr{normpathrm)rUrVrVrWrks<       zinstall.finalize_unixc Cs|jrN|jdkr$td|j|_|_|jtjdn|jdk r|j|_|_|jdnv|j dkrtj j t j |_ |j |_|_y|jtjWn%t k rtdtjYnXdS)z)Finalizes options for non-posix platformsNz$User base directory is not specifiedZ_userrz)I don't know how to install stuff on '%s')r=rKrrBrCrrgrhrAr?r{rrmKeyError)rUrVrVrWrls"   zinstall.finalize_othercCsRt|}xAtD]9}d|}t||dkrt||||qWdS)z=Sets the install directories by applying the install schemes.install_N)INSTALL_SCHEMES SCHEME_KEYSrsetattr)rUrhschemekeyZattrnamerVrVrWrs    zinstall.select_schemecCsx{|D]s}t||}|dk rtjdksFtjdkrXtjj|}t||j}t|||qWdS)NrYr)rrgrhr{ expanduserr rrr)rUZattrsattrrrVrVrW _expand_attrss  zinstall._expand_attrscCs|jdddgdS)zNCalls `os.path.expanduser` on install_base, install_platbase and root.rBrCrDN)r)rUrVrVrWrtszinstall.expand_basedirscCs#|jddddddgdS)z+Calls `os.path.expanduser` on install dirs.rErFrHrGrIrJN)r)rUrVrVrWrvs zinstall.expand_dirscGs>x7|D]/}d|}t||tt||qWdS)z!Call `convert_path` over `names`.rN)rrr)rUnamesrhrrVrVrWrxs  zinstall.convert_pathscCs|jdkr|jj|_|jdk rt|jtrT|jjd|_t|jdkr}|jd}}n3t|jdkr|j\}}n tdt|}n d}d}||_||_ dS)z4Set `path_file` and `extra_dirs` using `extra_path`.N,r>rr_zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsrZ) rNrq isinstancestrrolenr r path_filer})rUrr}rVrVrWrys   zinstall.handle_extra_pathc GsDx=|D]5}d|}t||t|jt||qWdS)z:Change the install directories pointed by name using root.rN)rr rDr)rUrrhrrVrVrWr~s  zinstall.change_rootscCs|js dSttjjd}x`|jjD]O\}}|j|r5tjj| r5|j d|tj |dq5WdS)zCreate directories under ~.N~zos.makedirs('%s', 0o700)i) r=rrgr{rrritems startswithisdirZ debug_printmakedirs)rUrArhr{rVrVrWrw s "zinstall.create_home_pathcCs|jsO|jd|jjdj}|jrO|tkrOtdx!|jD]}|j|q\W|j r|j |j r |j }|j rt|j }x2tt|D]}|||d||szinstall.)rNr)rNr)rNr)r Nr!)r"Nr#)r$Nr%)r&Nr')r(Nr))r*Nr+)r,Nr-)r.r/r0)r1Nr2)r3r4r5)r6r7r8)r9Nr:)r;Nr<) __name__ __module__ __qualname__Z descriptionrZboolean_optionsrsrrrrXrrjrkrlrrrtrvrxryr~rwrrrrrrrrZ sub_commandsrVrVrVrWrIs      M  (       ,          r)rrrrr)__doc__rmrgZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrsZWINDOWS_SCHEMErrrrVrVrVrWs\      PKq|]Ԧ;;1command/__pycache__/__init__.cpython-35.opt-1.pycnu[ Yf@sIdZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr?/opt/alt/python35/lib64/python3.5/distutils/command/__init__.pys&PKq|]8command/__pycache__/install_scripts.cpython-35.opt-2.pycnu[ ]@sVddlZddlmZddlmZddlmZGdddeZdS)N)Command)log)ST_MODEc@speZdZdZddddgZdd gZddZddZddZddZ ddZ d S)install_scriptsz%install scripts (Python or otherwise) install-dir=ddirectory to install scripts to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files) skip-buildNskip the build stepscCs(d|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfr4/opt/alt/python35/lib64/python3.5/install_scripts.pyinitialize_optionss   z"install_scripts.initialize_optionscCs*|jdd |jdd d d dS) NZbuild build_scriptsrinstallrrr r)rr)rr)r r )rr)Zset_undefined_options)rrrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|jd|j|j|j|_tjdkrxn|jD]`}|j rot j d|qMtj |t dBd@}t j d||tj||qMWdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)rZ run_commandZ copy_treerroutfilesosname get_outputsdry_runrinfostatrchmod)rfilemoderrrrun)s   zinstall_scripts.runcCs|jjpgS)N)Z distributionscripts)rrrr get_inputs8szinstall_scripts.get_inputscCs |jp gS)N)r)rrrrr;szinstall_scripts.get_outputs)rrr)r r r )r r r)rNr) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrrr&r(rrrrrrs       r)rZdistutils.corerZ distutilsrr"rrrrrrs PKq|]U**.command/__pycache__/sdist.cpython-35.opt-2.pycnu[ ]-G@sddlZddlZddlZddlTddlmZddlmZddlmZddl m Z m Z m Z m Z ddlmZddlTddlmZdd l mZdd lmZd d ZGd ddeZdS)N)*)glob)warn)Command)dir_utildep_util file_util archive_util)TextFile)FileList)log) convert_pathcCsddlm}ddlm}g}x6|jD](}|jd|d||dfq3W|j||jddS)Nr) FancyGetopt)ARCHIVE_FORMATSzformats=z.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsort print_help)rrformatsformatr*/opt/alt/python35/lib64/python3.5/sdist.py show_formatss  rc@sgeZdZdZddZdMdNdOdPdQdRdSdTdUddddfdVdWdXdYgZd ddddd"gZd*d d+efgZd d ddiZ d,d-d.d/iZ d0efgZ d1d2Z d3d4Z d5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZd S)Zsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)N)metadata_check)selfrrrchecking_metadata&szsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST] use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults] no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list)z keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz#list available distribution formatsposixgztarntzipcheckcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) templatemanifest use_defaultsr( manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_optionsds            zsdist.initialize_optionsc Cs|jdkrd|_|jdkr0d|_|jd|jdkry|jtjg|_Wn%tk rtdtjYnXt j |j}|rt d||j dkrd|_ dS)NZMANIFESTz MANIFEST.inrzr?)__name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optrPZ sub_commandsrOrTrXr[rVrarbrcrdr^r_rrWrrrrrr"sn           ( P     * r)rQstringrtypesrwarningsrZdistutils.corerZ distutilsrrrr Zdistutils.text_filer Zdistutils.errorsZdistutils.filelistr r Zdistutils.utilr rrrrrrs    "  PKq|] .command/__pycache__/install_lib.cpython-35.pycnu[ Yf @sjdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc @seZdZdZd*d+d,d-d.d/d0gZdd dgZdd iZddZddZddZ ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)ZdS)1 install_libz7install all Python modules (extensions and pure Python) install-dir=ddirectory to install to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files)compileccompile .py to .pyc [default] no-compileNdon't compile .py files optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0] skip-buildskip the build stepscCs:d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirr roptimize skip_build)selfrB/opt/alt/python35/lib64/python3.5/distutils/command/install_lib.pyinitialize_options3s      zinstall_lib.initialize_optionsc Cs|jddddddd|jdkr7d |_|jdkrOd |_t|jtsy+t|j|_|jdkrtWn$ttfk rtdYnXdS)Ninstall build_librrrr rrrTFrzoptimize must be 0, 1, or 2)r!r)rr)r r )rr)rr)rr)rr"r#)Zset_undefined_optionsrr isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$    zinstall_lib.finalize_optionscCsB|j|j}|dk r>|jjr>|j|dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVs  zinstall_lib.runcCsE|jsA|jjr%|jd|jjrA|jddS)Nbuild_py build_ext)rr*r+Z run_commandhas_ext_modules)rrrrr)fs   zinstall_lib.buildcCsLtjj|jr0|j|j|j}n|jd|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarn)rr-rrrr ms   zinstall_lib.installc Cstjr|jddSddlm}|jdj}|jrm||ddd|jd|d|j |j dkr||d|j d|jd|d |j d|j dS) Nz%byte-compiling is disabled, skipping.r)r,r rr prefixdry_runverbose) sysdont_write_bytecoder5Zdistutils.utilr,get_finalized_commandrootrr r7rr8)rfilesr,Z install_rootrrrr,vs    zinstall_lib.byte_compilec Cs|s gS|j|}|j}t||}t|ttj}g}x4|D],} |jtjj|| |dqZW|S)N) r; get_outputsgetattrlenr2sepappendr3join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesrZ prefix_lenZoutputsfilerrr_mutate_outputss  *zinstall_lib._mutate_outputscCsg}x|D]}tjjtjj|d}|tkrDq |jrl|jtjj |dd|j dkr |jtjj |d|j q W|S)Nr" optimizationr) r2r3splitextnormcasePYTHON_SOURCE_EXTENSIONrrB importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess "  zinstall_lib._bytecode_filenamescCsu|j|jjdd|j}|jr?|j|}ng}|j|jjdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r/r!r0)rEr*r+rrrNr1)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr>s   zinstall_lib.get_outputscCslg}|jjr7|jd}|j|j|jjrh|jd}|j|j|S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r/r0)r*r+r;extendr>r1)rZinputsr/r0rrr get_inputsszinstall_lib.get_inputs)rrr)rr r )r r r )rrr)rNr)rrr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr(r.r)r r,rErNr>rPrrrrrs*          r) __doc__r2importlib.utilrKr9Zdistutils.corerZdistutils.errorsrrJrrrrrs   PKq|]9u9#4command/__pycache__/install_lib.cpython-35.opt-2.pycnu[ ] @sdddlZddlZddlZddlmZddlmZdZGdddeZ dS)N)Command)DistutilsOptionErrorz.pyc @seZdZdZd*d+d,d-d.d/d0gZdd dgZdd iZddZddZddZ ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)ZdS)1 install_libz7install all Python modules (extensions and pure Python) install-dir=ddirectory to install to build-dir=b'build directory (where to install from)forcef-force installation (overwrite existing files)compileccompile .py to .pyc [default] no-compileNdon't compile .py files optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0] skip-buildskip the build stepscCs:d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirr roptimize skip_build)selfr0/opt/alt/python35/lib64/python3.5/install_lib.pyinitialize_options3s      zinstall_lib.initialize_optionsc Cs|jddddddd|jdkr7d |_|jdkrOd |_t|jtsy+t|j|_|jdkrtWn$ttfk rtdYnXdS)Ninstall build_librrrr rrrTFrzoptimize must be 0, 1, or 2)r!r)rr)r r )rr)rr)rr)rr"r#)Zset_undefined_optionsrr isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$    zinstall_lib.finalize_optionscCsB|j|j}|dk r>|jjr>|j|dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVs  zinstall_lib.runcCsE|jsA|jjr%|jd|jjrA|jddS)Nbuild_py build_ext)rr*r+Z run_commandhas_ext_modules)rrrrr)fs   zinstall_lib.buildcCsLtjj|jr0|j|j|j}n|jd|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarn)rr-rrrr ms   zinstall_lib.installc Cstjr|jddSddlm}|jdj}|jrm||ddd|jd|d|j |j dkr||d|j d|jd|d |j d|j dS) Nz%byte-compiling is disabled, skipping.r)r,r rr prefixdry_runverbose) sysdont_write_bytecoder5Zdistutils.utilr,get_finalized_commandrootrr r7rr8)rfilesr,Z install_rootrrrr,vs    zinstall_lib.byte_compilec Cs|s gS|j|}|j}t||}t|ttj}g}x4|D],} |jtjj|| |dqZW|S)N) r; get_outputsgetattrlenr2sepappendr3join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesrZ prefix_lenZoutputsfilerrr_mutate_outputss  *zinstall_lib._mutate_outputscCsg}x|D]}tjjtjj|d}|tkrDq |jrl|jtjj |dd|j dkr |jtjj |d|j q W|S)Nr" optimizationr) r2r3splitextnormcasePYTHON_SOURCE_EXTENSIONrrB importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileextrrr_bytecode_filenamess "  zinstall_lib._bytecode_filenamescCsu|j|jjdd|j}|jr?|j|}ng}|j|jjdd|j}|||S)Nr/r!r0)rEr*r+rrrOr1)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr>s   zinstall_lib.get_outputscCslg}|jjr7|jd}|j|j|jjrh|jd}|j|j|S)Nr/r0)r*r+r;extendr>r1)rZinputsr/r0rrr get_inputsszinstall_lib.get_inputs)rrr)rr r )r r r )rrr)rNr)rrr)rNr)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optrr(r.r)r r,rErOr>rQrrrrrs*          r) r2importlib.utilrKr9Zdistutils.corerZdistutils.errorsrrJrrrrrs   PKq|]E!TT,command/__pycache__/bdist_msi.cpython-35.pycnu[ Yf@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@speZdZdZddZddZdddd Zd dd d Zd dddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOsKtj|||jd}d|d}|jdd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr@/opt/alt/python35/lib64/python3.5/distutils/command/bdist_msi.pyrs zPyDialog.__init__c Cs'|jddddddd|dS) z,Set the title text of the dialog at the top.Title i@<iz{\VerdanaBold10}%sN)r )rtitlerrrr #szPyDialog.titleBackc Cs>|rd}nd}|j|d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr"8) pushbuttonr)rr nextnameactiveflagsrrrback*s z PyDialog.backCancelc Cs>|rd}nd}|j|d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5s zPyDialog.cancelNextc Cs>|rd}nd}|j|d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@s z PyDialog.nextc Cs:|j|t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN) __name__ __module__ __qualname____doc__rr r-r/r)r4rrrrrs     rc@s]eZdZdZdddfdddefdd d d fd dd dfdddfdddfdddfdddfdddfdddfg ZddddgZddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1gZd2Zd3d4Z d5d6Z d7d8Z d9d:Z d;d<Z d=d>Zd?d@ZdAdBZdS)C bdist_msiz7create a Microsoft Installer (.msi) binary distributionz bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archiveztarget-version=z!require a specific python versionz on the target systemzno-target-compilecz/do not compile .py to .pyc on the target systemzno-target-optimizeoz:do not compile .py to .pyo (optimized)on the target systemz dist-dir=dz-directory to put final built distributions inz skip-buildz2skip rebuilding everything (for testing/debugging)zinstall-script=zTbasename of installation script to be run afterinstallation or before deinstallationzpre-install-script=z{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}s          zbdist_msi.initialize_optionscCs`|jdd |jdkrI|jdj}tjj|d|_t}|j rt|j j rt||_|jr|jg|_ |j r|j j r|j|krt d|fnt|j|_ |jdd d |jrt d|jrSxC|j jD]"}|jtjj|krPqWt d|jd|_dS) NZbdistrEZmsizMtarget version can only be %s, or the '--skip-build' option must be specifiedrDrAz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)rErE)rDrD)rArA)Zset_undefined_optionsr@get_finalized_command bdist_baseospathjoinrrC distributionhas_ext_modulesrHrErlist all_versionsrGrFscriptsbasenameinstall_script_key)rrKZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCsq|js|jd|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|s|jst dt j dd}d |j|f}|jd}tjj|jd ||_tjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|rtj ||jj!}|j"} | s|j#} | sd } |j$} dt%| j } |jj}|j r&d|j |f} n d|} t&j'|t(| t&j)| | |_*t&j+|j*t,d| fg} |j-p|j.}|r| j/d|f|j0r| j/d|j0f| rt1|j*d| |j2|j3|j4|j5|j*j6t7|jdrNd|j p2d|f}|jj8j/||j9smt:|jd|j;dS)NbuildinstallZreinit_subcommandsr"r install_libz Should have already checked thisr#z.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr9anydry_run)| jd?d9d@d;dAd=dB| j d2d6dCd2} | j dDdEt|dF||||||d2d2d2 } | jdG| jd4d2d5d| jd6d7d5d| jd8d9d:d;d<d=dH| jd?d9d@d;dAd=dB| j d2d6dCd2} | j dDdEt|dI||||||d2d2d2 } | jdJ| jd4d2d5d| jd6d7d5d| jdKd9dLd;dAd=dB| j d2d6dCd2} | j dDdMt|dN||||dO|dPdPdPdQdR }|jdSd9dTdUd9d=dV|jdKdAdWdXdAd=dY|jdZdAd[d\ddd]|j d^d_dAd`d\dadbdcddd |jdEdddCdE} | j dDdE|j dddPdCdd} | j dDdd|jdPdEdCdP} | j dDdPt |d ddd\dedf|dgdd }|jdgdddXdhddi|j djdkdldmdnddodj dDdp|j dqdrdldmdnddsdj dDdt|j duddldmdnddvdj dDdw|j dxdydldmdndd6dj dDdz|j d{dmdldmdnddddj dDd||j d}d~dldmdndddj dDd|j dddldmdnddPdj dDdt |dddddd|dododo }|jdZdhd9dddd|j dsdldddddsdo} | j dDdE|j doddddddods} | j dDdMt |ddddd||dMdMdM }|jdZdhd9dddd|j dMddddddMd} | j dDdEt|d!||||||d6d6d6 }|jdKd9d:d;dd=d|jd|jd/d9dd;dAd=d} | jd/dZ|jdd9dd;dd=d} | jddZ|jd7dd5d|j ddd5d|jd6d} | j ddt|d'||||||ddd6 }|jd|jdd9dddAdd|jj|jd4dd5d|j dd6} d}| j ddd|xF|j|jgD]1}|d7}| j dd|d|d|qW| j ddd|d| j dDdMd|d|jd6d} | j dd|j ddd9dddkddddd } | j dd|j}d|}d|}|jdd9dUdd9dd} | jd|| jd|| jd|| jd||j ddd9ddddd|ddd } | jd|| jd|| jd|| jd|t|d||||||ddddQdR }|jdSd9dTdUd9d=d|jdKdAdAdXdAd=d|jdZdAdd\ddd|j dddAdd\dddddd |jddddj dDdMt|d$||||||ddd6 }|jd|jdd9ddddddid }|jdddddAd|jdddddAd|jd7dd5d|j dd6} | j dddd| j dDdMdd|jd6d} | j ddt|d-||||||d6d6d6dQdR }|jdSdAd9dUd9d=d|jdZdddddd|jdddddAdd|jd/d:d|d:dAdd} | jd/dZ|j ddddkddddddd } | jdd|jd4dd5dR|j dd6d5dR|jd6d7j ddt|d*||||||ddd6 }|jd|jdd9dd\dydd|jdd9dd\ddddid }|jddddUdd|jddddUdd|jd4dd5dR|j d2d6} | j dddd| j ddddT| j ddddb| j dddd| j dddd| j dddd| j dddd| j dddd| j dDdMddA|jd6dj dddS(Nriri,z[ProductName] Setupr#r" r[ DefaultUIFontDlgFont8 ErrorDialogErrorDlg Progress1Install Progress2installsMaintenanceForm_ActionRepair WhichUsersALLZ TextStyleTahoma r DlgFontBold8 VerdanaBold10Verdanar VerdanaRed9r PrepareDlg(Not Privileged or Windows9x or Installed WhichUsersDlg.Privileged and not Windows9x and not InstalledSelectFeaturesDlg Not InstalledMaintenanceTypeDlg,Installed AND NOT RESUME AND NOT Preselected ProgressDlg ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr+r.r!Z Description1rFi@Piz[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.r*Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryZbitmapFrz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnoreeiZ ErrorText0r}NxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r&r'ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.f(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar0Z SpawnDialogzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir]Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogr~ZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderr{Z DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?Z AdminInstallzGSelect whether to install [ProductName] for all users of this computer.zInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"z({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rr)rr)rr)rr)rr)rr)rrrNr)rrrNr")rrrNr")rrrrr)rrr)rrr)rrr)rrr)rNr)rprr rrrr r-r/r)ZeventZcontrolrr(mappingrOrhrHrZ conditionr4Z radiogroupadd)rrpxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalr<Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrdrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrus                .......$$$ !!        "  % zbdist_msi.add_uicCsT|jr%d||j|jf}nd||jf}tjj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rCrArLrMrNrD)rrxZ base_nameryrrrris   z bdist_msi.get_installer_filename)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrRrrIrVrgrsrrrtrurirrrrr9SsP      ( [ 6 6 & ?r9)r8rcrLZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrror r r r r rrrr9rrrrs ">PKq|]  .command/__pycache__/clean.cpython-35.opt-1.pycnu[ Yf @s\dZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s[eZdZdZddddddgZdgZddZddZddZdS)cleanz-clean up temporary files from 'build' command build-base=b2base build directory (default: 'build.build-base') build-lib=N}tjj|rt|d|jqctj d|qcW|jsy'tj |jtjd|jWntk rYnXdS)Ndry_runz%'%s' does not exist -- can't clean itz removing '%s')ospathexistsrrrrdebugrrrrwarnrmdirrinfoOSError)rZ directoryrrrrun1s$        z clean.run)rrr)r Nr )r r r )rNr)rNr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr(rrrrr s"     r) __doc__r Zdistutils.corerZdistutils.dir_utilrZ distutilsrrrrrrs  PKq|] 4747,command/__pycache__/bdist_rpm.cpython-35.pycnu[ YfT@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc+@seZdZdZdfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddg)Zd4d9d=d2dUgZd7d4d;d9d?d=iZdXdYZdZd[Zd\d]Z d^d_Z d`daZ dbdcZ dddeZ dS) bdist_rpmzcreate an RPM distribution bdist-base=N/base directory for creating built distributions rpm-base=dbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2) dist-dir=dDdirectory to put final RPM files in (and .spec files if --spec-only)python=Mpath to Python interpreter to hard-code in the .spec file (default: "python") fix-pythonLhard-code the exact path to the current Python interpreter in the .spec file spec-onlyonly regenerate spec file source-onlyonly generate source RPM binary-onlyonly generate binary RPM use-bzip27use bzip2 instead of gzip to create source distributiondistribution-name=gname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)group=9package classification [default: "Development/Libraries"]release=RPM release numberserial=RPM serial numbervendor=aRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script] packager=ARPM packager (eg. "Jane Doe ")[default: vendor] doc-files=6list of documentation files (space or comma-separated) changelog= RPM changelogicon=name of icon file provides=%capabilities provided by this package requires=%capabilities required by this package conflicts=-capabilities which conflict with this packagebuild-requires=+capabilities required to build this package obsoletes=*capabilities made obsolete by this package no-autoreq+do not automatically calculate dependencies keep-tempk"don't clean up RPM build directory no-keep-temp&clean up RPM build directory [default]use-rpm-opt-flags8compile with RPM_OPT_FLAGS when building from source RPMno-rpm-opt-flags&do not pass any RPM CFLAGS to compiler rpm3-mode"RPM 3 compatibility mode (default) rpm2-modeRPM 2 compatibility mode prep-script=3Specify a script for the PREP phase of RPM building build-script=4Specify a script for the BUILD phase of RPM building pre-install=:Specify a script for the pre-INSTALL phase of RPM buildinginstall-script=6Specify a script for the INSTALL phase of RPM building post-install=;Specify a script for the post-INSTALL phase of RPM buildingpre-uninstall=rnroREADME README.txtrk1rlrirprqrrrsrtrurvrwrxryrzr|r}r~rrr)rr)Z ensure_stringrZ get_contactZget_contact_emailZensure_string_list isinstancerolistrrexistsappend_format_changelogrpZensure_filename)rZreadmerrrrs>    !                  zbdist_rpm.finalize_package_datac Cs.trPtdtd|jtd|jtd|jtd|j|jrr|j}|j|nNi}x;d)D]3}t j j |j |||<|j||qW|d}t j j |d |j j}|jt||jfd ||jrdS|j jdd}|jd }|jrOdg|_n dg|_|jd ||j _|jd}|d}|j|||jrt j j|jr|j|j|ntd|jtjddg} t j jdst j jdr(dg} |jrA| jdn&|j rZ| jdn | jd| j!dd|j"g|j#r| j!ddt j j$|j g|j%s| jd|j&r| jd| j|d} | d } d!| d"} d#| | |f} t j'| }zg}d}xh|j(}|sNP|j)j*}t+|d$ksxt,|j|d%|dkr;|d}q;W|j-}|rt.d&t/| Wd|j-X|j0| |j1s*|j j2r t3}nd'}|j st j j |d |}t j j|sKt,|j4||jt j j |j|}|j jjd(||f|js*x|D]}t j j |d |}t j j|r|j4||jt j j |jt j j5|}|j jjd(||fqWdS)*Nzbefore _get_package_data():zvendor =z packager =z doc_files =z changelog =SOURCESSPECSBUILDRPMSSRPMSz%s.specz writing '%s'sdistZbztarZgztarrzicon file '%s' does not existz building RPMsrz/usr/bin/rpmbuildz /bin/rpmbuildZrpmbuildz-bsz-bbz-baz--definez __python %sz _topdir %sz--cleanz--quietz%{name}-%{version}-%{release}z.src.rpmz%{arch}/z .%{arch}.rpmz%rpm -q --qf '%s %s\n' --specfile '%s'r_zFailed to execute: %sanyr )rrrrr)6rprintrmrnrorprerbZmkpathrrrrarget_nameZexecuter_make_spec_fileZ dist_filesZreinitialize_commandrhZformatsZ run_commandZget_archive_filesZ copy_filerqrZDistutilsFileErrorrinforgrrfextendrcrabspathrr\popenreadlinestripsplitlenAssertionErrorcloseZDistutilsExecErrorreprZspawnZdry_runrrZ move_filebasename)rZspec_dirZrpm_dirrZ spec_pathZsaved_dist_filesrsourceZ source_dirZrpm_cmdZ nvr_stringZsrc_rpmZ non_src_rpmZq_cmdoutZ binary_rpmsZ source_rpmlinelZstatusZ pyversionZsrpmfilenamerrrrruns                                          z bdist_rpm.runcCs"tjj|jtjj|S)N)rrrrbr)rrrrr _dist_pathszbdist_rpm._dist_pathc CsKd|jjd|jjjddd|jjd|jjdddd|jjg}tjd }d jd d |j D}d }d}|j||}||kr|j d|j d|d |j dddg|j r|j dn |j d|j d|jj d|jddg|jsy|jjs|j dn|j d|jxxdKD]p}t||j}t|tr|j d"|d#j|fq|d$k r|j d"||fqW|jjd%kr7|j d&|jj|jrT|j d'|j|jrz|j d(d#j|j|jr|j d)tjj|j|jr|j d*|j dd+|jjgd,|jtjjtj d-f}d.|} |j!rd/| } d0|} dLd4d5| fd6d7| fdMdNdOdPdQdRg } x| D]|\} } }t|| }|s|r_|j ddE| g|r|j t"|dFj#j$d q_|j |q_W|j ddGdHg|j%r|j dId#j|j%|j&rG|j ddJg|j |j&|S)SziGenerate the text of an RPM spec file and return it as a list of strings (one per line). z %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} cSs g|]}d|jqS)z %s \)r).0rrrr s z-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %sVendorPackagerProvidesRequires Conflicts Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESr{rr&%setup -n %{name}-%{unmangled_version}ZbuildrsZinstallrtcleanrurm -rf $RPM_BUILD_ROOT verifyscriptrvprerwpostrxpreunrypostunrz%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)rrrrrr)r{rrr)rrur)rrvN)rrwN)rrxN)rryN)rrzN)'rrZ get_versionreplacerkZget_description subprocessZ getoutputr splitlinesrrrhZ get_licenserjrrgetattrlowerrrZget_urlrirrqrrrrZget_long_descriptionrcrargvropenreadrrorp)rZ spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultrrrrs          #        &       (    zbdist_rpm._make_spec_filecCs|s |Sg}x|jjdD]i}|j}|ddkr^|jd|gq&|ddkr~|j|q&|jd|q&W|ds|d=|S)zKFormat the changelog correctly and convert it to a list of strings rrrrrz )rrrr)rrpZ new_changelogrrrrr3s  zbdist_rpm._format_changelog)r Nr )r Nr )rrr)rNr)rNr)rNr)rNr)rNr)rNr)rNr)rNr )r!Nr")r#Nr$)r%Nr&)r'Nr()r)Nr*)r+Nr,)r-Nr.)r/Nr0)r1Nr2)r3Nr4)r5Nr6)r7Nr8)r9Nr:)r;r<r=)r>Nr?)r@NrA)rBNrC)rDNrE)rFNrG)rHNrI)rJNrK)rLNrM)rNNrO)rPNrQ)rRNrS)rTNrU)rVNrW)rXNrY)rZNr[)r\r]r^)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrrrrrrrrrrr s      -  -  r )__doc__rrrZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs$ PKq|]'ENPP6command/__pycache__/build_scripts.cpython-35.opt-1.pycnu[ YfW@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZejd ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sjeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line) build-dir=ddirectory to "build" (copy) toforcef1forcibly build everything (ignore file timestamps executable=e*specify final destination interpreter pathcCs1d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfrD/opt/alt/python35/lib64/python3.5/distutils/command/build_scripts.pyinitialize_optionss     z build_scripts.initialize_optionscCs)|jdddd|jj|_dS) NZbuildr rr r)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s  zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|jdS)N)r copy_scripts)rrrrrun/s zbuild_scripts.runc"Cs|j|jg}g}x|jD]}d}t|}tjj|jtjj|}|j||j rt || rt j d|q&yt |d}Wn$tk r|jsd}Yn|Xtj|j\}}|jd|j} | s!|jd|q&tj| } | rQd}| jdpNd } |rt jd ||j|j||jstjs|j} n:tjjtjd d tjd tjdf} tj| } d| | d} y| jdWn'tk r-t dj!| YnXy| j|Wn*tk rkt dj!| |YnXt |d'}|j"| |j#|j$WdQRX|r|j%q&|r|j%|j||j&||q&Wtj'dkr|x|D]y}|jr!t jd|qtj(|t)d@}|dBd@}||krt jd|||tj*||qW||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sBINDIRz python%s%sVERSIONEXEs#!s zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfilerencodinglinesZ first_liner6Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s $                         zbuild_scripts.copy_scriptsN)r r r )r rr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr s       r c@seZdZddZdS)build_scripts_2to3cCs5tj|\}}|js+|j|||fS)N)r rr/Zrun_2to3)rrrFrrrrs  zbuild_scripts_2to3.copy_scriptsN)rJrKrLrrrrrrMs rM)__doc__r'rerDrZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr0compiler5r rMrrrrs PKq|]1command/__pycache__/register.cpython-35.opt-2.pycnu[ ]-@sddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl Tddl m Z Gddde ZdS)N)warn) PyPIRCCommand)*)logc@seZdZdZejdd gZejdddgZdd d fgZd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdddZdS)!registerz7register the distribution with the Python package indexlist-classifiersN list the valid Trove classifiersstrictBWill stop the registering if the meta-data are not fully compliantverifycheckcCsdS)NT)selfr r -/opt/alt/python35/lib64/python3.5/register.pyszregister.cCs#tj|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr )rr r rrs  zregister.initialize_optionscCs<tj|dd|jfddi}||jjdioStringIOitemstypestrwritegetvalueencodelenr&r'ZRequestZ build_openerZHTTPBasicAuthHandleropenerror HTTPErrorZ show_responsefpreadr.msgURLErrorr*join)rrIrGboundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqZopenerr/erfr r rr,sV      $           $%   zregister.post_to_server)rNr)r Nr )__name__ __module__ __qualname__rLrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr-r,r r r rrs&         z r)osstringrArXZ urllib.parser&Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r rs$  PKq|]N!3command/__pycache__/bdist_dumb.cpython-35.opt-2.pycnu[ ]1@sddlZddlmZddlmZddlmZmZddlTddl m Z ddl m Z Gdd d eZ dS) N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @seZdZdZd&dddefd'd d d dfd(d)d*d+d,g Zd ddgZddddiZd d!Zd"d#Z d$d%Z dS)- bdist_dumbz"create a "dumb" built distribution bdist-dir=d1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)format=f>archive format to create (tar, gztar, bztar, xztar, ztar, zip)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=-directory to put final built distributions in skip-buildN2skip rebuilding everything (for testing/debugging)relative6build the archive using relative paths(default: false)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]posixgztarntzipcCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfr+//opt/alt/python35/lib64/python3.5/bdist_dumb.pyinitialize_options2s        zbdist_dumb.initialize_optionscCs|jdkr9|jdj}tjj|d|_|jdkry|jtj|_Wn%t k rt dtjYnX|j dddd dS) NZbdistZdumbz@don't know how to create dumb built distributions on platform %sr&r#r')r&r&)r#r#)r'r') r"Zget_finalized_command bdist_baseospathjoinr$default_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)r*r.r+r+r,finalize_options=s  zbdist_dumb.finalize_optionsc Cs|js|jd|jddd}|j|_|j|_d|_tjd|j|jdd|jj |j f}t j j |j|}|js|j}nm|jjr|j|jkrtdt|jt|jfn!t j j |jt|j}|j||jd |d |jd |j}|jjrkt}nd }|jjjd ||f|jst|jd|jdS)NZbuildinstallZreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s)root_dirr(r)anyr dry_run) r'Z run_commandZreinitialize_commandr"rootZwarn_dirrinfoZ distributionZ get_fullnamer#r/r0r1r&rZhas_ext_modulesZ install_baseZinstall_platbaser5reprr make_archiver$r(r)rZ dist_filesappendr%rr;)r*r7Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionr+r+r,runOs>              zbdist_dumb.run)r r r )rrr)rr r)rNr)rNr)rrr)rrr) __name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsr2r-r6rBr+r+r+r,r s6     r )r/Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r+r+r+r,s  PKq|]֦SS.command/__pycache__/build.cpython-35.opt-2.pycnu[ ]c@snddlZddlZddlmZddlmZddlmZddZGdddeZ dS) N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rr*/opt/alt/python35/lib64/python3.5/build.pyr src@seZdZdZd8d9d:d dd d fd;d<dddefd=d>d?d@dAg ZddgZd$dd%efgZd&d'Z d(d)Z d*d+Z d,d-Z d.d/Z d0d1Zd2d3Zd4e fd5e fd6efd7efgZdS)Bbuildz"build everything needed to install build-base=b base directory for build librarybuild-purelib=N2build directory for platform-neutral distributionsbuild-platlib=3build directory for platform-specific distributionsz build-lib=z9build directory for all distribution (defaults to either zbuild-purelib or build-platlibbuild-scripts=build directory for scripts build-temp=ttemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsdebugg;compile extensions and libraries with debugging informationforcef2forcibly build everything (ignore file timestamps) executable=e5specify final destination interpreter path (build.py)z help-compilerzlist available compilerscCspd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nrr) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallel)selfrrrinitialize_options8s           zbuild.initialize_optionsc Cs|jdkrt|_ntjdkr9tdd|jtjddf}ttdrr|d7}|jdkrtj j |j d|_|j dkrtj j |j d||_ |j dkr|jjr|j |_ n |j|_ |jdkr.tj j |j d ||_|jdkritj j |j d tjdd|_|jdkrtj jtj|_t|jtryt|j|_Wntk rtd YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z.%s-%srgettotalrefcountz-pydebuglibZtempzscripts-zparallel should be an integer)r+rosnamersysversionhasattrr&pathjoinr%r'r( distributionZ ext_modulesr)r*r,normpath isinstancer-strint ValueError)r.Zplat_specifierrrrfinalize_optionsHs<      zbuild.finalize_optionscCs(x!|jD]}|j|q WdS)N)Zget_sub_commandsZ run_command)r.Zcmd_namerrrrunsz build.runcCs |jjS)N)r;has_pure_modules)r.rrrrCszbuild.has_pure_modulescCs |jjS)N)r;has_c_libraries)r.rrrrDszbuild.has_c_librariescCs |jjS)N)r;has_ext_modules)r.rrrrEszbuild.has_ext_modulescCs |jjS)N)r; has_scripts)r.rrrrFszbuild.has_scriptsZbuild_pyZ build_clibZ build_extr*)r r r )r Nr )rNr)rNr)rrr)rrr)rrr)rrr)rr r!)r"r#r$)__name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsrZ help_optionsr/rArBrCrDrErFZ sub_commandsrrrrrsR      8       r) r6r4Zdistutils.corerZdistutils.errorsrZdistutils.utilrrrrrrrs  PKq|]aG|:|:0command/__pycache__/install.cpython-35.opt-1.pycnu[ Yfg @sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZmZdd lmZdd l mZdd lmZdd lmZdZddddddddddiZdddddddddddiddddddd ddddid!eiZerdd"dd"dd#dd$dd%ied&d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVdWZdXefdYefdZefd[efd\d]d^fgZdS)oinstallz'install everything from build directoryprefix=Ninstallation prefix exec-prefix=.(Unix only) prefix for platform-specific fileshome=+(Unix only) home directory to install under install-base=;base installation directory (instead of --prefix or --home)zinstall-platbase=z8base installation directory for platform-specific files z$(instead of --exec-prefix or --home)root=/opt/alt/python35/lib64/python3.5/distutils/command/install.pyinitialize_optionss2                       zinstall.initialize_optionscCsr|js|js|jr=|js-|jr=tdd|jrd|jsX|jrdtd|jr|js|js|js|js|jrtdtjdkr|jr|j dd|_|j dtjdkr|j n |j |j d t jjd }td d \}}y t j}Wntk rcd }YnXd|jjd|jjd|jjd|d|d dd|d |dd|d |d|d |d|i |_tr|j|jd<|j|jd<|j|j d|j|jd<|j|jd=z %s: %sr) rZdistutils.fancy_getoptrrdebug user_options negative_opt translategetattr)rUmsgrZoptZopt_namevalrVrVrWrjss  zinstall.dump_dirscCs|jdk s|jdk r|jdkrK|jdkrK|jdksx|jdksx|jdksx|jdkrtddS|j r|j dkrt d|j |_|_|j dn|j dk r|j |_|_|j dn|jdkr^|jdk r+tdtjjtj|_tjjtj|_n|jdkry|j|_|j|_|j|_|j ddS)z&Finalizes options for posix platforms.NzPinstall-base or install-platbase supplied, but installation scheme is incompletez$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)rBrCrHrErFrGrIrJr r=rKr select_schemerAr?r@rgr{normpathrm)rUrVrVrWrks<       zinstall.finalize_unixc Cs|jrN|jdkr$td|j|_|_|jtjdn|jdk r|j|_|_|jdnv|j dkrtj j t j |_ |j |_|_y|jtjWn%t k rtdtjYnXdS)z)Finalizes options for non-posix platformsNz$User base directory is not specifiedZ_userrz)I don't know how to install stuff on '%s')r=rKrrBrCrrgrhrAr?r{rrmKeyError)rUrVrVrWrls"   zinstall.finalize_othercCsRt|}xAtD]9}d|}t||dkrt||||qWdS)z=Sets the install directories by applying the install schemes.install_N)INSTALL_SCHEMES SCHEME_KEYSrsetattr)rUrhschemekeyZattrnamerVrVrWrs    zinstall.select_schemecCsx{|D]s}t||}|dk rtjdksFtjdkrXtjj|}t||j}t|||qWdS)NrYr)rrgrhr{ expanduserr rrr)rUZattrsattrrrVrVrW _expand_attrss  zinstall._expand_attrscCs|jdddgdS)zNCalls `os.path.expanduser` on install_base, install_platbase and root.rBrCrDN)r)rUrVrVrWrtszinstall.expand_basedirscCs#|jddddddgdS)z+Calls `os.path.expanduser` on install dirs.rErFrHrGrIrJN)r)rUrVrVrWrvs zinstall.expand_dirscGs>x7|D]/}d|}t||tt||qWdS)z!Call `convert_path` over `names`.rN)rrr)rUnamesrhrrVrVrWrxs  zinstall.convert_pathscCs|jdkr|jj|_|jdk rt|jtrT|jjd|_t|jdkr}|jd}}n3t|jdkr|j\}}n tdt|}n d}d}||_||_ dS)z4Set `path_file` and `extra_dirs` using `extra_path`.N,r>rr_zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsrZ) rNrq isinstancestrrolenr r path_filer})rUrr}rVrVrWrys   zinstall.handle_extra_pathc GsDx=|D]5}d|}t||t|jt||qWdS)z:Change the install directories pointed by name using root.rN)rr rDr)rUrrhrrVrVrWr~s  zinstall.change_rootscCs|js dSttjjd}x`|jjD]O\}}|j|r5tjj| r5|j d|tj |dq5WdS)zCreate directories under ~.N~zos.makedirs('%s', 0o700)i) r=rrgr{rrritems startswithisdirZ debug_printmakedirs)rUrArhr{rVrVrWrw s "zinstall.create_home_pathcCs|jsO|jd|jjdj}|jrO|tkrOtdx!|jD]}|j|q\W|j r|j |j r |j }|j rt|j }x2tt|D]}|||d||szinstall.)rNr)rNr)rNr)r Nr!)r"Nr#)r$Nr%)r&Nr')r(Nr))r*Nr+)r,Nr-)r.r/r0)r1Nr2)r3r4r5)r6r7r8)r9Nr:)r;Nr<) __name__ __module__ __qualname__Z descriptionrZboolean_optionsrsrrrrXrrjrkrlrrrtrvrxryr~rwrrrrrrrrZ sub_commandsrVrVrVrWrIs      M  (       ,          r)rrrrr)__doc__rmrgZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrsZWINDOWS_SCHEMErrrrVrVrVrWs\      PKq|]V 9command/__pycache__/install_egg_info.cpython-35.opt-2.pycnu[ ]" @sddlmZddlmZmZddlZddlZddlZGdddeZddZ dd Z d d Z dS) )Command)logdir_utilNc@sOeZdZdZdgZddZddZd d Zd d Zd S)install_egg_infoz8Install package's PKG-INFO metadata as an .egg-info file install-dir=ddirectory to install tocCs d|_dS)N) install_dir)selfr 5/opt/alt/python35/lib64/python3.5/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCs|jdddtt|jjtt|jjtjddf}t j j |j ||_ |j g|_dS)NZ install_libr z%s-%s-py%s.egg-info)r r )Zset_undefined_options to_filename safe_name distributionget_name safe_versionZ get_versionsysversionospathjoinr targetoutputs)r basenamer r r finalize_optionssz!install_egg_info.finalize_optionsc Cs|j}tjj|rGtjj| rGtj|d|jnmtjj|r||j tj |jfd|n8tjj|j s|j tj |j fd|j t jd||jst|ddd}|jjj|WdQRXdS)Ndry_runz Removing z Creating z Writing %swencodingzUTF-8)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkr makedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s %# zinstall_egg_info.runcCs|jS)N)r)r r r r get_outputs.szinstall_egg_info.get_outputsN)rrr) __name__ __module__ __qualname__ descriptionZ user_optionsr rr(r)r r r r r s    rcCstjdd|S)Nz[^A-Za-z0-9.]+-)resub)namer r r r6srcCs%|jdd}tjdd|S)N .z[^A-Za-z0-9.]+r.)replacer/r0)rr r r r>srcCs|jddS)Nr._)r4)r1r r r rHsr) Z distutils.cmdrZ distutilsrrrrr/rrrrr r r r s $+  PKq|]_g++)command/__pycache__/config.cpython-35.pycnu[ Yf$3@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddd d iZ Gd d d eZ dd dZdS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logcz.czc++z.cxxc @sieZdZdZd>d?d@dAdBdCdDdEdFg ZddZddZddZd d!Zd"d#Z d$d%Z d&d'Z d(d)Z d*d+Z dddd,d-d.Zdddd,d/d0Zddd,d1d2Zddddd,d3d4Zddddd,d5d6Zddddd7d7d8d9Zdddgd:d;Zddd,d<d=ZdS)Gconfigzprepare to build compiler=Nspecify the compiler typecc=specify the compiler executable include-dirs=I.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link with library-dirs=L.directories to search for external C librariesnoisy1show every action (compile, link, run, ...) taken dump-source=dump generated source files before attempting to compile themcCsLd|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_files)selfr'=/opt/alt/python35/lib64/python3.5/distutils/command/config.pyinitialize_options3s       zconfig.initialize_optionscCs|jdkr'|jjpg|_n*t|jtrQ|jjtj|_|jdkrlg|_n!t|jtr|jg|_|jdkrg|_n*t|jtr|jjtj|_dS)N) r!Z distribution isinstancestrsplitospathsepr"r#)r&r'r'r(finalize_optionsBs  zconfig.finalize_optionscCsdS)Nr')r&r'r'r(runRsz config.runcCsddlm}m}t|j|s|d|jd|jdd|_t|j|jru|jj|j|j r|jj |j |j r|jj |j dS)z^Check that 'self.compiler' really is a CCompiler object; if not, make it one. r) CCompiler new_compilerr dry_runZforcerN) distutils.ccompilerr1r2r*r r3rr!Zset_include_dirsr"Z set_librariesr#Zset_library_dirs)r&r1r2r'r'r(_check_compilerYs    zconfig._check_compilercCsdt|}t|d}|rRx|D]}|jd|q*W|jd|j||ddkr||jd|j|S)NZ _configtestwz#include <%s>  r)LANG_EXTopenwriteclose)r&bodyheaderslangfilenamefileheaderr'r'r(_gen_temp_sourcefileks     zconfig._gen_temp_sourcefilecCsT|j|||}d}|jj||g|jj||d|||fS)Nz _configtest.ir!)rCr%extendr Z preprocess)r&r=r>r!r?srcoutr'r'r( _preprocessxs zconfig._preprocesscCs|j|||}|jr/t|d||jj|g\}|jj||g|jj|gd|||fS)Nzcompiling '%s':r!)rCr$ dump_filer Zobject_filenamesr%rDcompile)r&r=r>r!r?rEobjr'r'r(_compiles zconfig._compilec Cs|j||||\}}tjjtjj|d} |jj|g| d|d|d||jjdk r| |jj} |jj | ||| fS)Nrr"r#Z target_lang) rKr-pathsplitextbasenamer Zlink_executableZ exe_extensionr%append) r&r=r>r!r"r#r?rErJprogr'r'r(_links"z config._linkc Gsl|s|j}g|_tjddj|x4|D],}ytj|Wq8tk rcYq8Xq8WdS)Nz removing: %s )r%rinfojoinr-removeOSError)r& filenamesr@r'r'r(_cleans    z config._cleanrc Cscddlm}|jd}y|j||||Wn|k rTd}YnX|j|S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r) CompileErrorTF)r4rYr5rGrX)r&r=r>r!r?rYokr'r'r(try_cpps    zconfig.try_cppc Cs|j|j||||\}}t|trFtj|}t|}d} x3|j} | dkrtP|j| r[d} Pq[W|j |j | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r5rGr*r+rerIr:readlinesearchr<rX) r&patternr=r>r!r?rErFrAmatchliner'r'r( search_cpps      zconfig.search_cppc Cs|ddlm}|jy |j||||d}Wn|k rTd}YnXtj|rgdpjd|j|S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. r)rYTFzsuccess!zfailure.)r4rYr5rKrrSrX)r&r=r>r!r?rYrZr'r'r( try_compiles     zconfig.try_compilec Csddlm}m}|jy&|j||||||d} Wn||fk rfd} YnXtj| rydp|d|j| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. r)rY LinkErrorTFzsuccess!zfailure.)r4rYrer5rQrrSrX) r&r=r>r!r"r#r?rYrerZr'r'r(try_links     zconfig.try_linkc Csddlm}m}|jyA|j||||||\} } } |j| gd} Wn!||tfk rd} YnXtj| rdpd|j | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. r)rYreTFzsuccess!zfailure.) r4rYrer5rQZspawnrrrSrX) r&r=r>r!r"r#r?rYrerErJZexerZr'r'r(try_runs    zconfig.try_runrc Cs|jg}|r'|jd||jd|rN|jd|n|jd||jddj|d}|j|||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r7)r5rOrTrf) r&funcr>r!r"r#ZdeclZcallr=r'r'r( check_funcs   zconfig.check_funccCs*|j|jd|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r5rf)r&Zlibraryr#r>r!Zother_librariesr'r'r( check_lib6s zconfig.check_libcCs|jddd|gd|S)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. r=z /* No body */r>r!)r[)r&rBr!r#r?r'r'r( check_headerDszconfig.check_header)rNr )r Nr )r r r)rrr)rrr)rrr)rrr)rNr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsr)r/r0r5rCrGrKrQrXr[rcrdrfrgrjrkrlr'r'r'r(rsT             rc Csb|dkr tjd|n tj|t|}ztj|jWd|jXdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrSr:readr<)r@headrAr'r'r(rHNs   rH)__doc__sysr-r]Zdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr9rrHr'r'r'r( s$:PKq|]I##8command/__pycache__/install_headers.cpython-35.opt-1.pycnu[ Yf@s0dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sgeZdZdZddgZdgZdd Zd d Zd d ZddZ ddZ dS)install_headerszinstall C/C++ header files install-dir=d$directory to install header files toforcef-force installation (overwrite existing files)cCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr F/opt/alt/python35/lib64/python3.5/distutils/command/install_headers.pyinitialize_optionss  z"install_headers.initialize_optionscCs|jddddS)NZinstallrr r)rr )rr)Zset_undefined_options)r r r rfinalize_optionss z install_headers.finalize_optionscCsf|jj}|sdS|j|jx9|D]1}|j||j\}}|jj|q-WdS)N) distributionheadersZmkpathr Z copy_filer append)r rheaderout_r r rrun!s  zinstall_headers.runcCs|jjpgS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r )r r r r get_outputs.szinstall_headers.get_outputsN)rrr)rrr ) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrr r r rr s      rN)__doc__Zdistutils.corerrr r r rsPKq|]ӌ9/command/__pycache__/config.cpython-35.opt-2.pycnu[ ]$3@sddlZddlZddlZddlmZddlmZddlmZddl m Z dddd iZ Gd d d eZ dd d Z dS)N)Command)DistutilsExecError)customize_compiler)logcz.czc++z.cxxc @sieZdZdZd>d?d@dAdBdCdDdEdFg ZddZddZddZd d!Zd"d#Z d$d%Z d&d'Z d(d)Z d*d+Z dddd,d-d.Zdddd,d/d0Zddd,d1d2Zddddd,d3d4Zddddd,d5d6Zddddd7d7d8d9Zdddgd:d;Zddd,d<d=ZdS)Gconfigzprepare to build compiler=Nspecify the compiler typecc=specify the compiler executable include-dirs=I.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link with library-dirs=L.directories to search for external C librariesnoisy1show every action (compile, link, run, ...) taken dump-source=dump generated source files before attempting to compile themcCsLd|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_files)selfr'+/opt/alt/python35/lib64/python3.5/config.pyinitialize_options3s       zconfig.initialize_optionscCs|jdkr'|jjpg|_n*t|jtrQ|jjtj|_|jdkrlg|_n!t|jtr|jg|_|jdkrg|_n*t|jtr|jjtj|_dS)N) r!Z distribution isinstancestrsplitospathsepr"r#)r&r'r'r(finalize_optionsBs  zconfig.finalize_optionscCsdS)Nr')r&r'r'r(runRsz config.runcCsddlm}m}t|j|s|d|jd|jdd|_t|j|jru|jj|j|j r|jj |j |j r|jj |j dS)Nr) CCompiler new_compilerr dry_runforcer) distutils.ccompilerr1r2r*r r3rr!Zset_include_dirsr"Z set_librariesr#Zset_library_dirs)r&r1r2r'r'r(_check_compilerYs    zconfig._check_compilercCsdt|}t|d}|rRx|D]}|jd|q*W|jd|j||ddkr||jd|j|S)NZ _configtestwz#include <%s>  r)LANG_EXTopenwriteclose)r&bodyheaderslangfilenamefileheaderr'r'r(_gen_temp_sourcefileks     zconfig._gen_temp_sourcefilecCsT|j|||}d}|jj||g|jj||d|||fS)Nz _configtest.ir!)rDr%extendr Z preprocess)r&r>r?r!r@srcoutr'r'r( _preprocessxs zconfig._preprocesscCs|j|||}|jr/t|d||jj|g\}|jj||g|jj|gd|||fS)Nzcompiling '%s':r!)rDr$ dump_filer Zobject_filenamesr%rEcompile)r&r>r?r!r@rFobjr'r'r(_compiles zconfig._compilec Cs|j||||\}}tjjtjj|d} |jj|g| d|d|d||jjdk r| |jj} |jj | ||| fS)Nrr"r#Z target_lang) rLr-pathsplitextbasenamer Zlink_executableZ exe_extensionr%append) r&r>r?r!r"r#r@rFrKprogr'r'r(_links"z config._linkc Gsl|s|j}g|_tjddj|x4|D],}ytj|Wq8tk rcYq8Xq8WdS)Nz removing: %s )r%rinfojoinr-removeOSError)r& filenamesrAr'r'r(_cleans    z config._cleanrc Cscddlm}|jd}y|j||||Wn|k rTd}YnX|j|S)Nr) CompileErrorTF)r5rZr6rHrY)r&r>r?r!r@rZokr'r'r(try_cpps    zconfig.try_cppc Cs|j|j||||\}}t|trFtj|}t|}d} x3|j} | dkrtP|j| r[d} Pq[W|j |j | S)NFT) r6rHr*r+rerJr;readlinesearchr=rY) r&patternr>r?r!r@rFrGrBmatchliner'r'r( search_cpps      zconfig.search_cppc Cs|ddlm}|jy |j||||d}Wn|k rTd}YnXtj|rgdpjd|j|S)Nr)rZTFzsuccess!zfailure.)r5rZr6rLrrTrY)r&r>r?r!r@rZr[r'r'r( try_compiles     zconfig.try_compilec Csddlm}m}|jy&|j||||||d} Wn||fk rfd} YnXtj| rydp|d|j| S)Nr)rZ LinkErrorTFzsuccess!zfailure.)r5rZrfr6rRrrTrY) r&r>r?r!r"r#r@rZrfr[r'r'r(try_links     zconfig.try_linkc Csddlm}m}|jyA|j||||||\} } } |j| gd} Wn!||tfk rd} YnXtj| rdpd|j | S)Nr)rZrfTFzsuccess!zfailure.) r5rZrfr6rRspawnrrrTrY) r&r>r?r!r"r#r@rZrfrFrKZexer[r'r'r(try_runs    zconfig.try_runrc Cs|jg}|r'|jd||jd|rN|jd|n|jd||jddj|d}|j|||||S)Nz int %s ();z int main () {z %s();z %s;}r8)r6rPrUrg) r&funcr?r!r"r#Zdeclcallr>r'r'r( check_funcs   zconfig.check_funccCs*|j|jd|||g||S)Nzint main (void) { })r6rg)r&Zlibraryr#r?r!Zother_librariesr'r'r( check_lib6s zconfig.check_libcCs|jddd|gd|S)Nr>z /* No body */r?r!)r\)r&rCr!r#r@r'r'r( check_headerDszconfig.check_header)rNr )r Nr )r r r)rrr)rrr)rrr)rrr)rNr)rNr)__name__ __module__ __qualname__ descriptionZ user_optionsr)r/r0r6rDrHrLrRrYr\rdrergrirmrnror'r'r'r(rsT             rc Csb|dkr tjd|n tj|t|}ztj|jWd|jXdS)Nz%s)rrTr;readr=)rAheadrBr'r'r(rINs   rI)sysr-r^Zdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr:rrIr'r'r'r( s$:PKq|]kjn n 3command/__pycache__/install_egg_info.cpython-35.pycnu[ Yf" @sdZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@sUeZdZdZdZdgZddZdd Zd d Zd d Z dS)install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file install-dir=ddirectory to install tocCs d|_dS)N) install_dir)selfr G/opt/alt/python35/lib64/python3.5/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCs|jdddtt|jjtt|jjtjddf}t j j |j ||_ |j g|_dS)NZ install_libr z%s-%s-py%s.egg-info)r r )Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsysversionospathjoinr targetoutputs)r basenamer r r finalize_optionssz!install_egg_info.finalize_optionsc Cs|j}tjj|rGtjj| rGtj|d|jnmtjj|r||j tj |jfd|n8tjj|j s|j tj |j fd|j t jd||jst|ddd}|jjj|WdQRXdS)Ndry_runz Removing z Creating z Writing %swencodingzUTF-8)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkr makedirsrinfoopenrZmetadataZwrite_pkg_file)r rfr r r run s %# zinstall_egg_info.runcCs|jS)N)r)r r r r get_outputs.szinstall_egg_info.get_outputsN)rrr) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr'r(r r r r r s    rcCstjdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. z[^A-Za-z0-9.]+-)resub)namer r r r6srcCs%|jdd}tjdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .z[^A-Za-z0-9.]+r-)replacer.r/)rr r r r>srcCs|jddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r-_)r3)r0r r r rHsr) r,Z distutils.cmdrZ distutilsrrrrr.rrrrr r r r s$+  PKq|]3^F^F,command/__pycache__/build_ext.cpython-35.pycnu[ Yf{@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZejd Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r@/opt/alt/python35/lib64/python3.5/distutils/command/build_ext.pyr sr c@seZdZdZdejZd`dad d d efd d ddfdddefdbdcdddddefdedfdgdhdidjdkdldmdngZd d%d(d1d8gZ d:d2d;e fgZ d<d=Z d>d?Z d@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZejdNdOZdPdQZdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zd2S)o build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s') build-lib=b(directory for compiled extension modules build-temp=t1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s)inplaceiz=ignore build-lib and put compiled extensions into the source z,directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link withz library-dirs=Lz.directories to search for external C librariesrpath=R7directories to search for shared C libraries at runtime link-objects=O2extra explicit link objects to include in the linkdebugg'compile/link with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsswig-cppN)make SWIG create C++ files (default is C) swig-opts=!list of SWIG command line optionsswig=path to the SWIG executableuser#add user include, library and rpathz help-compilerzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsr+r.compilerswigswig_cpp swig_optsr=parallel)selfrrrinitialize_optionsjs*                    zbuild_ext.initialize_optionsc Csrddlm}|jdd'd(d)d*d+d,d-|jdkrP|jj|_|jj|_|j}|jd d }|j dkr|jj pg|_ t |j t r|j j t j|_ tjtjkr|j jt jjtjd |j j|||kr+|j j||jd|jd|jdkr]g|_|jdkrxg|_n*t |jt r|jj t j|_|jdkrg|_n*t |jt r|jj t j|_t jdkrC|jjt jjtjdtjtjkrL|jjt jjtjd|jrst jj|jd|_nt jj|jd|_|j jt jjtttdd}|r|jj||j dkrd}n|j dd}t jjtjd}|r3t jj||}|jj|tj!dddksutj!dddkrtj"j#t jjtjdr|jjt jjtjddt$dn|jjd|j%d r|j&s|jj|j%d!n|jjd|j'rP|j'j d"}d#d$|D|_'|j(rn|j(j d"|_(|j)dkrg|_)n|j)j d%|_)|j*r%t jjt+d }t jjt+d} t jj,|r|j j|t jj,| r%|jj| |jj| t |j-t rnyt.|j-|_-Wnt/k rmt0d&YnXdS).Nr) sysconfigZbuildr@rBrKr+r.rOrAZ plat_specificincluderGrJntZlibsZDebugZRelease_homewin32ZPCbuildcygwinatheosbinlibpythonconfig.Py_ENABLE_SHAREDLIBDIR,cSsg|]}|dfqS)1r).0Zsymbolrrr s z.build_ext.finalize_options.. zparallel should be an integer)r@r@)rBrB)rKrK)r+r+)r.r.)rOrO)rArA)1 distutilsrRZset_undefined_optionsrC distributionZ ext_packageZ ext_modulesr?Zget_python_incrD isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinZensure_string_listrGrHrInameprefixr+rBdirnamergetattrrAplatform executable startswithrget_config_varZ python_buildrErFrNr=r isdirrOint ValueErrorZDistutilsOptionError) rPrRZ py_includeZplat_py_include _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss  "      ""  2$        zbuild_ext.finalize_optionsc Csddlm}|jsdS|jjrj|jd}|jj|jpSg|j j |j |d|j d|j d|jd|j|_ t|j tjdkr|jtkr|j j|j|jdk r|j j|j|jdk r9x*|jD]\}}|j j||qW|jdk rlx!|jD]}|j j|qRW|jdk r|j j|j|j dk r|j j|j |jdk r|j j|j|j dk r|j j!|j |j"dS) Nr) new_compiler build_clibrKverbosedry_runr.rU)#r rr?riZhas_c_librariesget_finalized_commandrGextendZget_library_namesrHrrrrKrrr.rrmrurAr Z initializerDZset_include_dirsrEZ define_macrorFZundefine_macroZ set_librariesZset_library_dirsrIZset_runtime_library_dirsrJZset_link_objectsbuild_extensions)rPrrruvaluemacrorrrruns>    !z build_ext.runc Cst|tstdxt|D]\}}t|trFq(t|t sht|dkrttd|\}}tjd|t|t ot j |stdt|t stdt||d}x9dD]1}|j |}|dk rt|||qW|j d|_d|krPtjd|j d}|rg|_g|_x|D]~} t| tot| dkstdt| dkr|jj| dq~t| dkr~|jj| q~W||||j|jg}x!|jD]}|j|jq W|S)N)rr?rr)rP filenamesrrrrget_source_filess zbuild_ext.get_source_filescCsG|j|jg}x*|jD]}|j|j|jq W|S)N)rr?rrget_ext_fullpathru)rPZoutputsrrrr get_outputss zbuild_ext.get_outputscCs4|j|j|jr&|jn |jdS)N)rr?rO_build_extensions_parallel_build_extensions_serial)rPrrrrs  zbuild_ext.build_extensionscsj}jdkr$tj}yddlm}Wntk rRd}YnX|dkrmjdS|d|jfddjD}xAtj|D]-\}}j ||j WdQRXqWWdQRXdS)NTr)ThreadPoolExecutorZ max_workerscs%g|]}jj|qSr)Zsubmitbuild_extension)rer)executorrPrrrfs z8build_ext._build_extensions_parallel..) rOrm cpu_countZconcurrent.futuresr ImportErrorrr?zip_filter_build_errorsresult)rPZworkersrZfuturesrZfutr)rrPrrs        z$build_ext._build_extensions_parallelc Cs<x5|jD]*}|j||j|WdQRXq WdS)N)r?rr)rPrrrrrsz"build_ext._build_extensions_serialccsdy dVWnTtttfk r_}z+|js3|jd|j|fWYdd}~XnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrru)rPrerrrrs   zbuild_ext._filter_build_errorsc Cs|j}|dks+t|ttf r>td|jt|}|j|j}||j}|jpt ||dst j d|jdSt j d|j|j ||}|jpg}|jdd}x!|jD]}|j|fqW|jj|d|jd|d|jd|j d |d |j}|dd|_|jrt|j|j|jpg}|jp|jj|} |jj||d |j|d |jd |jd |d|j |d|j d|jd| dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extensionZ output_dirrrDr+Zextra_postargsdependsrGrHrexport_symbolsrBZ target_lang)!rrjrrrrurrr.rr r+info swig_sourcesrrrrrrKcompilerBrDZ_built_objectsrrrlanguageZdetect_languageZlink_shared_object get_librariesrHrget_export_symbols) rPrrext_pathrZ extra_argsrrFZobjectsrrrrrsN "              zbuild_ext.build_extensioncCsg}g}i}|jr(tjd|jsOd|jksOd|jkrXd}nd}xr|D]j}tjj|\}} | dkr|j|d||j||d ||            zbuild_ext.swig_sourcescCstjdkrdStjdkrixWd D]5}tjjd|d}tjj|r)|Sq)WdSntd tjd S) zReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. posixrLrU1.31.21.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s'N)rrr)rmrursrtisfileZDistutilsPlatformError)rPZversfnrrrrfs zbuild_ext.find_swigcCs|j|}|jd}|j|d}|jsstjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S) zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). r`rSNrbuild_pyrrr) get_ext_fullnamerlget_ext_filenamerrmrsrtr@rabspathZget_package_dir)rPrfullnameZmodpathfilenamerCrZ package_dirrrrr~s #zbuild_ext.get_ext_fullpathcCs&|jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNr`)rC)rPrrrrrszbuild_ext.get_ext_fullnamecCs?ddlm}|jd}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). r)r|r` EXT_SUFFIX)distutils.sysconfigr|rlrmrsrt)rPrr|rZ ext_suffixrrrrs zbuild_ext.get_ext_filenamecCs@d|jjdd}||jkr9|jj||jS)aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. ZPyInit_r`rSr)rurlrrr)rPrZ initfunc_namerrrrszbuild_ext.get_export_symbolscCs3tjdkrddlm}t|j|szd}|jrJ|d}|tjd?tjd?d@f}|j|gS|jSntjd d d krd }|tjd?tjd?d@f}|j|gStjd d d krddl m }d }|tjd?tjd?d@f}g}xS|j dj D]<}|j dro|j|dd q@|j|q@W|j|dg|Stjdkr|jStjd ddkr|jSddl m }|j dr(djtjd?tjd?d@|j d}|j|gS|jSd S)zReturn the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). rWr) MSVCCompilerz python%d%dZ_dNrYrZz python%d.%dr[)rRSHLIBSz-lrmdarwinaixraz python{}.{}{}ABIFLAGS)roryZdistutils._msvccompilerrrjrKr+ hexversionrGrhrRr|rlr{rrformat)rPrrtemplateZ pythonlibrRZextrar]rrrrsJ    zbuild_ext.get_libraries)rrr)rrr)rrr)rrr )r!r"r#)r%r&r')r(r)r*)r+r,r-)r.r/r0)r1r2r3)r4r5r6)r7Nr8)r9Nr:)r;Nr<)r=Nr>) __name__ __module__ __qualname__Z descriptionrmrnZsep_byr Z user_optionsZboolean_optionsr Z help_optionsrQrrrrrrrr contextlibcontextmanagerrrrrrrrrrrrrrr!s~        @ N     K 6   r)__doc__rrmreroZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rhr Zsiter rrr rrrrrs"       PKq|]s3##0command/__pycache__/bdist_wininst.cpython-35.pycnu[ Yf;@sdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc@seZdZdZd4dddefdd d d fd dd dfd5d6d7d8d9d:d;d<d=g ZddddgZd&d'Zd(d)Zd*d+Z d,d-Z dd.d/Z d0d1Z d2d3Z dS)> bdist_wininstz-create an executable installer for MS Windows bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archiveztarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo:do not compile .py to .pyo (optimized)on the target system dist-dir=d-directory to put final built distributions inbitmap=b>bitmap to use for the installer instead of python-powered logotitle=t?title to display on the installer background instead of default skip-build2skip rebuilding everything (for testing/debugging)install-script=Tbasename of installation script to be run afterinstallation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionuser-access-control=specify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr3D/opt/alt/python35/lib64/python3.5/distutils/command/bdist_wininst.pyinitialize_options:s            z bdist_wininst.initialize_optionscCsG|jdd |jdkry|jrO|jrO|jjd}|j|_|jdj}tj j |d|_|j sd|_ |j r|jj rt }|j r|j |krtd|f||_ |jdd d |jrCxC|jjD]"}|jtj j|kr Pq Wtd|jdS) Nbdistr.ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specifiedr+r&z(install_script '%s' not found in scripts)r.r.)r+r+)r&r&)Zset_undefined_optionsr%r.r& distributionZget_command_objget_finalized_command bdist_baseospathjoinr*has_ext_modulesrZDistutilsOptionErrorr/scriptsbasename)r2r6r:Z short_versionscriptr3r3r4finalize_optionsJs4        zbdist_wininst.finalize_optionsc Cstjdkr9|jjs-|jjr9td|jsO|jd|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr9|j}|s|jstd tjdd }d |j |f}|jd}tjj|jd ||_xDdD]<}|j}|dkrh|d}t|d||q@Wtjd|j |jtjjdtjj|j d|jtjd=ddlm }|} |jj!} |j"| dd|j } |j#| | |j$|jjrJt%} nd} |jj&j'd| |j(| ftj)d| tj*| |j+st,|j d|j-dS)Nwin32z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstallZreinit_subcommandsr install_libz Should have already checked thisz.%s-%slibpurelibplatlibheadersr?dataz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzipZroot_diranyr zremoving temporary file '%s'dry_run)rJrKrLr?rM).sysplatformr8r>Zhas_c_librariesZDistutilsPlatformErrorr.Z run_commandZreinitialize_commandr%rootZwarn_dirr&compileoptimizer*AssertionErrorversionr9r;r<r=Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfilerN get_fullnameZ make_archive create_exer,rZ dist_filesappendget_installer_filenamedebugremover'rrQ) r2rErGr*Zplat_specifierrDkeyvaluerNZarchive_basenamefullnamearcnameZ pyversionr3r3r4r]psf                %       zbdist_wininst.runc Csg}|jj}|jd|jp+dd}dd}x{dddd d d d d gD][}t||d}|r]|d|j||f}|jd|||fq]W|jd|jr|jd|j|jd|||jd|j |jd|j |j rD|jd|j |j ra|jd|j |j pv|jj }|jd||ddl }ddl} d|j|j | jf} |jd| dj|S)Nz [metadata]r7 cSs|jddS)Nrhz\n)replace)sr3r3r4escapesz)bdist_wininst.get_inidata..escapeZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlrXz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r8metadatar`Zlong_descriptiongetattr capitalizer/r(r)r*r1r-r^time distutilsZctime __version__r=) r2linesrnr[rkrmrMr-rqrrZ build_infor3r3r4 get_inidatas<   !      zbdist_wininst.get_inidatac Csddl}|j|j|j}|j|}|jd||rrt|dj}t|}nd}t|d} | j |j |r| j |t |t r|j d}|d}|jr&t|jddd } | jj d } WdQRX|| d }n |d}| j ||jd d t||} | j | | j t|djdS) Nrz creating %srbwbmbcssrencodingzlatin-1s zs PKq|]z 5command/__pycache__/install_data.cpython-35.opt-1.pycnu[ Yf @sRdZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sjeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) install_datazinstall data files install-dir=dIbase directory for installing data files (default: installation base dir)root=Ns PKq|]P >.command/__pycache__/bdist.cpython-35.opt-2.pycnu[ ]@s\ddlZddlmZddlTddlmZddZGdddeZdS) N)Command)*) get_platformcCslddlm}g}x6tjD]+}|jd|dtj|dfq W||}|jddS)Nr) FancyGetoptzformats=z'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_command print_help)rformatsformatZpretty_printerr*/opt/alt/python35/lib64/python3.5/bdist.py show_formats s rc@seZdZdZd6dddefd7d8d9d:d;gZdgZdd defgZd<Z ddddiZ ddddd d!d"dd#g Z dd=dd>dd?dd@d dAd!dBd"dCddDd#dEi Z d0d1Z d2d3Zd4d5Zd S)Frz$create a built (binary) distribution bdist-base=b4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s)formats=N/formats for distribution (comma-separated list) dist-dir=d=directory to put final built distributions in [default: dist] skip-build2skip rebuilding everything (for testing/debugging)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz$lists available distribution formats bdist_rpmposixgztarntzipZrpmbztarxztarZztartarZwininstZmsiRPM distribution bdist_dumbgzip'ed tar filebzip2'ed tar filexz'ed tar filecompressed tar filetar file bdist_wininstWindows executable installerZIP file bdist_msiMicrosoft InstallercCsCd|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfrrrinitialize_optionsQs      zbdist.initialize_optionsc Cs|jdkr<|jr't|_n|jdj|_|jdkr||jdj}tjj|d|j|_|j d|j dkry|j tj g|_ Wn%t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r7r9rZget_finalized_commandr6 build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr8)r<r>rrrfinalize_optionsZs$    zbdist.finalize_optionsc Cs g}xR|jD]G}y|j|j|dWqtk rVtd|YqXqWxtt|jD]}||}|j|}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ |j |qqWdS)Nrzinvalid format '%s'r+r)r r r rDZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r;r:Z keep_tempZ run_command)r<commandsr iZcmd_nameZsub_cmdrrrrunvs"      z bdist.run)rrr)rNr)rrr)rNr)rrr)rr r!)r")r"r*)r+r,)r+r-)r+r.)r+r/)r+r0)r1r2)r+r3)r4r5)__name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsrZ help_optionsrHrBrr r=rErKrrrrrsJ       r)r?Zdistutils.corerZdistutils.errorsZdistutils.utilrrrrrrrs   PKq|]d?d@dAg ZddgZd$dd%efgZd&d'Z d(d)Z d*d+Z d,d-Z d.d/Z d0d1Zd2d3Zd4e fd5e fd6efd7efgZdS)Bbuildz"build everything needed to install build-base=b base directory for build librarybuild-purelib=N2build directory for platform-neutral distributionsbuild-platlib=3build directory for platform-specific distributionsz build-lib=z9build directory for all distribution (defaults to either zbuild-purelib or build-platlibbuild-scripts=build directory for scripts build-temp=ttemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsdebugg;compile extensions and libraries with debugging informationforcef2forcibly build everything (ignore file timestamps) executable=e5specify final destination interpreter path (build.py)z help-compilerzlist available compilerscCspd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nrr) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallel)selfrrrinitialize_options8s           zbuild.initialize_optionsc Cs|jdkrt|_ntjdkr9tdd|jtjddf}ttdrr|d7}|jdkrtj j |j d|_|j dkrtj j |j d||_ |j dkr|jjr|j |_ n |j|_ |jdkr.tj j |j d ||_|jdkritj j |j d tjdd|_|jdkrtj jtj|_t|jtryt|j|_Wntk rtd YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z.%s-%srgettotalrefcountz-pydebuglibZtempzscripts-zparallel should be an integer)r+rosnamersysversionhasattrr&pathjoinr%r'r( distributionZ ext_modulesr)r*r,normpath isinstancer-strint ValueError)r.Zplat_specifierrrrfinalize_optionsHs<      zbuild.finalize_optionscCs(x!|jD]}|j|q WdS)N)Zget_sub_commandsZ run_command)r.Zcmd_namerrrrunsz build.runcCs |jjS)N)r;has_pure_modules)r.rrrrCszbuild.has_pure_modulescCs |jjS)N)r;has_c_libraries)r.rrrrDszbuild.has_c_librariescCs |jjS)N)r;has_ext_modules)r.rrrrEszbuild.has_ext_modulescCs |jjS)N)r; has_scripts)r.rrrrFszbuild.has_scriptsZbuild_pyZ build_clibZ build_extr*)r r r )r Nr )rNr)rNr)rrr)rrr)rrr)rrr)rr r!)r"r#r$)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr/rArBrCrDrErFZ sub_commandsrrrrrsR      8       r) __doc__r6r4Zdistutils.corerZdistutils.errorsrZdistutils.utilrrrrrrrs  PKq|]/command/__pycache__/upload.cpython-35.opt-2.pycnu[ ]@sddlZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z mZddlmZddlmZddlmZGd d d eZdS) N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sieZdZdZejddgZejdgZdd Zd d Zd d Z ddZ dS)uploadzupload binary package to PyPIsignssign files to upload using gpg identity=iGPG identity used to sign filescCs>tj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr+/opt/alt/python35/lib64/python3.5/upload.pyr s      zupload.initialize_optionscCstj||jr,|j r,td|j}|ikrx|d|_|d|_|d|_|d|_ |j r|j jr|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rconfigrrrr(s        zupload.finalize_optionscCsU|jjsd}t|x0|jjD]"\}}}|j|||q+WdS)Nz'No dist file created in earlier command)rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s   z upload.runc$4Cst|j\}}}}}} |s3|s3| rFtd|j|dIkrbtd||jrddd|g} |jrd|jg| d d |d?t/t5|d@|i}t6|jdA|dB|}y%t7|}|j8} |j9}!Wnwt:k r}"z|"j;} |"j9}!WYdd}"~"XnAt<k r}"z!|j2t/|"t3j=WYdd}"~"XnX| dCkr|j2dD| |!ft3j4|j>r|j?|}#dEj@dFdG|#dFdGf}|j2|t3j4n/dH| |!f}|j2|t3j=tA|dS)KNzIncompatible url %shttphttpszunsupported schema Zgpgz --detach-signz-az --local-userdry_runrbz:actionZ file_uploadZprotocol_version1nameversioncontentZfiletyper$Z md5_digestZmetadata_versionz1.0ZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %sZtersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s s s zSubmitting %s to %sz Content-typez multipart/form-data; boundary=%szContent-lengthZ AuthorizationdataheaderszServer response (%s): %s -KzUpload failed (%s): %s)r'r()BrrAssertionErrorr rr r*openreadcloserZmetadataget_nameZ get_versionospathbasenamehashlibmd5 hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesr3distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvalueZannouncer INFOlenrrZgetcoder"rcodeOSErrorERRORrZ_read_pypi_responsejoinr)$rr#r$r%ZschemaZnetlocZurlparamsZqueryZ fragmentsZgpg_argsfr/metar8r5rJr.idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler"r9Zrequestresultstatusreasonetextrrrr!As!                                                zupload.upload_fileN)r rr)rrr) __name__ __module__ __qualname__r1r Z user_optionsZboolean_optionsrrr&r!rrrrr s     r )rDrMr3rGbase64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs    PKq|](command/__pycache__/bdist.cpython-35.pycnu[ Yf@sbdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCslddlm}g}x6tjD]+}|jd|dtj|dfq W||}|jddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptzformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr dd?dd@d dAd!dBd"dCddDd#dEi Z d0d1Z d2d3Zd4d5Zd S)Frz$create a built (binary) distribution bdist-base=b4temporary directory for creating built distributionsz plat-name=pz;platform name to embed in generated filenames (default: %s)formats=N/formats for distribution (comma-separated list) dist-dir=d=directory to put final built distributions in [default: dist] skip-build2skip rebuilding everything (for testing/debugging)owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz$lists available distribution formats bdist_rpmposixZgztarntzipZrpmZbztarZxztarZztarZtarZwininstZmsiRPM distribution bdist_dumbgzip'ed tar filebzip2'ed tar filexz'ed tar filecompressed tar filetar file bdist_wininstWindows executable installerZIP file bdist_msiMicrosoft InstallercCsCd|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_base plat_namer dist_dir skip_buildgroupowner)selfr r rinitialize_optionsQs      zbdist.initialize_optionsc Cs|jdkr<|jr't|_n|jdj|_|jdkr||jdj}tjj|d|j|_|j d|j dkry|j tj g|_ Wn%t k rtdtj YnX|jdkrd|_dS)NZbuildzbdist.r z;don't know how to create built distributions on platform %sZdist)r2r4rZget_finalized_commandr1 build_baseospathjoinZensure_string_listr default_formatnameKeyErrorZDistutilsPlatformErrorr3)r7r9r r rfinalize_optionsZs$    zbdist.finalize_optionsc Cs g}xR|jD]G}y|j|j|dWqtk rVtd|YqXqWxtt|jD]}||}|j|}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ |j |qqWdS)Nrzinvalid format '%s'r&r)r r r r?ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r6r5Z keep_tempZ run_command)r7Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"      z bdist.run)rrr)rNr)rrr)rNr)rrr)rrr )r!)r!r%)r&r')r&r()r&r))r&r*)r&r+)r,r-)r&r.)r/r0)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsrCr=rr r8r@rEr r r rrsJ       r) __doc__r:Zdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKq|]552command/__pycache__/bdist_rpm.cpython-35.opt-2.pycnu[ ]T@sddlZddlZddlZddlmZddlmZddlmZddl m Z ddl Tddl m Z ddlmZGd d d eZdS) N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc+@seZdZdZdfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddg)Zd4d9d=d2dUgZd7d4d;d9d?d=iZdXdYZdZd[Zd\d]Z d^d_Z d`daZ dbdcZ dddeZ dS) bdist_rpmzcreate an RPM distribution bdist-base=N/base directory for creating built distributions rpm-base=dbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2) dist-dir=dDdirectory to put final RPM files in (and .spec files if --spec-only)python=Mpath to Python interpreter to hard-code in the .spec file (default: "python") fix-pythonLhard-code the exact path to the current Python interpreter in the .spec file spec-onlyonly regenerate spec file source-onlyonly generate source RPM binary-onlyonly generate binary RPM use-bzip27use bzip2 instead of gzip to create source distributiondistribution-name=gname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)group=9package classification [default: "Development/Libraries"]release=RPM release numberserial=RPM serial numbervendor=aRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script] packager=ARPM packager (eg. "Jane Doe ")[default: vendor] doc-files=6list of documentation files (space or comma-separated) changelog= RPM changelogicon=name of icon file provides=%capabilities provided by this package requires=%capabilities required by this package conflicts=-capabilities which conflict with this packagebuild-requires=+capabilities required to build this package obsoletes=*capabilities made obsolete by this package no-autoreq+do not automatically calculate dependencies keep-tempk"don't clean up RPM build directory no-keep-temp&clean up RPM build directory [default]use-rpm-opt-flags8compile with RPM_OPT_FLAGS when building from source RPMno-rpm-opt-flags&do not pass any RPM CFLAGS to compiler rpm3-mode"RPM 3 compatibility mode (default) rpm2-modeRPM 2 compatibility mode prep-script=3Specify a script for the PREP phase of RPM building build-script=4Specify a script for the BUILD phase of RPM building pre-install=:Specify a script for the pre-INSTALL phase of RPM buildinginstall-script=6Specify a script for the INSTALL phase of RPM building post-install=;Specify a script for the post-INSTALL phase of RPM buildingpre-uninstall=rnroREADME README.txtrk1rlrirprqrrrsrtrurvrwrxryrzr|r}r~rrr)rr)Z ensure_stringrZ get_contactZget_contact_emailZensure_string_list isinstancerolistrrexistsappend_format_changelogrpZensure_filename)rZreadmerrrrs>    !                  zbdist_rpm.finalize_package_datac CstrPtdtd|jtd|jtd|jtd|j|jrr|j}|j|nNi}x;d(D]3}t j j |j |||<|j||qW|d}t j j |d |j j}|jt||jfd ||jrdS|j jdd}|jd }|jrOdg|_n dg|_|jd ||j _|jd}|d}|j|||jrt j j|jr|j|j|ntd|jtjddg} t j jdst j jdr(dg} |jrA| jdn&|j rZ| jdn | jd| j!dd|j"g|j#r| j!ddt j j$|j g|j%s| jd|j&r| jd| j|d} | d } d!| d"} d#| | |f} t j'| }zg}d}xP|j(}|sNP|j)j*}|j|d$|dkr;|d}q;W|j+}|rt,d%t-| Wd|j+X|j.| |j/s|j j0rt1}nd&}|j sbt j j |d |}|j2||jt j j |j|}|j jjd'||f|jsx|D]}t j j |d |}t j j|rr|j2||jt j j |jt j j3|}|j jjd'||fqrWdS))Nzbefore _get_package_data():zvendor =z packager =z doc_files =z changelog =SOURCESSPECSBUILDRPMSSRPMSz%s.specz writing '%s'sdistbztargztarrzicon file '%s' does not existz building RPMsrz/usr/bin/rpmbuildz /bin/rpmbuildZrpmbuildz-bsz-bbz-baz--definez __python %sz _topdir %sz--cleanz--quietz%{name}-%{version}-%{release}z.src.rpmz%{arch}/z .%{arch}.rpmz%rpm -q --qf '%s %s\n' --specfile '%s'r_zFailed to execute: %sanyr )rrrrr)4rprintrmrnrorprerbZmkpathrrrrarget_nameZexecuter_make_spec_fileZ dist_filesZreinitialize_commandrhformatsZ run_commandZget_archive_filesZ copy_filerqrZDistutilsFileErrorrinforgrrfextendrcrabspathrr\popenreadlinestripsplitcloseZDistutilsExecErrorreprspawndry_runrrZ move_filebasename)rZspec_dirZrpm_dirrZ spec_pathZsaved_dist_filesrsourceZ source_dirZrpm_cmdZ nvr_stringZsrc_rpmZ non_src_rpmZq_cmdoutZ binary_rpmsZ source_rpmlinelstatusZ pyversionZsrpmfilenamerrrrruns                                          z bdist_rpm.runcCs"tjj|jtjj|S)N)rrrrbr)rrrrr _dist_pathszbdist_rpm._dist_pathc CsKd|jjd|jjjddd|jjd|jjdddd|jjg}tjd }d jd d |j D}d }d}|j||}||kr|j d|j d|d |j dddg|j r|j dn |j d|j d|jj d|jddg|jsy|jjs|j dn|j d|jxxdJD]p}t||j}t|tr|j d"|d#j|fq|dk r|j d"||fqW|jjd$kr7|j d%|jj|jrT|j d&|j|jrz|j d'd#j|j|jr|j d(tjj|j|jr|j d)|j dd*|jjgd+|jtjjtj d,f}d-|} |j!rd.| } d/|} dKd3d4| fd5d6| fdLdMdNdOdPdQg } x| D]|\} } }t|| }|s|r_|j ddD| g|r|j t"|dEj#j$d q_|j |q_W|j ddFdGg|j%r|j dHd#j|j%|j&rG|j ddIg|j |j&|S)RNz %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} cSs g|]}d|jqS)z %s \)r).0rrrr s z-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %sVendorPackagerProvidesRequires Conflicts Obsoletesz%s: %s ZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESr{rr&%setup -n %{name}-%{unmangled_version}Zbuildrsinstallrtcleanrurm -rf $RPM_BUILD_ROOT verifyscriptrvprerwpostrxpreunrypostunrz%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)rrrrrr)r{rrr)rrur)rrvN)rrwN)rrxN)rryN)rrzN)'rrZ get_versionreplacerkZget_description subprocess getoutputr splitlinesrrrhZ get_licenserjrrgetattrlowerrrZget_urlrirrqrrrrZget_long_descriptionrcrargvropenreadrrorp)rZ spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultrrrrs          #        &       (    zbdist_rpm._make_spec_filecCs|s |Sg}x|jjdD]i}|j}|ddkr^|jd|gq&|ddkr~|j|q&|jd|q&W|ds|d=|S)Nrrrrrz )rrrr)rrpZ new_changelogrrrrr3s  zbdist_rpm._format_changelog)r Nr )r Nr )rrr)rNr)rNr)rNr)rNr)rNr)rNr)rNr)rNr )r!Nr")r#Nr$)r%Nr&)r'Nr()r)Nr*)r+Nr,)r-Nr.)r/Nr0)r1Nr2)r3Nr4)r5Nr6)r7Nr8)r9Nr:)r;r<r=)r>Nr?)r@NrA)rBNrC)rDNrE)rFNrG)rHNrI)rJNrK)rLNrM)rNNrO)rPNrQ)rRNrS)rTNrU)rVNrW)rXNrY)rZNr[)r\r]r^)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optrrrrrrrrrrrr s      -  -  r )rrrZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs$ PKq|]  (command/__pycache__/clean.cpython-35.pycnu[ Yf @s\dZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s[eZdZdZddddddgZdgZddZddZddZdS)cleanz-clean up temporary files from 'build' command build-base=b2base build directory (default: 'build.build-base') build-lib=N}tjj|rt|d|jqctj d|qcW|jsy'tj |jtjd|jWntk rYnXdS)Ndry_runz%'%s' does not exist -- can't clean itz removing '%s')ospathexistsrrrrdebugrrrrwarnrmdirrinfoOSError)rZ directoryrrrrun1s$        z clean.run)rrr)r Nr )r r r )rNr)rNr)rrr) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrr(rrrrr s"     r) __doc__r Zdistutils.corerZdistutils.dir_utilrZ distutilsrrrrrrs  PKq|]_g++/command/__pycache__/config.cpython-35.opt-1.pycnu[ Yf$3@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddd d iZ Gd d d eZ dd dZdS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logcz.czc++z.cxxc @sieZdZdZd>d?d@dAdBdCdDdEdFg ZddZddZddZd d!Zd"d#Z d$d%Z d&d'Z d(d)Z d*d+Z dddd,d-d.Zdddd,d/d0Zddd,d1d2Zddddd,d3d4Zddddd,d5d6Zddddd7d7d8d9Zdddgd:d;Zddd,d<d=ZdS)Gconfigzprepare to build compiler=Nspecify the compiler typecc=specify the compiler executable include-dirs=I.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link with library-dirs=L.directories to search for external C librariesnoisy1show every action (compile, link, run, ...) taken dump-source=dump generated source files before attempting to compile themcCsLd|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_files)selfr'=/opt/alt/python35/lib64/python3.5/distutils/command/config.pyinitialize_options3s       zconfig.initialize_optionscCs|jdkr'|jjpg|_n*t|jtrQ|jjtj|_|jdkrlg|_n!t|jtr|jg|_|jdkrg|_n*t|jtr|jjtj|_dS)N) r!Z distribution isinstancestrsplitospathsepr"r#)r&r'r'r(finalize_optionsBs  zconfig.finalize_optionscCsdS)Nr')r&r'r'r(runRsz config.runcCsddlm}m}t|j|s|d|jd|jdd|_t|j|jru|jj|j|j r|jj |j |j r|jj |j dS)z^Check that 'self.compiler' really is a CCompiler object; if not, make it one. r) CCompiler new_compilerr dry_runZforcerN) distutils.ccompilerr1r2r*r r3rr!Zset_include_dirsr"Z set_librariesr#Zset_library_dirs)r&r1r2r'r'r(_check_compilerYs    zconfig._check_compilercCsdt|}t|d}|rRx|D]}|jd|q*W|jd|j||ddkr||jd|j|S)NZ _configtestwz#include <%s>  r)LANG_EXTopenwriteclose)r&bodyheaderslangfilenamefileheaderr'r'r(_gen_temp_sourcefileks     zconfig._gen_temp_sourcefilecCsT|j|||}d}|jj||g|jj||d|||fS)Nz _configtest.ir!)rCr%extendr Z preprocess)r&r=r>r!r?srcoutr'r'r( _preprocessxs zconfig._preprocesscCs|j|||}|jr/t|d||jj|g\}|jj||g|jj|gd|||fS)Nzcompiling '%s':r!)rCr$ dump_filer Zobject_filenamesr%rDcompile)r&r=r>r!r?rEobjr'r'r(_compiles zconfig._compilec Cs|j||||\}}tjjtjj|d} |jj|g| d|d|d||jjdk r| |jj} |jj | ||| fS)Nrr"r#Z target_lang) rKr-pathsplitextbasenamer Zlink_executableZ exe_extensionr%append) r&r=r>r!r"r#r?rErJprogr'r'r(_links"z config._linkc Gsl|s|j}g|_tjddj|x4|D],}ytj|Wq8tk rcYq8Xq8WdS)Nz removing: %s )r%rinfojoinr-removeOSError)r& filenamesr@r'r'r(_cleans    z config._cleanrc Cscddlm}|jd}y|j||||Wn|k rTd}YnX|j|S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r) CompileErrorTF)r4rYr5rGrX)r&r=r>r!r?rYokr'r'r(try_cpps    zconfig.try_cppc Cs|j|j||||\}}t|trFtj|}t|}d} x3|j} | dkrtP|j| r[d} Pq[W|j |j | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r5rGr*r+rerIr:readlinesearchr<rX) r&patternr=r>r!r?rErFrAmatchliner'r'r( search_cpps      zconfig.search_cppc Cs|ddlm}|jy |j||||d}Wn|k rTd}YnXtj|rgdpjd|j|S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. r)rYTFzsuccess!zfailure.)r4rYr5rKrrSrX)r&r=r>r!r?rYrZr'r'r( try_compiles     zconfig.try_compilec Csddlm}m}|jy&|j||||||d} Wn||fk rfd} YnXtj| rydp|d|j| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. r)rY LinkErrorTFzsuccess!zfailure.)r4rYrer5rQrrSrX) r&r=r>r!r"r#r?rYrerZr'r'r(try_links     zconfig.try_linkc Csddlm}m}|jyA|j||||||\} } } |j| gd} Wn!||tfk rd} YnXtj| rdpd|j | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. r)rYreTFzsuccess!zfailure.) r4rYrer5rQZspawnrrrSrX) r&r=r>r!r"r#r?rYrerErJZexerZr'r'r(try_runs    zconfig.try_runrc Cs|jg}|r'|jd||jd|rN|jd|n|jd||jddj|d}|j|||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r7)r5rOrTrf) r&funcr>r!r"r#ZdeclZcallr=r'r'r( check_funcs   zconfig.check_funccCs*|j|jd|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r5rf)r&Zlibraryr#r>r!Zother_librariesr'r'r( check_lib6s zconfig.check_libcCs|jddd|gd|S)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. r=z /* No body */r>r!)r[)r&rBr!r#r?r'r'r( check_headerDszconfig.check_header)rNr )r Nr )r r r)rrr)rrr)rrr)rrr)rNr)rNr)__name__ __module__ __qualname__Z descriptionZ user_optionsr)r/r0r5rCrGrKrQrXr[rcrdrfrgrjrkrlr'r'r'r(rsT             rc Csb|dkr tjd|n tj|t|}ztj|jWd|jXdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrSr:readr<)r@headrAr'r'r(rHNs   rH)__doc__sysr-r]Zdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr9rrHr'r'r'r( s$:PKq|] __(command/__pycache__/check.cpython-35.pycnu[ Yfx @sdZddlmZddlmZypddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@s4eZdZddddddZddZdS) SilentReporterNrasciireplacec Cs/g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerrr>)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrA source_pathparserZsettingsZreporterrDerrrr?ys*           *zcheck._check_rst_dataN)r"r#r$)r%r&r')r(r)r*)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r?rrrrr!$s        r!N)rJZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs   PKq|]g91command/__pycache__/__init__.cpython-35.opt-2.pycnu[ ]@sCdddddddddd d d d d dddddgZdS)ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleaninstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstcheckZuploadN)__all__rr-/opt/alt/python35/lib64/python3.5/__init__.pys$PKq|]<"JG6G60command/__pycache__/install.cpython-35.opt-2.pycnu[ $Yfg @sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZmZdd lmZdd l mZdd lmZdd lmZd ZddddddddddiZdddddddddddidddddddddddid eiZerdd!dd!dd"dd#dd$ied%d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZdNdOZdPdQZdRdSZdTdUZdVdWZdXefdYefdZefd[efd\d]d^fgZdS)oinstallz'install everything from build directoryprefix=Ninstallation prefix exec-prefix=.(Unix only) prefix for platform-specific fileshome=+(Unix only) home directory to install under install-base=;base installation directory (instead of --prefix or --home)zinstall-platbase=z8base installation directory for platform-specific files z$(instead of --exec-prefix or --home)root==z %s: %sr) rZdistutils.fancy_getoptrrdebug user_options negative_opt translategetattr)rUmsgroptZopt_namevalrVrVrWrjss  zinstall.dump_dirscCs|jdk s|jdk r|jdkrK|jdkrK|jdksx|jdksx|jdksx|jdkrtddS|j r|j dkrt d|j |_|_|j dn|j dk r|j |_|_|j dn|jdkr^|jdk r+tdtjjtj|_tjjtj|_n|jdkry|j|_|j|_|j|_|j ddS)NzPinstall-base or install-platbase supplied, but installation scheme is incompletez$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)rBrCrHrErFrGrIrJr r=rKr select_schemerAr?r@rgr|normpathrm)rUrVrVrWrks<       zinstall.finalize_unixc Cs|jrN|jdkr$td|j|_|_|jtjdn|jdk r|j|_|_|jdnv|j dkrtj j t j |_ |j |_|_y|jtjWn%t k rtdtjYnXdS)Nz$User base directory is not specified_userrz)I don't know how to install stuff on '%s')r=rKrrBrCrrgrhrAr?r|rrmKeyError)rUrVrVrWrls"   zinstall.finalize_othercCsRt|}xAtD]9}d|}t||dkrt||||qWdS)Ninstall_)INSTALL_SCHEMES SCHEME_KEYSrsetattr)rUrhschemekeyZattrnamerVrVrWrs    zinstall.select_schemecCsx{|D]s}t||}|dk rtjdksFtjdkrXtjj|}t||j}t|||qWdS)NrYr)rrgrhr| expanduserr rsr)rUZattrsattrrrVrVrW _expand_attrss  zinstall._expand_attrscCs|jdddgdS)NrBrCrD)r)rUrVrVrWruszinstall.expand_basedirscCs#|jddddddgdS)NrErFrHrGrIrJ)r)rUrVrVrWrws zinstall.expand_dirscGs>x7|D]/}d|}t||tt||qWdS)Nr)rrr)rUnamesrhrrVrVrWrys  zinstall.convert_pathscCs|jdkr|jj|_|jdk rt|jtrT|jjd|_t|jdkr}|jd}}n3t|jdkr|j\}}n tdt|}n d}d}||_||_ dS)N,r>rr_zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsrZ) rNrq isinstancestrrolenr r path_filer~)rUrr~rVrVrWrzs   zinstall.handle_extra_pathc GsDx=|D]5}d|}t||t|jt||qWdS)Nr)rr rDr)rUrrhrrVrVrWrs  zinstall.change_rootscCs|js dSttjjd}x`|jjD]O\}}|j|r5tjj| r5|j d|tj |dq5WdS)N~zos.makedirs('%s', 0o700)i) r=rrgr|rrsitems startswithisdirZ debug_printmakedirs)rUrArhr|rVrVrWrx s "zinstall.create_home_pathcCs|jsO|jd|jjdj}|jrO|tkrOtdx!|jD]}|j|q\W|j r|j |j r |j }|j rt|j }x2tt|D]}|||d||szinstall.)rNr)rNr)rNr)r Nr!)r"Nr#)r$Nr%)r&Nr')r(Nr))r*Nr+)r,Nr-)r.r/r0)r1Nr2)r3r4r5)r6r7r8)r9Nr:)r;Nr<) __name__ __module__ __qualname__ descriptionrZboolean_optionsrtrrrrXrrjrkrlrrrurwryrzrrxrrrrrrrrZ sub_commandsrVrVrVrWrIs      M  (       ,          r)rrrrr)rmrgZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrtZWINDOWS_SCHEMErrrrVrVrVrWsZ      PKq|]3command/__pycache__/build_clib.cpython-35.opt-1.pycnu[ YfV@srdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rrA/opt/alt/python35/lib64/python3.5/distutils/command/build_clib.pyrsrc@seZdZdZd"d#d$d%d&gZdd gZdddefgZddZddZ ddZ ddZ ddZ ddZ d d!ZdS)' build_clibz/build C/C++ libraries used by Python extensions build-clib=b%directory to build C/C++ libraries to build-temp=t,directory to put temporary build by-productsdebugg"compile with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler typez help-compilerNzlist available compilerscCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompiler)selfrrr initialize_options4s        zbuild_clib.initialize_optionscCs|jdddd d d |jj|_|jrD|j|j|jdkrh|jjpbg|_t|jtr|jjtj |_dS) NZbuildrr rrr)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)r rrr finalize_optionsDs  zbuild_clib.finalize_optionscCs|js dSddlm}|d|jd|jd|j|_t|j|jdk rs|jj|j|j dk rx*|j D]\}}|jj ||qW|j dk rx!|j D]}|jj |qW|j |jdS)Nr) new_compilerrdry_runr)rrr)rr*rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)r r)namevalueZmacrorrr run^s    zbuild_clib.runcCst|tstdx|D]}t|t rVt|dkrVtd|\}}t|ts}tdd|kstjdkrtj|krtd|dt|ts"tdq"Wd S) a`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) r#listDistutilsSetupErrortuplelenr$r&sepdict)r rlibr, build_inforrr r"vs"   "   *zbuild_clib.check_library_listcCs>|js dSg}x$|jD]\}}|j|qW|S)N)rappend)r Z lib_nameslib_namer8rrr get_library_namess  zbuild_clib.get_library_namescCs|j|jg}xe|jD]Z\}}|jd}|dks]t|ttf rmtd||j|q W|S)Nsourceszfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)r"rgetr#r1r3r2extend)r filenamesr:r8r<rrr get_source_filess" zbuild_clib.get_source_filesc Csx|D]\}}|jd}|dksDt|ttf rTtd|t|}tjd||jd}|jd}|jj|d|j d|d|d|j }|jj ||d|j d|j qWdS)Nr<zfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenameszbuilding '%s' librarymacrosrZ output_dirr) r=r#r1r3r2rinforcompilerrZcreate_static_libr )r rr:r8r<rArZobjectsrrr r+s$"     zbuild_clib.build_libraries)r r r )rrr)rrr)rrr)rrr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsr!r(r.r"r;r@r+rrrr r s*       $ r ) __doc__r&Zdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr rrrr s   PKq|].~*7*7.command/__pycache__/sdist.cpython-35.opt-1.pycnu[ Yf-G@sdZddlZddlZddlZddlTddlmZddlmZddlm Z ddl m Z m Z m Z mZddlmZddlTdd lmZdd l mZdd lmZd d ZGddde ZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)*)glob)warn)Command)dir_utildep_util file_util archive_util)TextFile)FileList)log) convert_pathcCsddlm}ddlm}g}x6|jD](}|jd|d||dfq3W|j||jddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSzformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatrZd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZd S)Zsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_check)selfrrrchecking_metadata&szsdist.checking_metadata template=t5name of manifest template file [default: MANIFEST.in] manifest=m)name of manifest file [default: MANIFEST] use-defaultsNRinclude the default file set in the manifest [default; disable with --no-defaults] no-defaults"don't include the default file setprunespecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune]no-prune$don't automatically exclude anything manifest-onlyoEjust regenerate the manifest and then stop (implies --force-manifest)force-manifestfkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.formats=6formats for source distribution (comma-separated list)z keep-tempkz1keep the distribution tree around after creating zarchive file(s) dist-dir=dFdirectory to put the source distribution archive(s) in [default: dist]metadata-check[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default]owner=u@Owner name used when creating a tar file [default: current user]group=gAGroup name used when creating a tar file [default: current group]z help-formatsz#list available distribution formatsposixZgztarntzipcheckcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) templatemanifest use_defaultsr' manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_optionsds            zsdist.initialize_optionsc Cs|jdkrd|_|jdkr0d|_|jd|jdkry|jtjg|_Wn%tk rtdtjYnXt j |j}|rt d||j dkrd|_ dS)NZMANIFESTz MANIFEST.inrz)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optrNZ sub_commandsrMrRrVrYrTr_r`rarbr\r]rrUrrrrrr"sn           ( P     * r)__doc__rOstringrtypesrwarningsrZdistutils.corerZ distutilsrrrr Zdistutils.text_filer Zdistutils.errorsZdistutils.filelistr r Zdistutils.utilr rrrrrrs    "  PKq|]"00/command/__pycache__/upload.cpython-35.opt-1.pycnu[ Yf@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sieZdZdZejddgZejdgZdd Zd d Zd d Z ddZ dS)uploadzupload binary package to PyPIsignssign files to upload using gpg identity=iGPG identity used to sign filescCs>tj|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr=/opt/alt/python35/lib64/python3.5/distutils/command/upload.pyr s      zupload.initialize_optionscCstj||jr,|j r,td|j}|ikrx|d|_|d|_|d|_|d|_ |j r|j jr|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rconfigrrrr(s        zupload.finalize_optionscCsU|jjsd}t|x0|jjD]"\}}}|j|||q+WdS)Nz'No dist file created in earlier command)rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s   z upload.runc$4Cst|j\}}}}}} |s3|s3| rFtd|j|dIkrbtd||jrddd|g} |jrd|jg| d d |d?t/t5|d@|i}t6|jdA|dB|}y%t7|}|j8} |j9}!Wnwt:k r}"z|"j;} |"j9}!WYdd}"~"XnAt<k r}"z!|j2t/|"t3j=WYdd}"~"XnX| dCkr|j2dD| |!ft3j4|j>r|j?|}#dEj@dFdG|#dFdGf}|j2|t3j4n/dH| |!f}|j2|t3j=tA|dS)KNzIncompatible url %shttphttpszunsupported schema Zgpgz --detach-signz-az --local-userdry_runrbz:actionZ file_uploadZprotocol_version1nameversioncontentZfiletyper$Z md5_digestZmetadata_versionz1.0ZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %sZtersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s s s zSubmitting %s to %sz Content-typez multipart/form-data; boundary=%szContent-lengthZ AuthorizationdataheaderszServer response (%s): %s -KzUpload failed (%s): %s)r'r()BrrAssertionErrorr rr r*openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZmd5Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesr3distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvalueZannouncer INFOlenrrZgetcoder"rcodeOSErrorZERRORrZ_read_pypi_responsejoinr)$rr#r$r%ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr/metar8r5rGr.idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitler"r9ZrequestresultZstatusreasonetextrrrr!As!                                                zupload.upload_fileN)r rr)rrr) __name__ __module__ __qualname__r1r Z user_optionsZboolean_optionsrrr&r!rrrrr s     r )__doc__rCrJr3rFbase64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs    PKq|][?>>2command/__pycache__/build_ext.cpython-35.opt-2.pycnu[ ]{@sddlZddlZddlZddlZddlmZddlTddlmZm Z ddlm Z ddl m Z ddl mZddlmZdd lmZdd lmZejd Zd d ZGdddeZdS)N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r./opt/alt/python35/lib64/python3.5/build_ext.pyr sr c@seZdZdZdejZd`dad d d efd d ddfdddefdbdcdddddefdedfdgdhdidjdkdldmdngZd d%d(d1d8gZ d:d2d;e fgZ d<d=Z d>d?Z d@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZejdNdOZdPdQZdRdSZdTdUZdVdWZdXdYZdZd[Zd\d]Zd^d_Zd2S)o build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s') build-lib=b(directory for compiled extension modules build-temp=t1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s)inplaceiz=ignore build-lib and put compiled extensions into the source z,directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header filesdefine=DC preprocessor macros to defineundef=U!C preprocessor macros to undefine libraries=l!external C libraries to link withz library-dirs=Lz.directories to search for external C librariesrpath=R7directories to search for shared C libraries at runtime link-objects=O2extra explicit link objects to include in the linkdebugg'compile/link with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsswig-cppN)make SWIG create C++ files (default is C) swig-opts=!list of SWIG command line optionsswig=path to the SWIG executableuser#add user include, library and rpathz help-compilerzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsr+r.compilerswigswig_cpp swig_optsr=parallel)selfrrrinitialize_optionsjs*                    zbuild_ext.initialize_optionsc Csrddlm}|jdd'd(d)d*d+d,d-|jdkrP|jj|_|jj|_|j}|jd d }|j dkr|jj pg|_ t |j t r|j j t j|_ tjtjkr|j jt jjtjd |j j|||kr+|j j||jd|jd|jdkr]g|_|jdkrxg|_n*t |jt r|jj t j|_|jdkrg|_n*t |jt r|jj t j|_t jdkrC|jjt jjtjdtjtjkrL|jjt jjtjd|jrst jj|jd|_nt jj|jd|_|j jt jjtttdd}|r|jj||j dkrd}n|j dd}t jjtjd}|r3t jj||}|jj|tj!dddksutj!dddkrtj"j#t jjtjdr|jjt jjtjddt$dn|jjd|j%d r|j&s|jj|j%d!n|jjd|j'rP|j'j d"}d#d$|D|_'|j(rn|j(j d"|_(|j)dkrg|_)n|j)j d%|_)|j*r%t jjt+d }t jjt+d} t jj,|r|j j|t jj,| r%|jj| |jj| t |j-t rnyt.|j-|_-Wnt/k rmt0d&YnXdS).Nr) sysconfigZbuildr@rBrKr+r.rOrAZ plat_specificincluderGrJntZlibsZDebugZRelease_homewin32ZPCbuildcygwinatheosbinlibpythonconfig.Py_ENABLE_SHAREDLIBDIR,cSsg|]}|dfqS)1r).0symbolrrr s z.build_ext.finalize_options.. zparallel should be an integer)r@r@)rBrB)rKrK)r+r+)r.r.)rOrO)rArA)1 distutilsrRZset_undefined_optionsrC distributionZ ext_packageZ ext_modulesr?Zget_python_incrD isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinZensure_string_listrGrHrInameprefixr+rBdirnamergetattrrAplatform executable startswithrget_config_varZ python_buildrErFrNr=r isdirrOint ValueErrorZDistutilsOptionError) rPrRZ py_includeZplat_py_include _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss  "      ""  2$        zbuild_ext.finalize_optionsc Csddlm}|jsdS|jjrj|jd}|jj|jpSg|j j |j |d|j d|j d|jd|j|_ t|j tjdkr|jtkr|j j|j|jdk r|j j|j|jdk r9x*|jD]\}}|j j||qW|jdk rlx!|jD]}|j j|qRW|jdk r|j j|j|j dk r|j j|j |jdk r|j j|j|j dk r|j j!|j |j"dS) Nr) new_compiler build_clibrKverbosedry_runr.rU)#r rr?rjZhas_c_librariesget_finalized_commandrGextendZget_library_namesrHrsrrKrrr.rrnrvrAr Z initializerDZset_include_dirsrEZ define_macrorFZundefine_macroZ set_librariesZset_library_dirsrIZset_runtime_library_dirsrJZset_link_objectsbuild_extensions)rPrrrvvaluemacrorrrruns>    !z build_ext.runc Cst|tstdxt|D]\}}t|trFq(t|t sht|dkrttd|\}}tjd|t|t ot j |stdt|t stdt||d}x9dD]1}|j |}|dk rt|||qW|j d|_d|krPtjd|j d}|rg|_g|_x|D]~} t| tot| dkstdt| dkr|jj| dq~t| dkr~|jj| q~W||||j|jg}x!|jD]}|j|jq W|S)N)rr?rr)rP filenamesrrrrget_source_filess zbuild_ext.get_source_filescCsG|j|jg}x*|jD]}|j|j|jq W|S)N)rr?rsget_ext_fullpathrv)rPZoutputsrrrr get_outputss zbuild_ext.get_outputscCs4|j|j|jr&|jn |jdS)N)rr?rO_build_extensions_parallel_build_extensions_serial)rPrrrrs  zbuild_ext.build_extensionscsj}jdkr$tj}yddlm}Wntk rRd}YnX|dkrmjdS|d|jfddjD}xAtj|D]-\}}j ||j WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor max_workerscs%g|]}jj|qSr)submitbuild_extension)rer)executorrPrrrgs z8build_ext._build_extensions_parallel..) rOrn cpu_countconcurrent.futuresr ImportErrorrr?zip_filter_build_errorsresult)rPworkersrfuturesrZfutr)rrPrrs        z$build_ext._build_extensions_parallelc Cs<x5|jD]*}|j||j|WdQRXq WdS)N)r?rr)rPrrrrrsz"build_ext._build_extensions_serialccsdy dVWnTtttfk r_}z+|js3|jd|j|fWYdd}~XnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrrv)rPrerrrrs   zbuild_ext._filter_build_errorsc Cs|j}|dks+t|ttf r>td|jt|}|j|j}||j}|jpt ||dst j d|jdSt j d|j|j ||}|jpg}|jdd}x!|jD]}|j|fqW|jj|d|jd|d|jd|j d |d |j}|dd|_|jrt|j|j|jpg}|jp|jj|} |jj||d |j|d |jd |jd |d|j |d|j d|jd| dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extensionZ output_dirrrDr+Zextra_postargsdependsrGrHrexport_symbolsrBZ target_lang)!rrkrrrrvrrr.rr r+info swig_sourcesrrrrsrKcompilerBrDZ_built_objectsrrrlanguageZdetect_languageZlink_shared_object get_librariesrHrget_export_symbols) rPrrext_pathr extra_argsrrFZobjectsrrrrrsN "              zbuild_ext.build_extensioncCsg}g}i}|jr(tjd|jsOd|jksOd|jkrXd}nd}xr|D]j}tjj|\}} | dkr|j|d||j||d ||            zbuild_ext.swig_sourcescCstjdkrdStjdkrixWd D]5}tjjd|d}tjj|r)|Sq)WdSntd tjdS) NposixrLrU1.31.21.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s')rrr)rnrvrtruisfileZDistutilsPlatformError)rPZversfnrrrrfs zbuild_ext.find_swigcCs|j|}|jd}|j|d}|jsstjj|dd|g}tjj|j|Sdj|dd}|jd}tjj |j |}tjj||S)Nr`rSrbuild_pyrrr) get_ext_fullnamermget_ext_filenamerrnrtrur@rabspathZget_package_dir)rPrfullnameZmodpathfilenamerCrZ package_dirrrrr~s #zbuild_ext.get_ext_fullpathcCs&|jdkr|S|jd|SdS)Nr`)rC)rPrrrrrszbuild_ext.get_ext_fullnamecCs?ddlm}|jd}|d}tjj||S)Nr)r}r` EXT_SUFFIX)distutils.sysconfigr}rmrnrtru)rPrr}rZ ext_suffixrrrrs zbuild_ext.get_ext_filenamecCs@d|jjdd}||jkr9|jj||jS)NZPyInit_r`rSr)rvrmrrs)rPrZ initfunc_namerrrrszbuild_ext.get_export_symbolscCs3tjdkrddlm}t|j|szd}|jrJ|d}|tjd?tjd?d@f}|j|gS|jSntjdd d krd }|tjd?tjd?d@f}|j|gStjdd d krdd l m }d }|tjd?tjd?d@f}g}xS|j dj D]<}|j dro|j|ddq@|j|q@W|j|dg|Stjdkr|jStjdddkr|jSdd l m }|j dr(djtjd?tjd?d@|j d}|j|gS|jSdS)NrWr) MSVCCompilerz python%d%dZ_drYrZz python%d.%dr[)rRSHLIBSz-lrmdarwinaixraz python{}.{}{}ABIFLAGS)rprzZdistutils._msvccompilerrrkrKr+ hexversionrGrirRr}rmr|rsformat)rPrrtemplateZ pythonlibrRextrar]rrrrsJ    zbuild_ext.get_libraries)rrr)rrr)rrr)rrr )r!r"r#)r%r&r')r(r)r*)r+r,r-)r.r/r0)r1r2r3)r4r5r6)r7Nr8)r9Nr:)r;Nr<)r=Nr>) __name__ __module__ __qualname__ descriptionrnroZsep_byr Z user_optionsZboolean_optionsr Z help_optionsrQrrrrrrrr contextlibcontextmanagerrrrrrrrrrrrrrr!s~        @ N     K 6   r)rrnrerpZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rir Zsiter rrr rrrrrs       PKq|]EY."."6command/__pycache__/bdist_wininst.cpython-35.opt-2.pycnu[ ];@sddlZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gdd d eZdS) N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc@seZdZdZd4dddefdd d d fd dd dfd5d6d7d8d9d:d;d<d=g ZddddgZd&d'Zd(d)Zd*d+Z d,d-Z dd.d/Z d0d1Z d2d3Z dS)> bdist_wininstz-create an executable installer for MS Windows bdist-dir=N1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archiveztarget-version=z!require a specific python versionz on the target systemno-target-compilec/do not compile .py to .pyc on the target systemno-target-optimizeo:do not compile .py to .pyo (optimized)on the target system dist-dir=d-directory to put final built distributions inbitmap=b>bitmap to use for the installer instead of python-powered logotitle=t?title to display on the installer background instead of default skip-build2skip rebuilding everything (for testing/debugging)install-script=Tbasename of installation script to be run afterinstallation or before deinstallationpre-install-script={Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionuser-access-control=specify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACcCsyd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr32/opt/alt/python35/lib64/python3.5/bdist_wininst.pyinitialize_options:s            z bdist_wininst.initialize_optionscCsG|jdd |jdkry|jrO|jrO|jjd}|j|_|jdj}tj j |d|_|j sd|_ |j r|jj rt }|j r|j |krtd|f||_ |jdd d |jrCxC|jjD]"}|jtj j|kr Pq Wtd|jdS) Nbdistr.ZwininstzMtarget version can only be %s, or the '--skip-build' option must be specifiedr+r&z(install_script '%s' not found in scripts)r.r.)r+r+)r&r&)Zset_undefined_optionsr%r.r& distributionZget_command_objget_finalized_command bdist_baseospathjoinr*has_ext_modulesrZDistutilsOptionErrorr/scriptsbasename)r2r6r:Z short_versionscriptr3r3r4finalize_optionsJs4        zbdist_wininst.finalize_optionsc Cstjdkr9|jjs-|jjr9td|jsO|jd|jddd}|j |_ |j|_d|_ |j |_ |jd}d|_ d|_|jjr$|j}|stjdd }d |j |f}|jd}tjj|jd ||_xDdD]<}|j}|dkrS|d}t|d||q+Wtjd|j |jtjjdtjj|j d|jtjd=ddlm}|} |jj } |j!| dd|j } |j"| | |j#|jjr5t$} nd} |jj%j&d| |j'| ftj(d| tj)| |j*st+|j d|j,dS)Nwin32z^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstallZreinit_subcommandsr install_libz.%s-%slibpurelibplatlibheadersr?dataz/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempziproot_diranyr zremoving temporary file '%s'dry_run)rJrKrLr?rM)-sysplatformr8r>Zhas_c_librariesZDistutilsPlatformErrorr.Z run_commandZreinitialize_commandr%rootZwarn_dirr&compileoptimizer*versionr9r;r<r=Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertruntempfilerN get_fullname make_archive create_exer,rZ dist_filesappendget_installer_filenamedebugremover'rrR) r2rErGr*Zplat_specifierrDkeyvaluerNZarchive_basenamefullnamearcnameZ pyversionr3r3r4r]psd                %       zbdist_wininst.runc Csg}|jj}|jd|jp+dd}dd}x{dddd d d d d gD][}t||d}|r]|d|j||f}|jd|||fq]W|jd|jr|jd|j|jd|||jd|j |jd|j |j rD|jd|j |j ra|jd|j |j pv|jj }|jd||ddl }ddl} d|j|j | jf} |jd| dj|S)Nz [metadata]r7 cSs|jddS)Nrjz\n)replace)sr3r3r4escapesz)bdist_wininst.get_inidata..escapeZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlrXz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r8metadatarbZlong_descriptiongetattr capitalizer/r(r)r*r1r-r_time distutilsctime __version__r=) r2linesrpr[rmrorMr-rsrtZ build_infor3r3r4 get_inidatas<   !      zbdist_wininst.get_inidatac Csddl}|j|j|j}|j|}|jd||rrt|dj}t|}nd}t|d} | j |j |r| j |t |t r|j d}|d}|jr&t|jddd } | jj d } WdQRX|| d }n |d}| j ||jd d t||} | j | | j t|djdS) Nrz creating %srbwbmbcssrencodingzlatin-1s zs PKq|]~U##1command/__pycache__/register.cpython-35.opt-1.pycnu[ Yf-@sdZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl Tddl mZGddde ZdS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejdd gZejdddgZdd d fgZd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdddZdS)!registerz7register the distribution with the Python package indexlist-classifiersN list the valid Trove classifiersstrictBWill stop the registering if the meta-data are not fully compliantverifycheckcCsdS)NT)selfr r ?/opt/alt/python35/lib64/python3.5/distutils/command/register.pyszregister.cCs#tj|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr )rr r rrs  zregister.initialize_optionscCs<tj|dd|jfddi}||jjds$  PKq|]-command/__pycache__/build_clib.cpython-35.pycnu[ YfV@srdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rrA/opt/alt/python35/lib64/python3.5/distutils/command/build_clib.pyrsrc@seZdZdZd"d#d$d%d&gZdd gZdddefgZddZddZ ddZ ddZ ddZ ddZ d d!ZdS)' build_clibz/build C/C++ libraries used by Python extensions build-clib=b%directory to build C/C++ libraries to build-temp=t,directory to put temporary build by-productsdebugg"compile with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler typez help-compilerNzlist available compilerscCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompiler)selfrrr initialize_options4s        zbuild_clib.initialize_optionscCs|jdddd d d |jj|_|jrD|j|j|jdkrh|jjpbg|_t|jtr|jjtj |_dS) NZbuildrr rrr)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)r rrr finalize_optionsDs  zbuild_clib.finalize_optionscCs|js dSddlm}|d|jd|jd|j|_t|j|jdk rs|jj|j|j dk rx*|j D]\}}|jj ||qW|j dk rx!|j D]}|jj |qW|j |jdS)Nr) new_compilerrdry_runr)rrr)rr*rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)r r)namevalueZmacrorrr run^s    zbuild_clib.runcCst|tstdx|D]}t|t rVt|dkrVtd|\}}t|ts}tdd|kstjdkrtj|krtd|dt|ts"tdq"Wd S) a`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) r#listDistutilsSetupErrortuplelenr$r&sepdict)r rlibr, build_inforrr r"vs"   "   *zbuild_clib.check_library_listcCs>|js dSg}x$|jD]\}}|j|qW|S)N)rappend)r Z lib_nameslib_namer8rrr get_library_namess  zbuild_clib.get_library_namescCs|j|jg}xe|jD]Z\}}|jd}|dks]t|ttf rmtd||j|q W|S)Nsourceszfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)r"rgetr#r1r3r2extend)r filenamesr:r8r<rrr get_source_filess" zbuild_clib.get_source_filesc Csx|D]\}}|jd}|dksDt|ttf rTtd|t|}tjd||jd}|jd}|jj|d|j d|d|d|j }|jj ||d|j d|j qWdS)Nr<zfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenameszbuilding '%s' librarymacrosrZ output_dirr) r=r#r1r3r2rinforcompilerrZcreate_static_libr )r rr:r8r<rArZobjectsrrr r+s$"     zbuild_clib.build_libraries)r r r )rrr)rrr)rrr)rrr)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsr!r(r.r"r;r@r+rrrr r s*       $ r ) __doc__r&Zdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr rrrr s   PKq|]d?d@dAg ZddgZd$dd%efgZd&d'Z d(d)Z d*d+Z d,d-Z d.d/Z d0d1Zd2d3Zd4e fd5e fd6efd7efgZdS)Bbuildz"build everything needed to install build-base=b base directory for build librarybuild-purelib=N2build directory for platform-neutral distributionsbuild-platlib=3build directory for platform-specific distributionsz build-lib=z9build directory for all distribution (defaults to either zbuild-purelib or build-platlibbuild-scripts=build directory for scripts build-temp=ttemporary build directoryz plat-name=pz6platform name to build for, if supported (default: %s) compiler=cspecify the compiler type parallel=jnumber of parallel build jobsdebugg;compile extensions and libraries with debugging informationforcef2forcibly build everything (ignore file timestamps) executable=e5specify final destination interpreter path (build.py)z help-compilerzlist available compilerscCspd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ dS)Nrr) build_base build_purelib build_platlib build_lib build_temp build_scriptsZcompiler plat_namerr executableparallel)selfrrrinitialize_options8s           zbuild.initialize_optionsc Cs|jdkrt|_ntjdkr9tdd|jtjddf}ttdrr|d7}|jdkrtj j |j d|_|j dkrtj j |j d||_ |j dkr|jjr|j |_ n |j|_ |jdkr.tj j |j d ||_|jdkritj j |j d tjdd|_|jdkrtj jtj|_t|jtryt|j|_Wntk rtd YnXdS) NntzW--plat-name only supported on Windows (try using './configure --help' on your platform)z.%s-%srgettotalrefcountz-pydebuglibZtempzscripts-zparallel should be an integer)r+rosnamersysversionhasattrr&pathjoinr%r'r( distributionZ ext_modulesr)r*r,normpath isinstancer-strint ValueError)r.Zplat_specifierrrrfinalize_optionsHs<      zbuild.finalize_optionscCs(x!|jD]}|j|q WdS)N)Zget_sub_commandsZ run_command)r.Zcmd_namerrrrunsz build.runcCs |jjS)N)r;has_pure_modules)r.rrrrCszbuild.has_pure_modulescCs |jjS)N)r;has_c_libraries)r.rrrrDszbuild.has_c_librariescCs |jjS)N)r;has_ext_modules)r.rrrrEszbuild.has_ext_modulescCs |jjS)N)r; has_scripts)r.rrrrFszbuild.has_scriptsZbuild_pyZ build_clibZ build_extr*)r r r )r Nr )rNr)rNr)rrr)rrr)rrr)rrr)rr r!)r"r#r$)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr/rArBrCrDrErFZ sub_commandsrrrrrsR      8       r) __doc__r6r4Zdistutils.corerZdistutils.errorsrZdistutils.utilrrrrrrrs  PKq|]o,|N|N2command/__pycache__/bdist_msi.cpython-35.opt-2.pycnu[ ]@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGd ddeZdS)N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sjeZdZddZddZddddZd dd d Zd dd dZddZdS)PyDialogcOsKtj|||jd}d|d}|jdd||jddS)N$iHZ BottomLiner)r__init__hlinew)selfargskwZrulerZbmwidthr./opt/alt/python35/lib64/python3.5/bdist_msi.pyrs zPyDialog.__init__c Cs'|jddddddd|dS)NTitle i@<iz{\VerdanaBold10}%s)r )rtitlerrrr #szPyDialog.titleBackc Cs>|rd}nd}|j|d|jddd|||S)Nr"8) pushbuttonr)rr nextnameactiveflagsrrrback*s z PyDialog.backCancelc Cs>|rd}nd}|j|d|jddd|||S)Nr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5s zPyDialog.cancelNextc Cs>|rd}nd}|j|d|jddd|||S)Nr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@s z PyDialog.nextc Cs:|j|t|j|d|jdddd||S)Nr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN) __name__ __module__ __qualname__rr r-r/r)r4rrrrrs     rc@s]eZdZdZdddfdddefdd d d fd dd dfdddfdddfdddfdddfdddfdddfg ZddddgZddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1gZd2Zd3d4Z d5d6Z d7d8Z d9d:Z d;d<Z d=d>Zd?d@ZdAdBZdS)C bdist_msiz7create a Microsoft Installer (.msi) binary distributionz bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)z keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archiveztarget-version=z!require a specific python versionz on the target systemzno-target-compilecz/do not compile .py to .pyc on the target systemzno-target-optimizeoz:do not compile .py to .pyo (optimized)on the target systemz dist-dir=dz-directory to put final built distributions inz skip-buildz2skip rebuilding everything (for testing/debugging)zinstall-script=zTbasename of installation script to be run afterinstallation or before deinstallationzpre-install-script=z{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}s          zbdist_msi.initialize_optionscCs`|jdd |jdkrI|jdj}tjj|d|_t}|j rt|j j rt||_|jr|jg|_ |j r|j j r|j|krt d|fnt|j|_ |jdd d |jrt d|jrSxC|j jD]"}|jtjj|krPqWt d|jd|_dS) NZbdistrDZmsizMtarget version can only be %s, or the '--skip-build' option must be specifiedrCr@z5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)rDrD)rCrC)r@r@)Zset_undefined_optionsr?get_finalized_command bdist_baseospathjoinrrB distributionhas_ext_modulesrGrDrlist all_versionsrFrEscriptsbasenameinstall_script_key)rrJZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCs\|js|jd|jddd}|j|_|j|_d|_|jd}d|_d|_|jj r|j }|st j dd}d|j |f}|jd}tjj|jd ||_tjd |j|jt jjdtjj|jd |jt jd=|j|j|jj}|j|}tjj|}tjj|rtj||jj }|j!} | s|j"} | sd } |j#} d t$| j } |jj}|j rd|j |f} n d|} t%j&|t'| t%j(| | |_)t%j*|j)t+d| fg} |j,ps|j-}|r| j.d|f|j/r| j.d|j/f| rt0|j)d| |j1|j2|j3|j4|j)j5t6|jdr9d|j pd|f}|jj7j.||j8sXt9|jd|j:dS)NbuildinstallZreinit_subcommandsr"r install_libr#z.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr8anydry_run);rDZ run_commandZreinitialize_commandr?prefixZwarn_dircompileoptimizerNrOrBsysversionr@rIrKrLrMZ build_baseZ build_librinfoZensure_finalizedinsertrunZmkpathrC get_fullnameget_installer_filenameabspathexistsunlinkmetadataauthorZ maintainerZ get_versionrmsilibZ init_databaser Zgen_uuiddbZ add_tablesr Z author_emailZmaintainer_emailappendZurlradd_find_python add_files add_scriptsadd_uiCommithasattrr[rArr])rrWrXrBZplat_specifierrVfullnameinstaller_namerkrlrbZsversionZ product_nameZpropsZemailtuprrrres|         %                  z bdist_msi.runc Cs|j}tjd}tjj|j}t||d|dd}t|ddddddd}||d fg}x|j |j gD]}d|}d|} } d} ||j krd } d } nd |} d} t|| | | d| d|}t|||||| }|j |||fqW|j i}x|D]\}}}|g}x^|r|j }xEtj|jD]1}tjj|j|}tjj|r d |j||f}||} t||||| |}|j |q|js+|j|j|d||kr|j|}||<||jkr|jrvtd|d||_q||}t|jd|||j|d|jfgqWqiW|j qNW|j|dS)NZ distfiles TARGETDIRZ SourceDirPythonZ Everythingrr"Z directoryzPython from another locationzPython %s from registryz%s|%szMultiple files with name %sz[#%s]Z DuplicateFile)rnrmZCABrKrLrhr?r r rG other_versionrortpoplistdirZabsoluterMisdirZ make_shortZ componentZstart_componentZlogicalZadd_filerErTrrZcommit)rrnZcabZrootdirrootfitemsrbtargetr*defaultZdescr leveldirseenZfeatureZtodofileZafileZshortZnewdirkeyrrrrq s\    !           +zbdist_msi.add_filesc Csd}x|jD]}d|}d|}d|}d|}d|}d|}d|} d |} d |} d |} tjrd} nd } t|jd|d |d| f|d|d| fgt|jd||f||fgt|jd|d| d|df| d | d|df| d!| d| dfgt|jd|||f| ||df| d|d fgt|jd|||f| ||df| d|d fgt|jdd|dd|fg|d7}qWdS)"Niz)SOFTWARE\Python\PythonCore\%s\InstallPathzpython.machine.z python.user.zPYTHON.MACHINE.z PYTHON.USER.ZPythonFromMachineZPythonFromUserZ PythonExeryPYTHONr|Z RegLocatorr"Z AppSearch CustomAction3[]z ]\python.exeInstallExecuteSequenceInstallUISequence Conditionrzrz NOT TARGETDIRi3i3i3)rGrmZWin64rrn)rstartverZ install_pathZ machine_regZuser_regZ machine_propZ user_propZmachine_actionZ user_actionZ exe_actionZtarget_dir_propexe_propZTyperrrrpCsJ                       zbdist_msi.add_find_pythoncCsK|jrd}x|j|jgD]l}d|}d|}t|jd|d||jfgt|jd|d||fg|d7}q#W|jrGtjj |j d }t |d }|j d |j t |jj |jt|jd d tj|fgt|jddgt|jddgdS)Nizinstall_script.rr2rz &Python%s=3r"zpreinstall.batrzrem =""" %1 %0 exit """ Binary PreInstallr| NOT Installed)rr|rN)rrr)rErGr}rrnrTrFrKrLrMr?openwritereadclosermr)rrrZinstall_actionrZscriptfnrrrrrrys,            zbdist_msi.add_scriptscCsG|j}d}}d}d}d}d}d}d} t|dddddddgt|dddddgt|d dddddgt|d/tjt|d0tjt|d1||||||d2d2d2 } | jd3| jd4d2d5d| jd6d7d5d| jd8d9d:d;d<d=d>| jd?d9d@d;dAd=dB| j d2d6dCd2} | j dDdEt|dF||||||d2d2d2 } | jdG| jd4d2d5d| jd6d7d5d| jd8d9d:d;d<d=dH| jd?d9d@d;dAd=dB| j d2d6dCd2} | j dDdEt|dI||||||d2d2d2 } | jdJ| jd4d2d5d| jd6d7d5d| jdKd9dLd;dAd=dB| j d2d6dCd2} | j dDdMt|dN||||dO|dPdPdPdQdR }|jdSd9dTdUd9d=dV|jdKdAdWdXdAd=dY|jdZdAd[d\ddd]|j d^d_dAd`d\dadbdcddd |jdEdddCdE} | j dDdE|j dddPdCdd} | j dDdd|jdPdEdCdP} | j dDdPt |d ddd\dedf|dgdd }|jdgdddXdhddi|j djdkdldmdnddodj dDdp|j dqdrdldmdnddsdj dDdt|j duddldmdnddvdj dDdw|j dxdydldmdndd6dj dDdz|j d{dmdldmdnddddj dDd||j d}d~dldmdndddj dDd|j dddldmdnddPdj dDdt |dddddd|dododo }|jdZdhd9dddd|j dsdldddddsdo} | j dDdE|j doddddddods} | j dDdMt |ddddd||dMdMdM }|jdZdhd9dddd|j dMddddddMd} | j dDdEt|d!||||||d6d6d6 }|jdKd9d:d;dd=d|jd|jd/d9dd;dAd=d} | jd/dZ|jdd9dd;dd=d} | jddZ|jd7dd5d|j ddd5d|jd6d} | j ddt|d'||||||ddd6 }|jd|jdd9dddAdd|jj|jd4dd5d|j dd6} d}| j ddd|xF|j|jgD]1}|d7}| j dd|d|d|qW| j ddd|d| j dDdMd|d|jd6d} | j dd|j ddd9dddkddddd } | j dd|j}d|}d|}|jdd9dUdd9dd} | jd|| jd|| jd|| jd||j ddd9ddddd|ddd } | jd|| jd|| jd|| jd|t|d||||||ddddQdR }|jdSd9dTdUd9d=d|jdKdAdAdXdAd=d|jdZdAdd\ddd|j dddAdd\dddddd |jddddj dDdMt|d$||||||ddd6 }|jd|jdd9ddddddid }|jdddddAd|jdddddAd|jd7dd5d|j dd6} | j dddd| j dDdMdd|jd6d} | j ddt|d-||||||d6d6d6dQdR }|jdSdAd9dUd9d=d|jdZdddddd|jdddddAdd|jd/d:d|d:dAdd} | jd/dZ|j ddddkddddddd } | jdd|jd4dd5dR|j dd6d5dR|jd6d7j ddt|d*||||||ddd6 }|jd|jdd9dd\dydd|jdd9dd\ddddid }|jddddUdd|jddddUdd|jd4dd5dR|j d2d6} | j dddd| j ddddT| j ddddb| j dddd| j dddd| j dddd| j dddd| j dddd| j dDdMddA|jd6dj dddS(Nriri,z[ProductName] Setupr#r" rZ DefaultUIFontDlgFont8 ErrorDialogErrorDlg Progress1Install Progress2installsMaintenanceForm_ActionRepair WhichUsersALLZ TextStyleTahoma r DlgFontBold8 VerdanaBold10Verdanar VerdanaRed9r PrepareDlg(Not Privileged or Windows9x or Installed WhichUsersDlg.Privileged and not Windows9x and not InstalledSelectFeaturesDlg Not InstalledMaintenanceTypeDlg,Installed AND NOT RESUME AND NOT Preselected ProgressDlg ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr+r.r!Z Description1rFi@Piz[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.r*Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryZbitmapFrz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnoreeiZ ErrorText0r{NxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r&r'ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.f(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar0Z SpawnDialogzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir]Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogr|ZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderryZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?Z AdminInstallzGSelect whether to install [ProductName] for all users of this computer.zInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"z({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rr)rr)rr)rr)rr)rr)rrrNr)rrrNr")rrrNr")rrrrr)rrr)rrr)rrr)rrr)rNr)rnrr rrrr r-r/r)eventZcontrolrr(mappingrNrfrGr}Z conditionr4Z radiogroupadd)rrnxyrrr ZmodalZmodelessZtrack_disk_spacefatalr;Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrbrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrss                .......$$$ !!        "  % zbdist_msi.add_uicCsT|jr%d||j|jf}nd||jf}tjj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rBr@rKrLrMrC)rrv base_namerwrrrrgs   z bdist_msi.get_installer_filename)r5r6r7 descriptionrZ user_optionsZboolean_optionsrQr}rHrUrerqrprrrsrgrrrrr8SsP      ( [ 6 6 & ?r8)rarKZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrmr r r r r rrrr8rrrr s ">PKq|]BYƲ6command/__pycache__/build_scripts.cpython-35.opt-2.pycnu[ ]W@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z m Z ddlm Z ddlZejdZGd d d eZGd d d ee ZdS) N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sjeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line) build-dir=ddirectory to "build" (copy) toforcef1forcibly build everything (ignore file timestamps executable=e*specify final destination interpreter pathcCs1d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfr2/opt/alt/python35/lib64/python3.5/build_scripts.pyinitialize_optionss     z build_scripts.initialize_optionscCs)|jdddd|jj|_dS) NZbuildr rr r)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s  zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|jdS)N)r copy_scripts)rrrrrun/s zbuild_scripts.runc"Cs|j|jg}g}x|jD]}d}t|}tjj|jtjj|}|j||j rt || rt j d|q&yt |d}Wn$tk r|jsd}Yn|Xtj|j\}}|jd|j} | s!|jd|q&tj| } | rQd}| jdpNd} |rt jd ||j|j||jstjs|j} n:tjjtjd d tjd tjd f} tj| } d| | d} y| jdWn'tk r-t dj!| YnXy| j|Wn*tk rkt dj!| |YnXt |d'}|j"| |j#|j$WdQRX|r|j%q&|r|j%|j||j&||q&Wtj'dkr|x|D]y}|jr!t jd|qtj(|t)d@}|dBd@}||krt jd|||tj*||qW||fS)NFznot copying %s (up-to-date)rbrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sBINDIRz python%s%sVERSIONEXEs#!s zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfilerencodinglinesZ first_liner6Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s $                         zbuild_scripts.copy_scriptsN)r r r )r rr)rrr) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrrrrrrrrrr s       r c@seZdZddZdS)build_scripts_2to3cCs5tj|\}}|js+|j|||fS)N)r rr/Zrun_2to3)rrrFrrrrs  zbuild_scripts_2to3.copy_scriptsN)rJrKrLrrrrrrNs rN)r'rerDrZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr0compiler5r rNrrrrs PKq|]3command/__pycache__/build_clib.cpython-35.opt-2.pycnu[ ]V@slddlZddlmZddlTddlmZddlmZddZGdd d eZ dS) N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rr//opt/alt/python35/lib64/python3.5/build_clib.pyrsrc@seZdZdZd"d#d$d%d&gZdd gZdddefgZddZddZ ddZ ddZ ddZ ddZ d d!ZdS)' build_clibz/build C/C++ libraries used by Python extensions build-clib=b%directory to build C/C++ libraries to build-temp=t,directory to put temporary build by-productsdebugg"compile with debugging informationforcef2forcibly build everything (ignore file timestamps) compiler=cspecify the compiler typez help-compilerNzlist available compilerscCsUd|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefrrcompiler)selfrrr initialize_options4s        zbuild_clib.initialize_optionscCs|jdddd d d |jj|_|jrD|j|j|jdkrh|jjpbg|_t|jtr|jjtj |_dS) NZbuildrr rrr)rr )rr)rr)rr)rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)r rrr finalize_optionsDs  zbuild_clib.finalize_optionscCs|js dSddlm}|d|jd|jd|j|_t|j|jdk rs|jj|j|j dk rx*|j D]\}}|jj ||qW|j dk rx!|j D]}|jj |qW|j |jdS)Nr) new_compilerrdry_runr)rrr)rr*rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)r r)namevalueZmacrorrr run^s    zbuild_clib.runcCst|tstdx|D]}t|t rVt|dkrVtd|\}}t|ts}tdd|kstjdkrtj|krtd|dt|ts"tdq"WdS) Nz+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)) r#listDistutilsSetupErrortuplelenr$r&sepdict)r rlibr, build_inforrr r"vs"   "   *zbuild_clib.check_library_listcCs>|js dSg}x$|jD]\}}|j|qW|S)N)rappend)r Z lib_nameslib_namer8rrr get_library_namess  zbuild_clib.get_library_namescCs|j|jg}xe|jD]Z\}}|jd}|dks]t|ttf rmtd||j|q W|S)Nsourceszfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)r"rgetr#r1r3r2extend)r filenamesr:r8r<rrr get_source_filess" zbuild_clib.get_source_filesc Csx|D]\}}|jd}|dksDt|ttf rTtd|t|}tjd||jd}|jd}|jj|d|j d|d|d|j }|jj ||d|j d|j qWdS)Nr<zfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenameszbuilding '%s' librarymacrosrZ output_dirr) r=r#r1r3r2rinforcompilerrZcreate_static_libr )r rr:r8r<rArZobjectsrrr r+s$"     zbuild_clib.build_libraries)r r r )rrr)rrr)rrr)rrr)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrZ help_optionsr!r(r.r"r;r@r+rrrr r s*       $ r ) r&Zdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr rrrr s   PKq|]G.command/__pycache__/check.cpython-35.opt-2.pycnu[ ]x @sddlmZddlmZypddlmZddlmZddlm Z ddlm Z ddl m Z Gdd d eZ d ZWnek rd ZYnXGd d d eZdS))Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@s4eZdZddddddZddZdS) SilentReporterNrasciireplacec Cs/g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr*/opt/alt/python35/lib64/python3.5/check.pyr s zSilentReporter.__init__cOsB|jj||||ftj||d|d|j||S)Nleveltype)r appendrsystem_messageZlevels)rrmessageZchildrenkwargsrrrrs zSilentReporter.system_message)__name__ __module__ __qualname__r rrrrrr s r TFc@seZdZdZdddgZdddgZd d Zd dZddZddZ ddZ ddZ ddZ dS)checkz"perform some checks on the packagemetadatamVerify meta-datarestructuredtextrEChecks if long string meta-data syntax are reStructuredText-compliantstricts(Will exit with an error if a check failscCs(d|_d|_d|_d|_dS)Nr)r%r"r( _warnings)rrrrinitialize_options1s   zcheck.initialize_optionscCsdS)Nr)rrrrfinalize_options8szcheck.finalize_optionscCs|jd7_tj||S)Nr+)r,rwarn)rmsgrrrr/;sz check.warncCsl|jr|j|jrDtr/|jn|jrDtd|jrh|jdkrhtddS)NzThe docutils package is needed.rzPlease correct your package.)r"check_metadatar% HAS_DOCUTILScheck_restructuredtextr(rr,)rrrrrun@s      z check.runcCs|jj}g}x9d D]1}t||o:t||s|j|qW|rn|jddj||jr|js|jddn;|j r|j s|jdd n|jd d d dS)Nnameversionurlzmissing required meta-data: %sz, z)missing meta-data: if 'author' supplied, z#'author_email' must be supplied tooz-missing meta-data: if 'maintainer' supplied, z''maintainer_email' must be supplied tooz4missing meta-data: either (author and author_email) z%or (maintainer and maintainer_email) zmust be supplied)r5r6r7) distributionr"hasattrgetattrrr/joinZauthorZ author_emailZ maintainerZmaintainer_email)rr"missingattrrrrr1Ps$          zcheck.check_metadatacCsz|jj}xd|j|D]S}|djd}|dkrQ|d}nd|d|f}|j|qWdS)Nr+linez %s (line %s))r8Zget_long_description_check_rst_datagetr/)rdatawarningr>rrrr3ns  zcheck.check_restructuredtextcCst}t}tjdtfj}d|_d|_d|_t||j |j d|j d|j d|j d|j}tj||d|}|j|d y|j||WnEtk r}z%|jjd d |d ifWYdd}~XnX|jS) NZ componentsrrrrrr+z!Could not finish the parsing: %s.r?r?)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrB source_pathparserZsettingsZreporterrFerrrr@ys*           *zcheck._check_rst_dataN)r"r#r$)r%r&r')r(r)r*) rrr descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r@rrrrr!$s        r!N)Zdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs   PKq|][n_ii8command/__pycache__/install_headers.cpython-35.opt-2.pycnu[ ]@s*ddlmZGdddeZdS))Commandc@sgeZdZdZddgZdgZdd Zd d Zd d ZddZ ddZ dS)install_headerszinstall C/C++ header files install-dir=d$directory to install header files toforcef-force installation (overwrite existing files)cCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr 4/opt/alt/python35/lib64/python3.5/install_headers.pyinitialize_optionss  z"install_headers.initialize_optionscCs|jddddS)Ninstallrr r)rr )rr)Zset_undefined_options)r r r rfinalize_optionss z install_headers.finalize_optionscCsf|jj}|sdS|j|jx9|D]1}|j||j\}}|jj|q-WdS)N) distributionheadersZmkpathr Z copy_filer append)r rheaderout_r r rrun!s  zinstall_headers.runcCs|jjpgS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r )r r r r get_outputs.szinstall_headers.get_outputsN)rrr)rrr ) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrrrrrr r r rr s      rN)Zdistutils.corerrr r r rsPKq|]z /command/__pycache__/install_data.cpython-35.pycnu[ Yf @sRdZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sjeZdZdZdddgZdgZd d Zd dZddZddZ ddZ dS) install_datazinstall data files install-dir=dIbase directory for installing data files (default: installation base dir)root=Ns PKq|]''1command/__pycache__/build_py.cpython-35.opt-2.pycnu[ ] C@sddlZddlZddlZddlmZddlmZddlTddlm Z m Z ddl m Z GdddeZ Gd d d e e ZdS) N)glob)Command)*) convert_path Mixin2to3)logc@s*eZdZdZd8d9d:d;d<gZddgZddiZddZddZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd S)=build_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr-/opt/alt/python35/lib64/python3.5/build_py.pyinitialize_options s       zbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrx3|jjjD]\}}t||j|ts z+build_py.get_data_files..) r"get_package_dirosr+joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r8rr$as %%zbuild_py.get_data_filescs|jjdg|jj|g}gxO|D]G}ttjj|t|}jfdd|Dq5WS)Ncs4g|]*}|krtjj|r|qSr)r;r+isfile)r6fn)filesrrr9s z,build_py.find_data_files..)rgetrr;r+r<rextend)rrrBZglobspatternZfilelistr)rHrr?ys !$zbuild_py.find_data_filescCsd}x|jD]v\}}}}xa|D]Y}tjj||}|jtjj||jtjj|||ddq)WqWdS)N preserve_modeF)r%r;r+r<mkpathdirname copy_file)rZlastdirrrBrCrDfilenametargetrrrr0s zbuild_py.build_package_datac Cs|jd}|js5|r.tjj|SdSng}x|ry|jdj|}Wn-tk r|jd|d|d=Yq>X|jd|tjj|Sq>W|jjd}|dk r|jd||rtjj|SdSdS)Nr4rErr5rR)r=rr;r+r<KeyErrorinsertrI)rrr+tailZpdirrrrr:s(      zbuild_py.get_package_dircCs|dkrPtjj|s.td|tjj|sPtd||rtjj|d}tjj|r|Stjdd|dS)NrEz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)) r;r+existsZDistutilsFileErrorisdirr<rFrwarn)rrrinit_pyrrr check_packages     zbuild_py.check_packagecCs1tjj|s)tjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r;r+rFrrX)rmodule module_filerrr check_moduleszbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S)Nz*.pyrz excluding %s) rZrr;r+r<abspathr!Z script_namesplitextbasenamer@Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr[rrrfind_package_moduless  "zbuild_py.find_package_modulesc Csi}g}x |jD]}|jd}dj|dd}|d}y||\}}Wn'tk r|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)Nr4rr5__init__z.pyrRrR) rr=r<rSr:rZr@r;r+r]) rr"rar[r+rZ module_baserZcheckedrYr\rrr find_moduless*   zbuild_py.find_modulescCsqg}|jr"|j|j|jrmx?|jD]4}|j|}|j||}|j|q5W|S)N)rrJrdr"r:rb)rrarrmrrrfind_all_moduless  zbuild_py.find_all_modulescCsdd|jDS)NcSsg|]}|dqS)r5rRr)r6r[rrrr9-s z-build_py.get_source_files..)rf)rrrrget_source_files,szbuild_py.get_source_filescCs.|gt||dg}tjj|S)Nz.py)listr;r+r<)rrCrr[Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler5cCs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|jtjj|dd|j dkr|jtjj|d|j qW|dd|j D7}|S)Nr4 optimizationrErcSs>g|]4\}}}}|D]}tjj||qqSr)r;r+r<)r6rrBrCrDrPrrrr9Cs z(build_py.get_outputs..) rfr=rirr@r importlibutilcache_from_sourcerr%)rr-raZoutputsrr[r\rPrrrr23s"    zbuild_py.get_outputscCst|tr!|jd}n!t|ttfsBtd|j|j||}tj j |}|j ||j ||ddS)Nr4z:'package' must be a string (dot-separated), list, or tuplerLr) r&strr=rhtuple TypeErrorrirr;r+rNrMrO)rr[r\rZoutfiledirrrr build_moduleJs  zbuild_py.build_modulecCs=|j}x*|D]"\}}}|j|||qWdS)N)rdrr)rrarr[r\rrrr.Ys zbuild_py.build_modulescCsfx_|jD]T}|j|}|j||}x*|D]"\}}}|j|||q8Wq WdS)N)r"r:rbrr)rrrraZpackage_r[r\rrrr/bs  zbuild_py.build_packagesc Cstjr|jddSddlm}|j}|d tjkrS|tj}|jr||ddd|j d|d|j |j dkr||d|j d|j d|d|j dS) Nz%byte-compiling is disabled, skipping.r)r1r5rrprefixdry_runrR) sysdont_write_bytecoderXdistutils.utilr1rr;sepr rrtr)rrHr1rsrrrr1vs     zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optr r,r3r$r?r0r:rZr]rbrdrfrgrir2rrr.r/r1rrrrrs8        '    4     rc@s(eZdZddZddZdS) build_py_2to3cCsfg|_|jr|j|jr9|j|j|j|j|j|jdddS)Nr-r) updated_filesrr.r"r/r0Zrun_2to3r1r2)rrrrr3s      zbuild_py_2to3.runcCs:tj||||}|dr6|jj|d|S)Nr5r)rrrr~r@)rr[r\rresrrrrrs zbuild_py_2to3.build_moduleN)ryrzr{r3rrrrrrr}s  r})r;importlib.utilrkrurZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr}rrrrs    |PKq|]o,`command/wininst-14.0-amd64.exenu[MZ@  !L!This program cannot be run in DOS mode. $%KKK|kK|k`K|kKVWKHKNKOKKKKJfK_CKZK_IKRichKPEd *PX" pȗ@p `d@ XZ` lT.text `.rdata*@@.dataKl@.pdataZ\|@@.gfidst0 @@.rsrcX@ @@.relocl` @BHtt +|>+B|.PK8t33ۉ\$@fB;\.LcLMcF*A8LcLA>PKuA<$PKuAF.AN LcAFLID$HcHT$DIT$HIHHHHD$`H D pHuHL$pHHT$pHL$PHH8u<\tHL$pHH8ufHL$psHcHD$pHHD$XE3HD$H2HIIF8uIUE3҅HHHHD$HL9uMD$HL$pIH\$PHD$p8t8/u\HuHL$pHH<u<\H\$Xt_ENHvHD$0HT$pAF LfD$(3AFfD$ Ht'ANED$ENHT$`L$ HD|$@HFD.AED|$@BD.D;T$D3HT$HHIMHIF8uHL$pHHD8uLD3AH„uED$HL$pIcIIE+HD8uH\$P<\t </tHL$pHHD8uf:\t:/uHAMcHL$p@HH3zL$I[8Is@I{HIA_A^A]A\]HEHEH\$Ht$WH0IHHE3H\$ LHHŞH\$@Ht$HH0_HHPL@LH SVWH0HHpHE3Ht$ LHHyH0_^[H\$Ht$WH0IHHKLLHHHD$`HHD$(Hd$ >H\$@Ht$HHH0_H\$Hl$Ht$WH0IIHHH\$(LHd$ LHHHߣH\$@Hl$HHt$PHH0_H\$Ht$WH0IHHH\$(LHd$ HLHHHHt$HHH\$@H0_HHPL@LH SVWH0HHpH+LHt$(Hd$ HLHHHHH0_^[LD$LL$ SUVWH8IHl$xHHHl$(LHd$ LHHHˢHH8_^][H\$Ht$WH0IHHH\$(LHd$ IHHH\$@Ht$HH0_HHPL@LH SVWH0HHpH7Ht$(LHd$ IHHfH0_^[/H\$Hl$WH AHHHtwtnviH\uU80|W83~#8nt 8ruHH ;f HH/AHT$0HQ< u HHD$0 HHuHl$@H\$8H _@SH HH HtH6%HH [HݎHuHH\$WH HٹY9HHH H\$0HOHH=H _H\$Hl$ VWAVHHXdH3H$Hf3E3LH@AHuH AE3HHD$ DBHH qH!|$ E3DB*H53Hۃ LH׏HL$0HL$0AօtLDKcHޏHL$0HT$0H Hd$ LcDBLH ƞHvHrH$H3qtL$I[0Ik8IA^_^H\$Hl$Ht$WH0HHHÀ<ud$(DKHd$ L33Hɋ7HHu3+l$(DKLH|$ 33vu HbHH\$@Hl$HHt$PH0_HHXHhHpHx ATAVAWH DHHPHHH=HHH*HHHHHLHHL3H9 u3GHt?Ht:Ht5Mt0Mt+Ht&EH UAI2ՋH\$@Hl$HHt$PH|$XH A_A^A\H(HLD$@Hu3HT$@H H(H(HLD$@Hu3HT$@TH әH(H\$WHPH`H3H$@H=HuBH IHuH _H@JHFHHLD$ HHH=t3H=kHT$ H行tH rH H GHkHcHE33DHT$01tHT$0H }˘H HLD$ 3H$@H3qH$`HP_H\$UH$@HH_H3HHd$h3Hd$pHڃd$XHd$xHd$PHd$`yHMH DHD$XHHD$@LMHD$pHD$8LEHD$xHD$0H(HD$hHD$(HEHD$ wu3HD$PDHD$ L 3H Ty H_HL$PLD$`HCHy H9HL$PHUHy HHL$PHUHP8y HHT$hHtHL$PHPXy HHT$pHt#HL$PDD$XHy HHT$xHtHL$PHPHy HیLEHED$(A3HD$ 3HL$`HUDHP0yFLEHH ;D*HL$`HtHPHL$PHtHPdHL$`HPHL$PHPòH ֈHH3_nH$H]LHHIKHIKMK HMCH<bu3-DL$`HLD$hHT$0̱H HHH hH%*H\$UH$@HH|\H3HLKD$0H,HOHHHHD ÔHD͓HHL$@HD$ LL$0HLEHT$@t#LL$0HLEHT$@t3GHMHH9uFfHMHH9u3ҊH„u3HMDBHH3lH$H]H\$UVWATAUAVAWH HIH0HQHHHVHL H[HHHXHLHUHHHD$h̫HUHLHRHL3HD$pHHMMHMMH HHt[HHHHHH-fHґHHc3HHAHLHAHv rHl$hHD$pHx3H-L5XL=yH\$`H A_A^A]A\_^]@UVWATAUAVAWHpHl$ HHYH3HEHHMHŅHtHMHHE`HمHLMHHL:HHL'HxHHHHHEHHHE3H9MMMMHwH9MmHdH9MZHJ8 BH u"HJ HHXLFH LbUHHm3HAL+HI >Ht3HHHGH;|HӹAH0H Ht HHH;|HUλ)uUDE,A@HcHAH;w HH蘔H+H|$ H~HcH: Hc:AՋAԋ HMHH3thHHePA_A^A]A\_^]H\$T$UVWATAUAVAWH@I!L33IM͂Hd$0E3D$(DźD$ HL<H؋ܨLΨHӋH$HӹuHHtMIHHϋw# HHqIչ&H$3H ;s 3H GHc*E3HHtCE3D$E33HHL$DL|$ H$HD<HIH$H@A_A^A]A\_^]HHXHhHpHx ATAVAWH LLHDHIL1HIHHIH HTIHHMt;Ht6Ht1Ht,Ht'H uAItIՋ؅t׋H\$@Hl$HHt$PH|$XH A_A^A\HHXHhHpHx ATAVAWHHiTH3H$H=332Hd$0E3D$(HD$ LEAH@L0H֋LH֋ߤJHHu-dDH*HL$PHL$PHH.HˋI׹IԹs3HxDG-Hc(HHtdd$@H̄H+Š H„uE3E33HԣHd$ HS,LL$@DHQD$@H˃,H H HGIH$H3cL$I[ Ik(Is0I{8IA_A^A\H\$WH`H|RH3H$P3HtEHD$0DD$(DHD$@3ҹHD$ mHT$@HL$PD蛜HL$@(D$PHL$PHcLH+HD$PHHJH LAHT$P3H$PH3cH$xH`_LISMCMK SVWH@HQH3H$0HIsHt$(HT$0Hd$ LAHH躍tot%H HH!E3H pHc^DI9L$hLH GQHT$0%A0LɂHHT$0yH FHtHrL$h H$h.sHtBHwHGu/H$h~ H HtL$hHH$0H3?aH@_^[HHXHpHPWH@H`H ԉE3@@EA4HHu3lHT$XHHd$(E3Ƀd$ 3HˋEAHHHtHd$ E3E3HAQHHHÉ5H\$PHt$`H@_H\$WH0H=HtQH=uGLHȃd$(HEH IPMHT$ ACHHH^pH\$@H0_HHXHhHpHx AVH`HNH3H$PH 3C+T +T"H- HcHH-ޙ|PK!;{V4tHq3LcCEtHcCHH+I+H LsA+A+ЉuIcH+"HHHT$@LH'E3HL$@tnEE3Hl$0Hfl$(fl$ AHxHHtYMcHHHH@8,uHKH譋HHH5ИڟşH3H$PH3U^L$`I[IkIs I{(IA^HhHL$0HL$0E3D$ E3HL$03%uHh@SUVWAVHHLH3H$Ht HT$p.H^E3E3ȸgfffH~HD$hD҃d$`3҃d$Xd$Pd$Hd$@d$8d$0AAʉ\$(AD$ HH`HHrHL5HHA<uL$ DMH:H$HA<u \$ DMH HHHHT$pH'3H$H3\HA^_^][HHXHpHxLx UH8/H+HKH3HHPD$`3HD$h3Ht$pHu3HD$xHE[L=\}HuHL$`HEL}şfuH iLJ}E3HP}L[H\}HMj3*HL?Ht$XLEH\$PE3Ht$HIHt$@3ɉ|$8D$0t$(t$ AHȺHHoHHH3%[L$I[IsI{ M{(I]H\$WHPHIH3HD$@HT$0Hq3DT$0ȋD$4D\$LD$`HzHM(HD$PAE3HD$ HUHu{D$DHHtVHL$PHD$DHD$(E3E3H\$ 3u0LME3ILHLcIHL$PHd$8Hd$0Hd$(Hd$ HL$HLL$@LD$`HL$HWHMPH3vWL$`I[0Is8IA^_]H\$WH0HD$@AE3HD$ HHRH3ۋu HL$@ËH\$HH0_@SH HQHH;tKH=uu:HQ1ALlyHmyVHHHH QH [̋ }~HVPu=}HEP}H|RHl$H|$Ld$ AUAVAWPH+HDH3H$@HNt+fD;IfD;3HF}HtE3HD$ ArЙHϋHH]HƙHHCHd$ E3AH}LHvHd$ HLcAHϋU|t8L|HxH$@L$@H!|EuGt&Ls|H,xH$@H$@HUxALxxHHAE3HEϺpTHd$ E3AHIHLA;u\EOE3HȺpLnHSLnH>n{DvIME3HȺpHd$ AMcMHL-{IH+HH N HuMźHHd$ MAHHcLHtgMHD$ AHkL zILyH wu"D zH wDyH MuI ym1utL3B *L0H„uHD$0IB<0uHD$0A|\tHL$0HH9u%mfHL$0HH9uM@3AH„uLD$0HYAy8uOHd$ E3ɺAeIHA;u EN wAE3pH3H$@H3RL$PIk(I{0Mc8IA_A^A]HHXHxL`Lh UAVAWHXHH@H3HH LHuHHuL=vLHDIHd$@HD$`HD$8E3Hd$0E3D$(d$ XtEu$HjuE3HEH3ՔE3LuHIL% xL-xMMHuHL$pHuHL$pHjxHu9LLD$pHjuHzPHRHL$XjHL$XHL$XLLluHL$p H wHT$pH wLyHguH wHduLwHguD vHMĉD$ HL$`HD$PHD$@HHD$hE3HD$8E3Hd$0D$(d$ t \E3L uHHzHL$`oAD9t$PuH wLMHtD vHvDuHtHL$pHD$ HHL$pHH<uHL$hHtAEΉD$(E3HD$pHHD$ tE3LtHHT$pH `vHD$pHD$(LMH\$ HxtMHtMHL$p`HtHL$pKHcrLH zuMH;HMLd$(MLl$ HHtHL$p HD$pHǀ<8uHL$hHD$pAHLt|$(HEHD$ E3 tE3LsHHT$p‘HL$pMHL$(LH WuHsH\$ &AHH3ML$I[ I{(Mc0Mk8IA_A^]HXHB<H3H$@HL$ 5HL$ 蛽HL$ 葽LLsHL$0H tHT$0H tHt:H$@H3MHX@UVW@xH+H;H3H$0IHNtxt4Hd$ MDBLƺHHt$ E3DBw>H$0H3]LH@_^]HsHtE3HD$ Ar-L&sHrHL$0ԏLD$0H LrHAy1t0Ay8AE3HȺpbH=u$sƏE3E3HȺp2HE3E3HȺkuHLrHHA<uB|\tIHH9uefHA<uHHNHB-^H WrHHt9tLqHӎ=GrLqHH?u H qK=r=kqtKLqHoH tLqVqHHt3HwH=qtW=fntNLqHH 3tLqHHtHH3ZJHHpLpLx UHhHpH^8H3HE`HNu=p=lHd$HHqL%qHD$@=3HpD PHuHL$PHH9uqqfAHL$PHH9uL l3AH„uH IpHtLL$PLjHp 3?HLLL$0HD$PLD$8HD$8HL$PDtHHpELt$0MtMƺH?LpH*I袸I)|eH[oHtE3HD$ Ar=fou#H`LbHHLEE3E3HU)Ay8uAE3HȺp'3HM`H3iGL$pIsMs M{(I]H\$UHl$H H5H3HEHnHL$$3DBd_HeHM33HEHEHED@`_3D$ hD$$gHd$PHL$ HD$(H`HD$HHD$0kąHL$ D$$HEH4HD$HHD$0lHL$ D$$HEHlHD$HHD$0mlHL$ D$$HEHHD$HHD$0n@3E`HEHeHMHeeHEHEHEH]E EHMH3EH$0H ]H(H b_Hu3H(HdnH[Hd^HtH(HHH:4H3H$=lu3RLlHgHL$@ HD$0AE3HD$ HT$@HuHL$0H$H3EHĨHH3H3H$D$(L 2_Hd$ LmHm3 /DH}mHL$0ZALmHT$03PH$H3pDHH\$Hl$AV@"pH+H3H3H$0H~~L5^HD$(H-7mLL$0MƉ\$ HH$m APHT$0H jH,~LL$0HD$(HlMƉ\$ H˃DHT$0H mH}L mHD$(HlMD$ PHL }HlAHdL }HlA:jHAgHjHu}MHD$(H~lLD$ HHK}L iHD$(H`lMD$ PH VlH}L fHD$(HFlMD$ HH|L iHD$(H(lMD$ HHHÀ;u\HlH huuuuLHkH htu[uKtBˀ=ht7HkH }htt E3LkHHkKHXisH hH {HtTH hHt3H$0H3AL$@I[IkIA^HHH+Њ: u Hu3H\$UH$HH/H3HAHU3LEHjHHjHHjHH4LEHHj!LEHHjLHHjHhHL$pD3YHD$P\$pHD$HH3EHD$pf]HD$@E3HZE3HD$83H\$0D$(D\$  tUHL$XSHȍSqHȺHL$PHL$XWHL$XHH3?H$ H]H\$Hl$Ht$ WH0Hl[HHPHH]HHPHH HHPHtH B:HD$HAHD$ E3HW}tE3LycHH͂=HL$HHS}twE3LiHHHL$H}H>H\$@Hl$PHt$XH0_H\$Hl$Ht$ WH0Hk[HHOHH]HHOHH=HHOHH 59HWAHD$HE3HD$ |tE3LibHH=HL$HHS|tgE3LhHHHL$H~|H.H\$@Hl$PHt$XH0_@SH :NHHuH [H ׷uHH [H%}@SH :NHHuH [H 蛷uHH [H%|H\$Ht$WHPH+H3HD$@[`NHu3HH]FNHHtHH5UHH+HDA+uHEuHd$8HfHd$ LL$ LD$(HD$0HH\$(tHHfH|$ Ht!?tE3LfHHH褬H+ HÄuHL$@H3;H\$hHt$pHP_HHXHpHx UATAUAVAWHx`gH+Hu*H3HPE3HT$@3Dt$0!t$43LEn t HCfHJ:JfA:$ t A $H~H~Hj~IG AAE+AH+EoD+AD+EgHGEVDIAI@IG#AF@H(A_A^A]A\_^][E3HtfHQ(Ht]DBDADA LA BtALHHHHB`HBX3LDB BLB LB@ǂø3HtHA(Ht HP,P4pH\$Hl$Ht$WH HHtXHy(HtOy3ƃ0}tCw*HW8Ht9_(t HI@U8Hg8H͉w_(hH\$0Hl$8Ht$@H _H\$Ht$WH HMA81AXHuA~Ha Hy0uHa@Hy"HA0Hy8u Hs"HA8HI@AS0HHuG1H{(H`8HtHK@HS8Hc(H\$0Ht$8H _ELº$EHtJLI(MtAy Aa@AaD3Ã+EADEA wEQDAA#AA@͸HiqAh HAXHWyHA`AlHHXHhHpHx AVH HY(E3AHHL9s8u!K(DHH@P0HC8HuD9s,u K({,Ls0{,;rHK8H+HDPDs4C,R+{4H֋K4;GHK8DH+O+tHK8DI+HOk4{4C4;C,ADƉC4C0;C,sljC03H\$0Hl$8Ht$@H|$HH A^@USVWATAUAVAWHHXHy(3LHH9QH9u 9Q? u DQELYL DiDw@wDL]LMDUHDmDUPUH_lLh ;-TtC\HXA_A^A]A\_^[]ø;s&EAIDLMA̓rDwAt HyAt HyHO Ht AGt'OHUXDuXAADuYLM3҉GD!ExAIDLMA̓ rHG HtDpGt5OHUXADuXAEYAAEZDu[G3LMD!EAIDLMA̓;rHO HtAƉAAHG H Gt#OHUXDuXAADuYG3LMDGHG HtHPLMG _HA;AG݅HG HLHMP+WHH;vp+nEAIDLMA̓;rHG DwHHtDpGt#OHUXDuXAADuYG3D=L}DIIK3L}GtMuODIb3҉GLMD+L)_HLM9WH:WHGEڋF<HG HtHP HtOH;H(sD<GH3EtA;rGt MuODILM3҉GD+LLMEtMHG HtHP WHGEuڋF<HG HtHP0HtOH;H8sD<GH3EtA;rGMkx9Wu, pEAIDLMA̓;rGtEAunLMDEPDUHL]ID$ sHHOlDGxLHG`GtHDL|$(HL$ HG 3҉E؅t HmLMLhDEPH_lDUHL]AruArlM\$AET$IM $El$Dw@wD? M\$M $ET$El$BDw@wDDEPL]DUHLMAL_XHAH#A;EAIADLMA̓HAH#HGX;wDAAE‹AȉE`AAAE#ADCDADD;viL}EADMaAIDEbAAAAL}E#AADHGXBDED;wLhMaA+3҉+AOHu  t @t H=jLMȃOPWPtC!EAIDLMA̓;rۋʸ+A#AGHGH3҉ L_`HAH#A:EAI DLMA̓HAH#HG`;wDAAE‹AȉE`AAAE#ADCDADD;veL}EADMaAIDEbAAAAL}E#AADHG`BDED;wMaA+LMLhDEPDUHL]+A@t HXhOLȃOPWPtO-H$igEAIDLMA̓;rۋʸ+A#AGL3EZOLAA+;+;O09HgZtWt.9W!EAIDLMA̓ rE+ED$DGEt?9WIAtH+u#O OH+L]3DUHLMGAD$LADUPAEA%A9WAE;Ot H\hPD9W9W !EAIDLMA̓ rD;wHhEGHAIAL]DUHG4;v W,+++HW8GH;v GHIH+ыA;AGD++DUHI+ӉGHBAIÃu3L]A9WHM\$ET$M $El$Dw@wDEL}DEL}3HE]PID$EHAD$M<$El$Dw@wD9W,u A;\$t+?&IT$DE+D$Iy3҅t A+\$A\$EA+D$AD$ _9Wt>t:9WIT$tH+uODIOH+De3҉GAD$L?t?DuAGظɃ@? DЋEAѹWDAT$HD@SH HA(HHt-LA8Mt$HP8HtHI@AHS(HK@S8Hc(3H [H\$Ht$WH IHHtMHY(HtDC0t/Ht*S4H+HS8D8DC4K0HS8I+H8HtC03H\$0Ht$8H _H\$Hl$Ht$WH AHHHtHY(Ht {t; tH\$0Hl$8Ht$@H _Ã; uDƹ;CtH.DHt C 3HtHA(Ht@t HP b@3øD E3LEttQVDE3f@+щVDr"DN@F@ABD0ADN@sVDHN|!HT$0HHN|DGG )GDW H~|t#DOHDW 3DO H\$8Ht$@H _3HtHI(Ht9 u9ADu øH\$Hl$Ht$WAVAWH HHHHHz(HHB0HHz8HK@AAAHHu E3L9w8t&O(AEHK@S0LHu HK@HS87HHEKDBIMC E K0M0C@E@KPMPHI@ A H0I0@@A@HPIP@`A`IHpIII+uHHI@ A H0I0@@A@HPIPH@`HA`HHHOXH;rAHH;w5H+H+HHRHHFXHG`H+H+HHRHHF`HH+H+HHRHHMtO(HW8AIET4Lv83Hu(H\$@Hl$HHt$PH A_A^_HtHA(Htǀø3Ht-HA(Ht$8uPH8u +PHøH\$UVWATAUAVAWHl$HHH3HEL}HHUM3ELEwLMD҉MDbLEL}AHH EfTAvAEtHIIfDdEI+uA8MAAf9TEuDE;sA;AGEuHD$ @D$ IMIEM+uE 3HMH3H$HA_A^A]A\_^]EE;vHEf9u EIE;rA;AEABALE+0EAvE3҅~E;fDUIʺD fD fD II+u3Et+Hf9tLEfEOfDdE3EIE;rE3ۅtBA;tH5e[AHuH\5H[H+H5~[H+AHuIL}IAIEAD\$$ED\$(AHEAMEHUD]ACEu ATwA;uAPv pDd$(AA*ĈD$!HM AA;} 3fL$"D$ ~ ND$ JD$ `3fD$"D$ ALmA+̾D]AA+ADD+uLmAHASuE3ۅt B#AۋL$$AL$$fTEu E;HM AHEDHL$$D]HUHuD;DeD#D;eD\$(AHMEۋEDDA+D\$(DH HME;sBL]+х~ AE;rLmEAAED]u AT{A;u APiIEHUDeB4IEHuB|IMHEH+HfBDL$$%C%xD%bD%dDffH; uHfuH7@SH H3AHA@HȺ H [H%AHL$H8't)H HD$8HjHD$8HHHSHHD$@H HkH HHkH HL HkH HL H tH8H(H(̉L$H(&tD$0)H HD$(HHD$(HHHkH HkH T$0HH _sNH(LD$T$L$H8M&tD$@)H HD$8HHD$8HHmHH7 |$HvH|$PuD$H|$Hv D$HȉD$HD$HHkH T$@HD$ D$ D$ D$H9D$ s"D$ L$ HLD$PIHH Pr?H8H\$ WH@H>HHT$PHE3>Ht2Hd$8HL$XHT$PLHL$0LHL$`HL$(3H\$ r>H\$hH@_@SVWH@HC>H3E3HT$`H1>Ht9Hd$8HL$hHT$`LHL$0LHL$pHL$(3H\$ >ǃ|H@_^[@SH SH;tl H J uVXt H tD 3H [ù1̹&H(3H(H( H(H(H(H\$WH0u @2@|$ l؋ u uJH?H a?t H??H (?q@@|$ #HH8t"HjtHH E3AP3HH8tH:tH 61LD3H hNuG@u3ұ!%ù|$ uH\$@H0_H(H(S@SH ELH GhD3H [4H(H(2HHыH3ƒ?HLHAй@?+HI3HHLcAOL*OHHtHHӋ HӋH\$0Ht$8H _H\$Hl$Ht$WH AL NLNHHNHHtHaDŋH H6H\$0Hl$8Ht$@H _HE3¹@?E+HIH L3H;HHу ILH@L;ūu9SH HlH HtHt8H#HHiH;uH [H@ƒ?+3HH3LHAй@?+HI3H@ƒ?+3HH3HFH!HH\$Ht$WH H!HAAaHHH:E3LA @:tAA<;wI?IrA<v~v t5IAAH8uHmHtHH@:t&H#CC{uC AAHt$8HH\$0H _ḦT$SH H!HAatAHT$8HH [H\$Ht$WH 3HHHtHE3VH ;@HtH ZHOHFHxHHH$C@qH1cHH\$0Ht$8H _@SH H3ɈKcH Ht!HD8 tHA8uEtHHH [H\$WH aB3HDOH;;DGDC;ukHHuCHH\$0H _H!HAa@SH@H+H3HD$8E3LL$5DYLaHLED\$5HyAIIHIH D*A0ELHuEtIA-LD$5IE+HHHL$8H3H@[@SH@HH3HD$8E3LL$4DQLaHLDT$4IHIH D*A0ELHuLD$4IE+HHHL$8H3CH@[HWHHHeXQH3D@ADA H̃ HAHAXDDL{LlE3HtD uHfL]D^H/D$0QHD$(HQHH D8HeWQHHE3HWHHt B,<vLLAH̃IHWHHHQLAH\$Ht$WH AHWHHHEtEHt@HcH E3<HCHȉ{Htt$H+׊HHuc HaaHt$8HH\$0H _HH Z1<ḦT$SH H!HAatAHT$8HH [H\$Ht$WH 3H@qHفaH1HtEE3VH ;HtH 0VHOHFHxHHHu CAHt$8HH\$0H _@SH HH3DKcH 8 t HA8uHHH [@SH aHوQ;ugHHu CH#HH [@SH HA w"9tD;IcHLH:HH [H\$H|$UHH`Mȸ!E#HvHeHeMH8?P@u>H:HM)HPHHMrHHME(MU$uV3HMYfofsf~E<t=uSH8tGHHHMb))M'?uHx@u܁HeM(M}u3}t=u H`8ufMHUHMHMHuOH}HtHHHHHEHcHHHHHHtSDHMHNHHȊt%A HA:uDHD8tHuފHH\$pH|$xH`]H\$WH0HIHL$ HH<H\$@HH0_H\$WH0HIHL$ HHH\$@HH0_H\$WH0HIHL$ HHH\$@HH0_@SH HHIHH [@SH HHAHH [@SH HHIHH [@SH HHIHH [@SH HHAHH [@SH yH(H:u RH9u HHH [H\$WH A@HD8AZtVH9uH!T$0HT$0AaA1E3H AP6HtH P@xHHHvHH\$8H _H\$Ht$WH yHHg3Ht`H91uLTB<v CE3H ?AP6HtH PHOHFHxHHHHt$8HH\$0H _H\$Ht$WH yHH\3HtU8tQH9u8EE3H AP5Ht"HD8t HA8uHHHHHYH\$0HHt$8H _@SH yH+H9t BvtaHHHH [H\$WH 9 HHt;H:t5E3H AP4HHt 3Ht HcHLHH\$0H _̀yt B<~AH3HHA HAHALAH\$WH HyHt4HAHA%HGH_HHOHHOHGHGHuH\$0H _̋&ШHcH d@HuHH\$WH HHHt?E3H AP 3HtHH NHHHPHxHHu CAH\$0H _HHXUVWATAUAVAWHhH\$HLHd$@)pH\$H)xUI}tAEt EeuH u&HL$0IH uAE DAQE3DAAADEoA%`EwAAɁ#ωMt%;t.ׁ3AƁsZ @ 7HL$00 HMHHHME(EfD$@\$HDEoE3ɅA3HL$0#AE{HME(EHT$0HMfEbHUHL$@THiHM׀8tW8At:P{|$HpxDEof@ ؉\$HQHH3KH_ uH,HL$0zHUHME(EHGHMfEHUHL$@HGHL$@HL$0 ШШ HMHT$0HME'(EHM fES(EHT$@HMfE(u]oDmwIDeϺ!UD#!U!U!UHMHMHMHMHMDeυEte%=u.HL$0!(D$0HL$0fE!(D$0fEEt$%=uHL$0!(D$0fEHL$0~!(|$03ɺ(}E%=CLM!UL`D$ <`t'!UHL$0HeHUHe;(D$0fE9!UHUHMHMHL$0}t|$8~D$8AD Deϋ Шt8t.HMHT$@HL$0D$0S(D$0fD$@'HL$0|$Htx~@ ؉\$HI}tQH|$@t>>u2 HMIHL$0D$0HT$0HL$@ AED$@eE3L!mD9mt_3HM<HDHHMHHL$0D$0HT$0HL$@pt (D$@(u>E3H APi-LHtH @`E3IHM<0}+E%=u{HCHMUHUHL$0D$0(D$0HL$0,fD$0(D$0HUHL$0fD$0(D$0HL$0,fD$0(D$0fD$0,Et]%=uOH|CHMD$0HUHL$0@(D$0HL$0,fD$0iHT$0HL$@H=CHL$@cHCf|$0HL$0LHT$0HL$@HM (HMHzHHL$0D$0(D$0HL$0)fD$0HT$0HL$@E3}oAE3D9ewAEAAEDžt!Et%=tHUHL$@FxHMШt8HHL$@!&8|$Htx~L$H@ ȉL$H+HMШtLHHL$@&L|$Htx~L$H@ ȉL$HHM?|$Htx~L$H@ ȉL$HШtMt(D$@AEf(t$@]oDmwIHL$@@A|EA#=huHT$@HPEukA#=pt=`uX3HM0(D$@HL$0{fD$0(D$0HUHL$0fD$0(D$0H@H%A;uU(D$@HCHHM8HHk}HHv8@RHHcCE3ADAA`AEAAEEAAD#t%3ɋ%A=t H@gEt%3ɋ%A=t H@=EEEA%t/3ɋ%A=tH@HL$@EuA#=xE3AE3EAEAAE%tc3ɋׁAƁu3AƁt/H>HMCHT$@HL$0D$0(t$0HT$@HMj 0)t$@EAAEDž ШEAAAEDžtV3ɋA#=EEt8H ?HMHT$@HL$0D$0(t$0A)t$@Et A#=tZEAAE׋Ɂtlt A#=t*EAAEυtNA#=tt>A#=u2Hq>HMHT$@HL$0D$0|(t$0)t$@ШEAIJAEDžt!3ɋ"<@AEEt H>fEAAEDžt)3ɋ"<3EEt H=/EEEEtN@3EEt2H=HM/HT$@HL$0D$0(t$0)t$@3Ɂ3EEE%t: u2Hu=HMHT$@HL$0D$0@(t$0)t$@s-HM=HMHT$@HL$0D$0(t$06L$HI[@A(sA({IA_A^A]A\_^]̋Ѓ̋Ѓ̋Ѓ̋־Ѓ̋ƾЃ̋Ѓ̋Ѓ̋ Ѓ̋%Ëz%H\$Ht$WH H9AHHtaH!AjHtat]E3H FtAP$Ht0DHH9"#HtH3>HH3HHu CAH\$0Ht$8H _̋½Ѓ̋Ѓ̋ 3``̋Ѓ̋~% ËrЃH\$Ht$WHPH!HAayH8@8Zt3,HH8DA0A w(H HT$@HHHHnHd$ HT$ d$(HL$0H_+HH+H~H `9 t HT$0yHT$0H@HUH;ucH#CH:{ HHt$hHH\$`HP_@SH0HHـ8X8ZHL$ |$(ufHһ8tZ8@t`8ZtHR(D$ H=:HfD$ HHL$ ШH:HE(D$ MHH^HH9HKaШH7HEHH7H oHH0[H\$Ht$H|$UAVAWHHpHE3HLD88e!AHu<[HMTWHMEx(EHM]fEHUeFL}ttH0HMbυt`HZD88tT3HMn[HMHHHME (EHMв]fE8HUHM}~L9>teFt E<(HMrHHME(EHMв)fE(EfEHUHM(EfEHUHMZ(m EAHML9:t?(HHME7(EH`9HMfEz(EfE[EкHM(EHM]fE"HUIL\$pII[ Is(I{0IA_A^]@SH@HH&+ШuHHL$ H 9tUHH 0t02t5uHPHUHL$02HHL$ B"H4HL$ HL$ HG6HL$ iD$ HH@[H\$UVWHHPHHH E8HeHeH ϷE0NweCmEvHGv:Iv,KvMPHk6HM2HN6HA6H06H6΃O7SX_HH *ÃNNGwyFsktJ$t!H5HMHMH*6HHMHHɺH HMH5먃HIv#KvMH5Ht5wH`5kH<5_ORtxStgUtVWtEw1HH HMfH~)EH HR5H65H5H4H4HeeE9L i ]LEHUHM']uH+HME[H1؃IHH @HM7fH~)EHu.HJ3HMH3HMA@]0M8Ct"At_uDEw<u7H3H,4HMHUHME(EfEH>t, HM HHME\HUHMO(E`H>uAt'H3HMt'H3HMrtHt2HML *HLEHU\& HMHHHH\$pHP_^]@SH 3H HH [H\$WH0HH8HAHHL$ ШtbtTtFt8t* ttu[H%=H%4H%+H%"H%H%Hn%H]%uHHL$ D$  _HH\$@H0_HHXHpHx L@UATAUAVAWHhH3)p)xLHy!UMHHu@u@80 8$Deu,ELEHUoHMH9ut E}HLHuHu@u@uD@+A:AM!U+!U(}ϋǃ+tuШGH9utGH=T$uH(EHM߲ fE(EHMHfE(EfEH $EEEEШMtCH=#uH f}HM(EHMHfE(})}LmaH#uHHM`Lm(}>Ű Шt9H9ut H=>#H/#uHHMAAH]HHS8$u*ELEHUoHM H9uFAAHD88AM+#H@80tHHuoHMH/(EHUHMfEH}(u)ut. fuHM(EHUHMfEt(u)uMt. f}HM(EHUHMfEA(u)uE3@Et HD8.tnH+HMuHUHMEHHM(EfED8(t# ~HUHME(u)uFHD8(t[HM#fofsf~M׀tx~M@ ȉM(uHvtHHf@tHM(uϋ`Шt8 < ucEHMMHUHME(u)u2 < u+HM}tx~M@ ȉM(u@t-H-HMHUHME(u)u@t-Ht-HMHUHMEV(u)uD8mtHI-fuHM(u)uD8mtH*-fuHMl(EfEϿEM9.tqA~uFM9/tA HMIHME(EHM fE(EIfE@AFt AEA HM8IM9/t, HM#IEHM_HUHMR }D8mtm (E$E9uI96tnA~uPI91tKHMIHME(EHM fE(EIH8HMsI91tHM[IĺI(|$pL$Is8HI[0I{HA(sIA_A^A]A\]LSHPHMK3L>IK!D$8ISIK!D$HL$ HHHP[H\$UHH`HHMH388?tI8XtHUHHHH9MuH0'H$nH )HMIeLMHHML$ LyHMHHUE끺HMHUHDHH\$pH`]H\$Ht$ UHHPTH s* HM3҉;-. EH?:HH8uOH8u#HMHͩ HH8u먀8$HMu f/!E3H3E3HMв8H}ut s E e }M~ (EBHIHM;H}=EtE(EHUHMfE+H(EfEЀ8@tKHME (EfEH$HM(EHUHMfE(EfEЋu؋MU tH}t uAtA uH} H\8t8@tRHD Zt'u#AuHeHUeHMHUH}uHHt$xHH\$`HP]H\$Ht$H|$UHH`L3DHA8QDVuMH5#LAuAH%A< w*M/LmHcHt HMHM3A@+tA<wLHAHcHMHL$AA:uAMLA:uEt%HtHM#ZHM@Ht2HM~HHMHHHMEHE HMLL\$`HI[IsI{ I]@SH HH p9_u5y_u/HH ZHAH JvHH#CcHH [@SH H0HH [H\$Ht$H|$UHHPHDAAAt  r3HHee HHTt{tmt_tturH4%`H%WHMAH&%HHMHHME(EfE"H$H$H$HMHeet (EfEHMHUHM(EHHHäHE$ H\$`HH|$pHt$hHP]@SH H>HH [H\$UHHPHpHHee8<0<1~-<3~ <4t5<5t,6<w{Ha"HP"H?"H."HMHHϩu+H#"HM6HUHME(E(EHHH\$`HP]H\$Ht$Lt$UHHPDUHH wIHeAADUIEH QD EAAE+7E;"9AEtHAHH AA;vKHeHUAE,AHMEDU`HMY(EHMHfE|(EHM>fEH}(EfE8$u IHe ^fEHMw(EHHfE8t IH4 AHMm(EAHH7EHeHUAD6AE>EDUHMqL5¡AEu2H8&uHLHH H8*uHSHH IH H#CcHt$hHH\$`Lt$pHP]H\$Ht$H|$UHH`E3HHH aAP4HHtH @`3HHHeLMHeLǶd$ HUHM!E!E(EHM fE(EHMHfE(EL\$`IsHI{ I[I]HHXHpHxUATAUAVAWHhHH3H UL8u#SHMIH,6<v9_t D1HA6H A)u(8t D1HA=H ޟAFvD ADGD;tD}A$D#H]ED}EA$9@HhHMHUHMEJH_HM(EfE8tAM HMHHHME (EHUHMfE3HUHME(EH fE HH О<@ԞL!UH΃`H H]HMt$ <`!ULMHUH](EfEA|@HMv HMHHHME (EHUHMfE(E3fEz!ULMHUH]=}w@8umEAD D}VHMWHUsHM}t@8p~M@ ȉMߋ@t)HMHUHMEB(EfE'HM}t@8p~M@ ȉMI9$t=(HMHUHME(EHM)fE(EfEE3H APLHtX`HLIHM'HM(HMH-HHMEi(EHM)fEHUHMH z`<`tEtHUHM' Y@HMtHHM#}t@8p~M@ ȉMߋHM@t#HHM##}t@8p~M@ ȉMMt(EAM' H&L$HI[0Is8I{@IA_A^A]A\]@SH 3HxHH [H\$WH H9Hu2HHXHHH\$0H _̃y$ ÊAH\$WH HQ3HtH:HtHHXH踥HH\$0H _H\$Ht$WH HyHHHXH胥HӄuH~HHXHgHH\$0Ht$8H _̋Q3t BHcHAH\$WHPH3HL$0_`HL$@HHHL$ D$ D$ 'H'H\$`HHP_H\$Ht$WH HzHHEtHH认HzHHDHA H;sRH;v3WH ęAHtH HtHKHtHHCH+HCHs H+HA HC HHCH\$0Ht$8H _H 1u3ÍB< wƒ/HH E3A@%tٍB<w4AADHH A:u֊HH ҘA:uAÃHHXHpHx L@UHH`HHHe!M3HeH!MH{A/1~d9C2HcHtHMHӠH}BHHMdHUHME(E!MHuЄHMu HM>HMHE HtHa;uE|HuHHHE3HM3%H0fH~)EHEHt.{1u(~HM衼HUHME(E)EHtHUHM(EL\$`HI[IsI{(I]H˺HHB΃BZ_ pHHsOD9t^tI/6~/8CHcHbHHӠn?CH+HJCHMЃHHcHӠ*mp?t0@~EBCu7DH HMm ;HHy0t E3H뽃TGSP+;uCHMHfHcHӠƿHu(EH$qhHcHMH( yH ʔHH 01t0΃w(EHUHwH+H (EHUHMfEMHM(,HMEqHUHM$HM,HMEHHUHMHM,HMEHUHM3HM)HMEHUHM(E'H3HMm(EHM fE(EHUHMfE[(ECHMHHcHӠE3HM3zfH~EHEuVMWY/_vHHA`DF~uJK@CHMHHcHӠ@t'HƊHMHHxuـ@u HHcECHMЃHHcHӠ茸H1HM8?u)HHMH8@uHHHHMHHM}CCCoCHM9HHcHӠ6[H}m @SH L HHH [@SH L HHH [H\$H|$UHHPLHHe!UHA$tt=tHHH"HMqH?t HMܿLL >IHULHELEfsf~EA@<$t^H˺lILGA5AtntZtHuIL ILH?tH5HM H0H IL@H HMHMHXHME裵(EHMHfE2(EHH\$PH@]H\$WH@HH $uH譫E3u HL$ >HL$ EtHx8t HHxD$ HHxL%xL-x $HH$HĀA_A^A]A\_^]LSHPIcMKIcL%D$ !D$8IS!D$HHvHHP[H\$H|$UHHPHxH8tW8Zu HeHeEHwjHMŻHrHHMHHME莦&HIHMHMENEв)H蔦H\$`HH|$hHP]H(LQwA@A3A8_u MAL0wA,A<A8$ME2L wAB$I@8PLDMLvE8t|A,Ft&A8Jt/A8K|A8M~A8O~A8QfMLvKMLvA,0< w!A/HLLjv ]I/5~gAM+CA+A+ MELuAA<wREA0AAɁ ʋ A"DAtAt At6S+@&ٺr|MLQuKAA<ML1u0t{A+tlA+t`A+tSA+tDA+t4A+t$A+tA;xph` A 39uMúLtٺ~EAAMËLgt AA"DA}Sº Att t3@At"AtAt Au  H(@SH HsHـ8t$8AtHHHs QHH [@SH HfHH [@SH0HH踣HL$ rHHG}H}HRs8@u HHCsHH0[H\$H|$UHH`HyH s8THeLMHeLLjd$ HUHM!E!E(EHM fE(EHMHfE苡(EHr8@HH趢HortxHM[`HMHݗHHME(EHM'fEEHUHHr8@u HHq:8@tHj#8u H蜢}HHq8@uH\$Ht$ UWATAVAWH$HHH)H3HE3IIHLMue| MtHtH`HL$X3HL$0DB RMHt$0H|$8Ld$@Au Dd$HHuD$HHD$0LHD$PHT$PHhHMHD$(MHD$`HD$ HTHM3HcHtKAt"HuHD$@H;u)x*H;v%{MtqHtyfD&HD$@H;tqfD$FHwLD8d$pt HL$XHH399L$I[0IsHIA_A^A\_]HuHD$@H;ufDd~H\$UVWAVAWH$HH'H3Hp IIHLMuzs MtHtH HL$Xp3HL$0DB QHd$@MHt$0H|$8Au Dt$HHuD$HHD$0LHD$PHT$PH HMHD$(MHD$`HD$ OHMC}HcHtIAt"HuHD$@H;u(x(H;v#uMtkHtyHD$@H;tlHuH|$pt HL$XHp H37H$HĀA_A^_^]HuHD$@H;uD>H\$Ht$ UWATAVAWH$HH%H3Hp E3IIHLMu y~ MtHtH HL$X3HL$0DB kOMHt$0H|$8Ld$@Au Dd$HHuD$HHD$0LHD$PHT$PH HMHD$(MHD$`HD$ lQHM_HcHtKAt"HuHD$@H;u)x*H;v%{MtqHtyfD&HD$@H;tqfD$FHDtLD8d$pt HL$XHp H35L$I[0IsHIA_A^A\_]HuHD$@H;ufDd~H\$UVWAVAWH$HH>$H3HIIHLMu^w} MtHtH`HL$X3HL$0DB MHd$@MHt$0H|$8Au Dt$HHuD$HHD$0LHD$PHT$PHhHMHD$(MHD$`HD$ (MHMw|HcHtIAt"HuHD$@H;u(x(H;v#uMtkHtyHD$@H;tlHrH|$pt HL$XHH324H$@HA_A^_^]HuHD$@H;uD>H\$Ht$ UWATAVAWH$HH"H3HE3IIHLMuuf{ MtHtH`HL$Xc3HL$0DB LMHt$0H|$8Ld$@Au Dd$HHuD$HHD$0LHD$PHT$PHhHMHD$(MHD$`HD$ NHM跉HcHtKAt"HuHD$@H;u)x*H;v%{MtqHtyfD&HD$@H;tqfD$FHpLD8d$pt HL$XHH32L$I[0IsHIA_A^A\_]HuHD$@H;ufDd~@SH0HMttH @IʐH H0[@SH0|LuHA HI DALHc cv#ns2txuWDAuxP1VH @IʐH@H0[@SH0|LuHA HI AHc cvPU2}xuYDAcEHH NdEHH cEHH .dH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXLHAHDHDHu HHLALMBHAB8Et63AB8A0D؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPH\$HAXALLHHHDHu HHLALMBHAB8Mt73AB8IH0L؀9~Aɀa:IBHIJHE+BHIBHH\$EBPE~~HHXHhHpHx AVH IADH3HH t HHxtHALtt ;}ƃ H\$0Hl$8Ht$@H|$HH A^EHHXHhHpHx AVH IDAH3HH t HHxtHAf;tt ;} H\$0Hl$8Ht$@H|$HH A^H\$E3HE~ELIBI9BuAztAA AHH@HHHHA9tAE;|H\$E~hH\$H|$@HE3LIBI9BuAztA$A AH@H@HHfHHA9tAE;|H\$H|$HD$(HAHD$0HA HHLALIHHHHHHHHHHHHHHHHD$(HAHD$0HA HHLALIHHHHD$(HAHD$0HA HHLALIHHHHD$(HAHD$0HA HHLALIHHHHD$(HAHD$0HA HHLALIHHHHHHHHHHD$(HAHD$0HA HHLALIHHH3HHAHAHAHA HA(HA0A8fA@APATHXH`H3HHAHAHAHA HA(HA0A8A@fABAPATHXH`H3HHAHAHA HAHA(HA0A8fA@APATHXH`HHhHD$(HAHD$0HA HLLI3HHAHAHA HAHA(HA0A8fA@APATHXH`HHhHD$(HAHD$0HA HLLI3HHAHAHA HAHA(HA0A8A@fABAPATHXH`HHhHD$(HAHD$0HA HLLI3HHAHAHA HAHA(HA0A8A@fABAPATHXH`HHhHD$(HAHD$0HA HLLI@SH H3H HKHKHK HKHK(HK0K8fK@KPKTHXH`HHhHD$PHCHD$XHC LLKp+HCHH [@SH H3H HKHKHK HKHK(HK0K8fK@KPKTHXH`HHhHD$PHCHD$XHC LLKpHxL@+HCHH [@SH H3H HKHKHK HKHK(HK0K8fK@KPKTHXH`HHhHD$PHCHD$XHC LLKp*HCHH [@SH H3H HKHKHK HKHK(HK0K8fK@KPKTHXH`HHhHD$PHCHD$XHC LLKpE*HCHH [@SH H3H HKHKHK HKHK(HK0K8fK@KPKTHXH`HHhHD$PHCHD$XHC LLKpHxL)HCHH [@SH H3H HKHKHK HKHK(HK0K8fK@KPKTHXH`HHhHD$PHCHD$XHC LLKp-)HCHH [@SH H3H HKHKHK HKHK(HK0K8K@fKBKPKTHXH`HHhHD$PHCHD$XHC LLKp(HCHH [@SH H3H HKHKHK HKHK(HK0K8K@fKBKPKTHXH`HHhHD$PHCHD$XHC LLKpHxL(HCHH [@SH H3H HKHKHK HKHK(HK0K8K@fKBKPKTHXH`HHhHD$PHCHD$XHC LLKp'HCHH [@SH H3H HKHKHK HKHK(HK0K8K@fKBKPKTHXH`HHhHD$PHCHD$XHC LLKp'HCHH [@SH H3H HKHKHK HKHK(HK0K8K@fKBKPKTHXH`HHhHD$PHCHD$XHC LLKpHxLu&HCHH [@SH H3H HKHKHK HKHK(HK0K8K@fKBKPKTHXH`HHhHD$PHCHD$XHC LLKp%HCHH [HHHHHHHH@SH HHH落CHH [HAH"HHH@SH HH`!H`H [@SH HH`!H`H [@SH HH`c!H`H [@SH HH`?!H`H [@SH HH`!H`H [@SH HH` H`H [@SH HH` H`H [@SH HH` H`H [@SH HH` H`H [@SH HH`g H`H [@SH HH`C H`H [@SH HH` H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`kH`H [@SH HH`GH`H [@SH HH`#H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`oH`H [@SH HH`KH`H [@SH HH`'H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`H`H [@SH HH`H`H [HIH:u At@SH HHSHH [H\$WH HHH ,H'HHHH#H\$0H _H\$Ht$WHH{H3H$HHH8H{HSHL$8@HoHHD$@HK LKLHT$0H M LD$0LCHL$(HL$`HD$ MHL$`KH$pH$|$Pt HL$8H@蹸H$H3L$I[Is I_H 8H $H H H H\$Ht$WH`HcH3H$PHHH8HcHSHL$8@HWHHD$@HK LKLHT$0H M LD$0LCHL$(HL$`HD$ MiHL$`H$XH$|$Pt HL$8H@衷H$PH3L$`I[Is I_H H\$Ht$WH`HkH3H$PHHH8HkHSHL$8@H_HHD$@HK LKLHT$0H M LD$0LCHL$(HL$`HD$ MHL$`w(H$`H$|$Pt HL$8H@詶H$PH3L$`I[Is I_H H\$Ht$WHHsH3H$HHH8HsHSHL$8@HgHHD$@HK LKLHT$0H M LD$0LCHL$(HL$`HD$ MHL$`H$hH$|$Pt HL$8H@豵H$H3L$I[Is I_H $~H\$Ht$WHH{H3H$HHH8H{HSHL$8@HoHHD$@HK LKLHT$0H M LD$0LCHL$(HL$`HD$ M-HL$`$H$pH$|$Pt HL$8H@蹴H$H3L$I[Is I_H ,}H 0}H (}H\$Ht$WHHsH3H$HHH8HsHSHL$8@HgHHD$@HK LKLHT$0H M LD$0LCHL$(HL$`HD$ MAHL$`3(H$hH$|$Pt HL$8H@豳H$H3L$I[Is I_H 0|''''''''''''xHxu2Ãu |t3҉ HHH|HP4xHxu2Ãu |t3҉ HHH|HP4xHxu2Ãu |t3҉ HHH|HP4xHxu2Ãu |t3҉ HHH|HP4ppppppppHHHDA:t HuHt2 ,Et HuHHɀ90tD8uHɊHHˆuÍBL [[uEtD6H\$H@Hl$PH A^_^HHXHhVWAVH HqHHHPD6&DE HIH`H+-HG8"tHD$@H;GrHG@2>uEtD6H\$H@Hl$PH A^_^HHXHhVWAVH HqHHHPD6&DE HIH`H+_-HG8"tHD$@H;GrHG@2>uEtD6H\$H@Hl$PH A^_^HHXHhVWAVH HqHHHPD6&DE HIH`H+,HG8"tHD$@H;GrHG@2>uEtD6H\$H@Hl$PH A^_^HHXHhVWAVH HqHHHPD6&DE HIH`H+W,HG8"tHD$@H;GrHG@2>uEtD6H\$H@Hl$PH A^_^HHXHhVWAVH HqHHHPD6&DE HIH`H++HG8"tHD$@H;GrHG@2>uEtD6H\$H@Hl$PH A^_^HHXHhHp WH HqHHA HP.&HIH`Hq,HG8"tHD$0H;GrHG2>ut.H\$8Hl$@Ht$HH _HHXHhHp WH HqHHA HP.&HIH`H+HG8"tHD$0H;GrHG2>ut.H\$8Hl$@Ht$HH _HHXHhHp WH HqHHA HP.&HIH`Hq+HG8"tHD$0H;GrHG2>ut.H\$8Hl$@Ht$HH _HHXHhHp WH HqHHA HP.&HIH`H*HG8"tHD$0H;GrHG2>ut.H\$8Hl$@Ht$HH _HHXHhHp WH HqHHA HP.&HIH`Hq*HG8"tHD$0H;GrHG2>ut.H\$8Hl$@Ht$HH _HHXHhHp WH HqHHA HP.&HIH`H)HG8"tHD$0H;GrHG2>ut.H\$8Hl$@Ht$HH _H\$Hl$WH HHhHuN  GuH{tppH-3IcPc,RHC{(YCAS,, D.{A*HtIxu |ujAy K0ARCA< t(<#t<+t<-t <0u?K09K03K0-K0 'K0!A.@k@k0>k<@kT Ht6HCKAhHCH0t&C(H\$@Hl$HHt$PH A_A^_H\$Hl$WH HHhHu uH{tppH-DcPc,NHC{(UCAS,, K08K02K0,K0 &K0 Hs0@s@{8s<@sT Ht[HCKAHC9s,t{,u+ppwC(H\$0Hl$8Ht$@H _H\$Hl$Ht$WAVAWH 3HH9hub8H9itL=f@xxu |HLs4Hs8| A..HCkPk,CAHC9k(CAS,, D.{A*HtISxu |ujAy K0ARCA< t(<#t<+t<-t <0u?K09K03K0-K0 'K0!A.@k@k0>k<@kT Ht6HCKAhHCHtp)C(H\$@Hl$HHt$PH A_A^_H\$Hl$WH HhHu#HytppH-l=cPc,NHC{(UCAS,, E.f{B*HtI<xu |upAy K0AXCBA;t,#t!+t-t 0u?K09K03K0-D c0'K0!A.@k@k0>k<@kT Ht:HCfKBfXHCH]t;C(H\$@Hl$HHt$PH|$XH A^A]A\HHXHpHxLp AWH 3HH9huH9qtppL=&6Dw!sPs,HC9s(CBS,fA+fZwCBBL8΍B8C,tkt^t(tHFHH+ f{B*tHS8H4HC HC HHωK8s8f{B*tHS4HC HC HK4K0ىK4CBA;t0#t%+t-t0K0|K0vK0pD s0jK0dHs0@s@{8s<@sTPDCBCTHhH t HhH9ptHhAf;u{(C(tZHCfKBfFHCpp#C(H\$0Ht$8H|$@Lt$HH A_[HHXHhHpHx AVH 3HH9hudH9qtppL54o!sPs,HC9s(CBS,f+fZwCBBL0΍B 1K,tkt^t(tHFHt*f{B*tHS8H<HC HC HHωK8s8f{B*tHS4HC HC HK4K0ىK4CB;t2#t(+t-t0K0K0zK0t k0oK0iHs0@s@{8s<@sTUSBCTHhHAH9Au@8qtC(+{(&C(HhH@HhHfHhHteHCfKBf?HC9s,t{,u1ppC(H\$0Hl$8Ht$@H|$HH A^HHXHhHpHx ATAUAVH 3HH9huPH9itL-1Dg!xx$u |HLs4Hs8| A..HCkPk,fCBfHC9k(CBS,fA+fZwCBBL(͍B )K,H.~C,b$t{tot(t;HFH.)f{B*Ht H色xu |9.}I>E.f{B*HtI蠭xu |upAy K0AXCBA;t,#t!+t-t 0u?K09K03K0-D c0'K0!A.@k@k0>k<@kT HJ t:HCfKBfXHCH5t@C(H\$@Hl$HHt$PH|$XH A^A]A\HHXHhHpHx AVH 3HH9hu( H9qtppL5r.o!sPs,HC9s(CBS,f+fZwCBBL0΍B0C,tkt^t(tHgGH(f{B*tHS8HHC HC HHωK8s8f{B*tHS4HC HC HK4K0ىK4CB;t2#t(+t-t0K0K0zK0t k0oK0iHs0@s@{8s<@sTUSBCTHhHAH9Au@8qtC(+{(&C(HhH@HhHfHhHtZHCfKBfAHCppC(H\$0Hl$8Ht$@H|$HH A^ Q0 Q0 Q0 Q0 Q0 Q0 Q0 Q0 Q0 Q0 Q0 Q0ø9xu 9|t3ø9xu 9|t3ø9xu 9|t3ø9xu 9|t3ð̰̰̰̋xu |uÃu |t2Ëxu |uÃu |t2Ëxu |uÃu |t2Ëxu |uÃu |t22222̃|u 9xt3̃|u 9xt3̃|u 9xt3̃|u 9xt32222̃a8̃a8̃a8̃a8̃a8̃a8̃a8̃a8̃a8̃a8̃a8̃a8̊AA< t(<#t<+t<-t <0uI0I0I0 I0 I0̊AA< t(<#t<+t<-t <0uI0I0I0 I0 I0̊AA< t(<#t<+t<-t <0uI0I0I0 I0 I0̊AA< t(<#t<+t<-t <0uI0I0I0 I0 I0̊AA< t(<#t<+t<-t <0uI0I0I0 I0 I0̊AA< t(<#t<+t<-t <0uI0I0I0 I0 I0AB t,#t!+t-t 0uI0I0I0 I0 I0AB t,#t!+t-t 0uI0I0I0 I0 I0AB t,#t!+t-t 0uI0I0I0 I0 I0AB t,#t!+t-t 0uI0I0I0 I0 I0AB t,#t!+t-t 0uI0I0I0 I0 I0AB t,#t!+t-t 0uI0I0I0 I0 I0@SH 3Hp tCHhSAH tHhHxtHhyu C(C(M2H [@SH Hًxu |tu |ua3Hk tAHhSAH tHhHxtHhyu C(C(2H [@SH 3H tCHhSAH tHhHxtHhxu C(C(E2H [@SH 3H tHHhDCAHAH9AuytC($K(C(HAHhHDHhH2H [@SH Hًxu |tu |ud3H tDHhSAHAH9AuytC(σK(C(HAHhHHhH~72H [@SH 3H tHHhDCAHAH9AuytC($K(C(HAHhHDHhH2H [@SH ATHIBHhP tHhHxtHhtf;uK(C(H [@SH Hًxu |tZu |tLDCBCTHhH tHhHxt HhA tf;uK(C(H [@SH ATHIBHhP tHhHxtHhsf;uK(C(H [DIBLATHhHAH9AuytA@((AH(!A@(HAIhHfD IhHHыxu |tYu |tKDBBBTHhHAH9AuytB(&J( B(HAHhHfDHhHDIBLATHhHAH9AuytA@((AH(!A@(HAIhHfD IhH@SH 3H(tAHhSAH tHhHxtHhjtu C(C(H [@SH 3H`tAHhSAH tHhHxtHhtu C(C(H [@SH 3HtAHhSAH tHhHxtHhsu C(C(H [@SH 3HtFHhDCAHAH9AuytC($K(C(HAHhHDHhHH [@SH 3HtFHhDCAHAH9AuytC($K(C(HAHhHDHhHH [@SH 3H@tFHhDCAHAH9AuytC($K(C(HAHhHDHhHH [@SH ATHIBHhP tHhHxtHhpf;uK(C(H [@SH ATHIBHhP tHhHxtHhof;uK(C(H [@SH ATHIBHhP tHhHxtHhoof;uK(C(H [DIBLATHhHAH9AuytA@((AH(!A@(HAIhHfD IhHDIBLATHhHAH9AuytA@((AH(!A@(HAIhHfD IhHDIBLATHhHAH9AuytA@((AH(!A@(HAIhHfD IhH@SH HAHQAATHHf PtdHhH tHhHxtHh#pu C(C(HCHKAHCu2H [@SH HAHQAATHHf PtdHhH tHhHxtHhou C(C(HCHKAHCua2H [@SH HAHQAATHHf PtdHhH tHhHxtHhnu C(C(HCHKAHCu2H [H(HAHDAAATHHfB @thHhHAH9AuytB($J(B(HAHhHDHhHHBHJAHBu52H(H(HAHDAAATHHfB @thHhHAH9AuytB($J(B(HAHhHDHhHHBHJAHBuV2H(H(HAHDAAATHHfB @thHhHAH9AuytB($J(B(HAHhHDHhHHBHJAHBu2H(ATATATATATAT̃I83HA0A@AHCHk(LhHD$ LHT$PIDK0AtAuLDƲ0I3Hȍ}|C0AtLDƲ IDžAH\$XHl$`Ht$hH0A_A^_H\$Hl$Ht$ WAVAWH0AAHAd]ACt3DGSt_XtoZtac3>g~itgnt[ot8ptstutRxuePMjUA8A< EǺ1I0AtK0H]I0 E3KX(u2[|u D9xB{@8S03fD$P3D$RAt.AtD$P-AtD$P+AtD$P IKAAuAtEE2AEut*DxHCHk(LhHD$ LHT$0ID蛉K0AtAuLDAIw3H跄}|C0AtLDAIwAHL$8H3fL\$@I[8Ik@IsHIA_A^A]A\_H\$Hl$Ht$ WATAUAVAWH@HAUH3HD$8ABXHٍnD~d[;Ct2DGSt^;toZtac34 g~itgnt[ot8ptstutRxuePM$`UA8A< EǺ1I0AtK0HTI0 E3G&u2l{@_S03D$03fD$4Do At2At G-fD$0At+At fDl$0IKBAf+fAuAtEE2A0f+fAEut/fDd|0If;t f;t2A$afD|0Is4+sP+ uLK(DHhA^vHCHk(LhHD$ LHT$0ID藈K0AtAuLDAIv3Hׂ}|C0AtLDAIuAHL$8H3cL\$@I[8Ik@IsHIA_A^A]A\_H\$Hl$Ht$ WATAUAVAWH@HuRH3HD$8ABXHٍnD~d[;Ct2DGSt^;toZtac32g~itgnt[ot8ptstutRxuePM ^UA8A< EǺ1I0AtK0HRI0 E3E%u2|u D9xi{@_S03D$03fD$4Do At2At G-fD$0At+At fDl$0IKBAf+fAuAtEE2A0f+fAEut/fDd|0If;t f;t2A$afD|0Is4+sP+ uLK(DHhA|sHCHk(LhHD$ LHT$0ID赅K0AtAuLDAI/s3H}|C0AtLDAIsAHL$8H3aL\$@I[8Ik@IsHIA_A^A]A\_H\$Hl$Ht$ WATAUAVAWH@HOH3HD$8ABXHٍnD~d[;Ct2DGSt^;toZtac30 g~itgnt[ot8ptstutRxuePM \UA8A< EǺ1I0AtK0HPI0 E3D%%u2l{@_S03D$03fD$4Do At2At G-fD$0At+At fDl$0IKBAf+fAuAtEE2A0f+fAEut/fDd|0If;t f;t2A$afD|0Is4+sP+ uLK(DHhApHCHk(LhHD$ LHT$0IDK0AtAuLDAIep3H }|C0AtLDAI9pAHL$8H3M^L\$@I[8Ik@IsHIA_A^A]A\_̀yA*t HQ4MHA HA PQ4y I0ډQ4@SH yA*HtHQ4H [铔]t$xu |uC4y K0؉C4H [ÀyA*t HQ4ՔHA HA PQ4y I0ډQ4̀yA*t HQ4)HA HA PQ4y I0ډQ4@SH yA*HtHQ4H [o^^t$xu |uC4y K0؉C4H [ÀyA*t HQ4鱕HA HA PQ4y I0ډQ4fyB*t HQ4HA HA PQ4y I0ډQ4@SH fyB*HtHQ4H [F^t$xu |uC4y K0؉C4H [fyB*t HQ4逖HA HA PQ4y I0ډQ4fyB*t HQ4ЖHA HA PQ4y I0ډQ4@SH fyB*HtHQ4H [%_t$xu |uC4y K0؉C4H [fyB*t HQ4LHA HA PQ4y I0ډQ4̸ ̸ ̸ ̸ ̸̸̸̸HHHHH}HuHmHeÃ2ttt!tt u)øøøÃttރt3A;,A-A/AO1A2A4Ac6A7A9Aw;A=A>H\$Ht$WH HA HHA HxHt3HwHt*DAt7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$WH 3HT$8H\$8Hu2xu |uZ_ȋO</tt7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$Ht$WH HHY HA HpuSX ^2O<,t>t7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$WH 3HT$8H\$8Hu2xu |u[W]ȋO</tt7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$Ht$WH HHY HA Hp,uUP[2O<,t>t7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$WH 3HT$8H\$8Hu2xu |4uTXZȋO</tt7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$Ht$WH HHY HA HppuRX2O<,t>t7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _H\$WH 3HT$8H\$8H&u2xu |xuQWȋO</tt7ttt(t&3"tt tHHt*HtHtH;uHcG(HG(G(fO(G@H\$0Ht$8H _̋Q0tQ0E3AP̋Q0tQ0E3APa̋Q0tQ0E3APE̋Q0tQ0E3AP̋Q0tQ0E3APE̋Q0tQ0E3AP)̋Q0tQ0E3AP̋Q0tQ0E3AP)̋Q0tQ0E3AP ̋Q0tQ0E3AP̋Q0tQ0E3AP ̋Q0tQ0E3AP̺A< AQ8i̺A< AQ8̺A< AQ8̺A< AQ8e̺A< AQ8̺A< AQ8̺A< AQ8a̺A< AQ8̺A< AQ8̺A< AQ8]̺A< AQ8̺A< AQ8H\$Ht$WH HA HHA q8DAHHHcCT茇H?u HHHHcCPH\$0Ht$8H _H\$Ht$WH HA HHA q8DAD>D2HcH @HːK4H\$HH0_H\$WH0|HuHA HQ DBDA4HIHT$@3H|$@DG SbxPHD$@HHHKx{f8$uud}p ;DC9>2HcH @HːK8H\$HH0_HA HA PQ8HA HA PQ8HA HA PQ8HA HA PQ8H(H Hu88>2H(H(( H(H9uU8>2H(H(H9u-8=2H(H(H9u8=2H(H8:D$`uDDJBH8ÉD$ #u7u=2H8:D$`uDDJBH8ÉD$ U%u|75=2H8:D$`uDfDJBH8ÉD$ 'u;7<2H8:D$`uDfDJBH8ÉD$ (u6<2@SH y,HHI<%|u]Hd$0,0< wGA HT$0~Y~3HD$08$u)xuH3A`  ǃ| ǃ||uXHKHT$8Hd$8A YxHT$8H HBHCux#:$ud} ;O H [5;2@SH y,HHI<%|u]Hd$0,0< wGA HT$0zX~3HD$08$u)xuH3A`  ǃ| ǃ||uXHKHT$8Hd$8A XxHT$8H HBHCux#:$ud} ;O H [4:2@SH y,HHIf%|ubHd$0f0f wHA HT$0X~4HD$0f8$u)xuH3A` ǃ| ǃ||uYHKHT$8Hd$8A *XxHT$8H HBHCu x$f:$ud} ;O H [392@SH y,HHIf%|ubHd$0f0f wHA HT$0W~4HD$0f8$u)xuH3A` ǃ| ǃ||uYHKHT$8Hd$8A WxHT$8H HBHCu x$f:$ud} ;O H [282̰̰̰̰H(y,ty,t2X82H(H(y,ty,ts2,82H(H(y,ty,tG282H(H(y,ty,t272H(H(y,Hty,t172]|uRxuIHc LLHJN HN M;t*AHB I@tt tuHB IѰH(H(y,Hty,t`172]|uRxuIHc LLHJN HN M;t*AHB I@tt tuHB IѰH(H(y,Hty,t062]|uRxuIHc LLHJN HN M;t*AHB I@tt tuHB IѰH(H(y,Hty,tH062]|uRxuIHc LLHJN HN M;t*AHB I@tt tuHB IѰH(̰̰̰̰@SH0|xuwHc cv/P52YDA/4ְH0[@SH0|xuwHc cv.42YDAHL$@H3H\$hHt$pHP_H\$Ht$WHPHJH3HD$@yTHtnAP~gHqH3t~DHT$4d$0HL$0AHv~u1DD$0Et'HCLK(HhHD$ HT$4 ;{Pu'K(!HCLI(DCPHhHSHHD$ j HL$@H3H\$hHt$pHP_H\$Ht$WHPHrH3HD$@yTHtnAP~gHqH3t~DHT$4d$0HL$0AHv覭u1DD$0Et'HCLK(HhHD$ HT$4;{Pu'K(!HCLI(DCPHhHSHHD$ HL$@H3H\$hHt$pHP_H\$Ht$WHPHH3HD$@yTHtnAP~gHqH3t~DHT$4d$0HL$0AHvάu1DD$0Et'HCLK(HhHD$ HT$4;{Pu'K(!HCLI(DCPHhHSHHD$ HL$@H3+H\$hHt$pHP_H\$Hl$VWAVH0E3HD8qTAPHqHALKHL$PfDt$PHILc@fHc~WHhDD$PH t HhL9pt HhArf;uK(C(HH;{Pu'K(!HCLI(DCPHhHSHHD$ H\$XHl$`H0A^_^H\$Hl$VWAVH0E3HD8qTAPHqHALKHL$PfDt$PHILc@zHc~WHhDD$PH t HhL9pt HhA膸f;uK(C(HH;{Pu'K(!HCLI(DCPHhHSHHD$ H\$XHl$`H0A^_^H\$Hl$VWAVH0E3HD8qTAPHqHALKHL$PfDt$PHILc@莦Hc~WHhDD$PH t HhL9pt HhA蚷f;uK(C(HH;{Pu'K(!HCLI(DCPHhHSHHD$ H\$XHl$`H0A^_^H\$Hl$Ht$ WH03H@8iTAPHqHLKHL$@fl$@HILc@裥HcЅ~WHhDD$@HAH9Au@8itC(&K( C(HAHhHfDHhHHH;{Pu'K(!HCLI(DCPHhHSHHD$ H\$HHl$PHt$XH0_H\$Hl$Ht$ WH03H@8iTAPHqHLKHL$@fl$@HILc@賤HcЅ~WHhDD$@HAH9Au@8itC(&K( C(HAHhHfDHhHHH;{Pu'K(!HCLI(DCPHhHSHHD$ H\$HHl$PHt$XH0_H\$Hl$Ht$ WH03H@8iTAPHqHLKHL$@fl$@HILc@ãHcЅ~WHhDD$@HAH9Au@8itC(&K( C(HAHhHfDHhHHH;{Pu'K(!HCLI(DCPHhHSHHD$ H\$HHl$PHt$XH0_H\$Hl$Ht$WAVAWH HILHDPA AtHHxuEH|$`IcHD?'H;tuHAH t HHxtH u  u5?*u8HH t HHxtH?еu IL;u?uEtD?H\$@Hl$HHt$PH A_A^_H\$Hl$Ht$ WAVAWH HILHDPA AtHHxuEH|$`Ic/'L&H HAH9AuytA)MA GH+ALH H;LBK6L9I$HI$LpI$xt/ L;tD7>uEtD>H\$PHl$XHt$`H A_A^A]A\_HDHBA%@UHH`HE0HELMLE(HUHM Huz"JMtHEHUHELMHEHUHELEHE HEHUHE(HEHM0HEHEӖH`]@UHH`HE0HELMLE(HUHM Hu5!JMtHEHUHELMHEHUHELEHE HEHUHE(HEHM0HEHEGH`]@UHH`HE0HELMLE(HUHM Hub!JMtHEHUHELMHEHUHELEHE HEHUHE(HEHM0HEHE;H`]@UHH`HE0HELMLE(HUHM Hu JMtHEHUHELMHEHUHELEHE HEHUHE(HEHM0HEHEH`]@UHH`HE0HELMLE(HUHM HuJ JMtHEHUHELMHEHUHELEHE HEHUHE(HEHM0HEHEH`]@UHH`HE0HELMLE(HUHM HuJMtHEHUHELMHEHUHELEHE HEHUHE(HEHM0HEHEWH`]H\$Hl$Ht$WATAWH0H|$pIIHLMuHuM3HMHM;vQ:LL$pLEHI̋0H$HD$(HD$xHD$ 赚uo8"0LL$pLHID8H$HD$(HD$xHD$ dD7uH;u8"u@D86yu*"Ar+HHl$XH\$PHt$`H0A_A\_HHXHhHpHx ATAUAWH0E3IIHLL9l$pMuHuMAHMHM;vQLL$pLEHI̋0H$HD$(HD$xHD$ up8"0LL$pLHID8H$HD$(HD$xHD$ 訚fDlwuH;uC8"uA9D87yfD/u*"" HHl$XH\$PHt$`H|$hH0A_A]A\H\$Ht$ UWATAVAWH$HHtH3HE3IIHLMuJMtHtH`HL$0G3HL$PDB MHt$PH|$XLd$`Au Dd$hHuD$hHD$PLHD$pHT$pHhHMHD$(MHD$8HD$ \HMHcHu/HLD8d$HHD$0AtMHu3t/HLD8d$HHD$0HD$`H;upxpH;vkMtHt_yD&VHD$`H;uHDd7EHtHD$`H;u2HDd7]LD8d$Ht HD$0*D$0H,LD8d$Ht HL$0HH3L$I[0IsHIA_A^A\_]H\$Ht$ UWATAVAWH$HH@H3Hp E3IIHLMu]MtHtH HL$03HL$PDB MHt$PH|$XLd$`Au Dd$hHuD$hHD$PLHD$pHT$pH HMHD$(MHD$8HD$ HMHcHu/HLD8d$HHD$0AtMHu3t/HLD8d$HHD$0HD$`H;upxpH;vkMtHt_yD&VHD$`H;uHDd7EHtHD$`H;u2HDd7)LD8d$Ht HD$0*D$0HLD8d$Ht HL$0Hp H3L$I[0IsHIA_A^A\_]@SH0HMtHHHH BtGEEDHH t8tA3AADOЀ w!@σ;@9EDDHAH̍G<w @σG<w @σAA;t-A;s(E A;r u;vAAH@8HHH H@t@88t?Au}L+HEAtj"AuA\At'}t HEHKHtHHQ}t HEHKHtHH*Atހ}t HMHCHtH HL\$@I[0Is@I{HIA_A^A]A\]H\$Hl$Ht$ WATAUAVAWHPE3AEHL9*u&HOHtHH3cEt A@"wHHL$(gL'ELd$ A$ID$ HHHu@A@f-uf+u HHH DŽ$jA`A0Af DFAfA;f:s A+fA;f;f;$s +f;f;s +pfA;kp f;s A+Qf;M f;s +4f;0p f;s -f  f; A f;cHvf;A f;Kf f;A f;1Hvf;A f;Hvf;A f;Pf;A f;Hvf;r{A f;HFf;rgA f;@f;rQA f;f;r;A f;H&f;r'A f;s~f;sA+u)CfvCfvACfw ɾt EuyD~sHAHHHBfAt:EDDHHftDf9t?AA0AEDDHAH3AAA`ADfA;f:s A+fA;yfA;jf;s A+ofA;jf;s A+Pf f;GH f;s +0 f;'H f;rAvf;H f;r̍Avf;H f;rAvf;H f;rf f;H f;rAvf;H f;vAvf;H f;^Pf;H f;DAvf;r{H f;0AFf;rgH f;@f;rQH f;f;r;H f;A&f;r'H f;sf;sA+u)CfvCfvACfw A;t0A;s+ E;r u;vEDHHHHE3HLd$ ftf9tt-@uL'D8l$@CHD$(2A֋Kto2"@uAa@t)D8l$@t HD$(HOHtHHWD8l$@t HD$(HOHtHH.@tAD8l$@t HL$(HWHtHH AL\$PI[0Ik@IsHIA_A^A]A\_H\$Ht$H|$ UATAUAVAWHH@H:EEHu&IHKHtHH3Et A@"wHHM`L+E3HULm8A}IEEnHz@~LEAՋ豢HU HHHA#Ņt H@8H3E@@-u@+u H@8HHLm8AG< w @ǃ#G<w @ǃG<w @ǃAt EuDE{>HHHH BtOEEDHH t8t AIMcI3ILȍOЀ w"DA>@9EDDHAHčG<w DAG<w DAAAt:E;s5A M;ruAH;v IIELH@8HHpL#H@t@88tC@u}L+HEI֋Gtt"@uMg@t,}t HEHKHtHHHX}t HEHKHtHHH,@tIހ}t HMHCHtH HIL\$@I[0Is@I{HIA_A^A]A\]H\$Hl$Ht$ WATAUAVAWHE3AEHL9*u&HOHtHH3AEt A@"wHHL$x]L'ML$A$ID$ HHHu@A@f-uf+u HHHD$tjf DŽ$ 0D$Pf `D$(p AD$hf DVD$0p D$X AD$8 Af D$pf D$@p D$`PD$HZD$lD$ D$$ D$,*D$4@D$D$lf;rvf;\$ *D$$f;rbf;\$,D$4f;rNf;\$<D$Df;r:f;\$LD$Tf;r&f;\$\sf;\$ds DE+AAu-CfvCfvACDfwA AAt?E;s: M;ruAH;vIIEL0HHHHE3HL$ftf9tZ@u"L'D8$xHD$xgI֋t\"@uIq@t1D8$t HD$xHOHtHHHbD8$t HD$xHOHtHHH1@tID8$t HL$xHWHtHH IL$I[0Ik@IsHIA_A^A]A\_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ lHE3DHH\$@H0_H\$WH0AILHHL$ DHE3DH[H\$@H0_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ |HE3DH{H\$@H0_H\$WH0AILHHL$ THE3DHsH\$@H0_HLAMtIHHLAMtIHHQHtHHHQHtHHHHHHHHH\$WH Ht&Hx~L‹ϺHHcH xH\$0H _H(.H(øH̸H̍A< w0ÍA<wWÍA<w7Ã̺0f;f:s +f;k`f;sB f;rҺf;]B f;rf f;GB f;rPvf;3B f;rPvf;B f;zPvf;B f;bPvf;B f;Jf f;B f;0Pvf;B f;Pvf;B f;Pf;B f;Pvf;rwB f;PFf;rcB f;@f;rMB f;f;r7B f;P&f;r#B f;s}f;ou(Afv AfvÍAfw HHHHH(H Ht8t:H(H(HHftf9tVH(H(H9u52H(H(H9u 2H(̺0f;f:s+úf;[`f;[B f;rֺf;EB f;rf f;/B f;rPvf;B f;rPvf;B f;rPvf;B f;jPvf;B f;Rf f;B f;8Pvf;B f; Pvf;B f;Pf;r{B f;Pvf;rgB f;PFf;rSB f;@f;r=B f;f;r'B f;P&f;rB f;HH\$WH HcMtIHy# 5x#H\$0H _H\$WH HcMtIx~ ԐHx# x#H\$0H _@SH0ALHHL$ 3HAD33H0[H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ HHADHGH\$@H0_@SH0ALHHL$ HE3D3H0[H\$WH0AILHHL$ HE3DHH\$@H0_H\$WH0AILHHL$ HE3DHH\$@H0_H\$WH0AILHHL$ dHE3DHcH\$@H0_H\$WH0AILHHL$ (HE3DH'H\$@H0_@SH0ALHHL$ HAD3'H0[H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ HADHH\$@H0_H\$WH0AILHHL$ XHADHoH\$@H0_H\$WH0AILHHL$ HADH;H\$@H0_@SH0ALHHL$ HE3D3H0[H\$WH0AILHHL$ HE3DHH\$@H0_H\$WH0AILHHL$ tHE3DHH\$@H0_H\$WH0AILHHL$ 8HE3DHWH\$@H0_H\$WH0AILHHL$ HE3DHH\$@H0_@SH0ALHHL$ HAD3H0[@SH0ALHHL$ HAD3H0[@SH0ALHHL$ SHAD3SH0[@SH0ALHHL$ #HE3D3;H0[@SH0ALHHL$ HE3D3H0[@SH0ALHHL$ HE3D3H0[@SH0ALHHL$ HAD3H0[@SH0ALHHL$ wHAD3H0[@SH0ALHHL$ GHAD3gH0[@SH0ALHHL$ HE3D3/H0[@SH0ALHHL$ HE3D3H0[@SH0ALHHL$ HE3D3H0[@SH 3HHL$0HD$0P_T$0EHtH [@SH03HHL$ HD$ PHT$ HHEHtHHH0[@SH HHuB3fu3HL$0HD$00LD$0H*!NbLHBzՔIIHHH?HHiʀD+AkdKH [@SH HHu3mu3HL$0HD$0LD$0H*!NbLHBzՔIIHHH?HHo@H;iʀHD+AkdKH [@SH 3HHL$0HD$0PT$0EHtH [@SH03HHL$ HD$ PHT$ HHEHtHHH0[WH\$Ht$WH HU3HHtHHdHEHH\$0Ht$8H _H\$Ht$WH H 3HHtHHHEHH\$0Ht$8H _@USWHH@HHHu=H@_[]úA$跮HtЃ?}΁?ne8HM8ee0}AHM蜈HM0軈 =}wY+M0HU M H誏[9E8mH1]EHU )E Hw(C 7HHX ;9E8tHtMM0+C +}0AAk<+ȉ yA<<AD AADADKAAkHcE8HUH)EHҌC ]HH賌Hc;9E0tHtE E8HC HcE H+IIHHHHH?Hk<+ȉ y AAHCHCH9{tH;CwH3HUStHFЈEP<0u@׈UPϊE`L}EAA B< wƒ0!B<wƒWB<wƒ7A;wKAM;tAEIHCHCMH9{tH;CwH3HRMȃtHF@NJЈEPL}HIHH:HCHCH9{tH;CwH3HmRtHF@HMXHEPL;uC<0u?AHCMHCH9{tH;CwH3H$RtHFЈEP<0u@׈UPB< wƒ0!B<wƒWB<wƒ7A;wDAL;mtAEIHCHCH9{tH;CwH3HQtHF@NJЈEPEu!HMׄ]``HKHCH9{tH;CwB<vHt HJH=}HCHEHHCH9{tH;CwH3HQȃtHF@ψMP@ǀEtPt et pu E`@8}`DHCHCH9{tH;CwH3HPtHF@<-EPA,+u2HCHCH9{tH;CwH3HuPtHF@NJȈEPD0ukrHCHCH9{tH;CwHHBH;BtHHBu@ψMHHKHCH9{tH;CwvH HAH;tHHAL;tfIC@88uLH;uL;tPE;~ mD;}\AɃADE;D;|D+EUEE]@Nj)"LEXHMHH$LEXHMHHH$H@A_A^A]A\_^]LD$HL$USVWATAUAVAWHHhL 3MHMtH9zu謘eHBAHEHHBH9zt H;BvIAI;AtHIAfA;uHEHUHEAHEfMAHErFEwELsHCH9{t H;Cv HHBH;BtHHBfA;uAfM'FuUMf-AABfAu=LsHCH9{t H;Cv!H HAH;AtHHAfA;ufUBAfA_BfA@0@}PDf;LKIAHCH9{tH;CvLI@I;@tnHI@fA;tYAfAuJLsEHCDuPH9{t H;Cv H HAH;AtHHAfA;ufULMHUUAHKHCH9{tH;Cw"fA+fA;wH HAH;t HHAUMeA0LeЋωMMDfA;ucA@ADHCHCH9{tH;Cw9H HAH;At,DHHAfE;t0AfUfD;ufUAE`jAA`EAAA E`/fA;\f:s A+Ff;)fA;8f;U`s A+"f;f;s -f f;p f;s -f  f; f;s - f f;p f;s -f  f; f;s - nf f;ep f;s -f If f;@p f;s -f $ f; f;s - f f;p f;s -f Pf;Zf;s -Pf;f;s - f;*f;s - n@f;riJf;s -@Pf;rKf;s -2f;r-f;s#-f;s+u)BfvBfvBfw A;wYEM;tAMLCAHCMH9{t H;Cv#H HAH;AtHHAfA;u׋MfUHuHLmXD}PLuHMeHH;LCHCH9{t H;Cv$HHBH;BtHHBf;ufMѸ0M;unf;uiuELCA+HCuH9{tH;Cw=H HAH;At0DHHAfD;t0AfUfD;uD@׸0fU`AAAf;f:s ƒ0fA;pf;jf;s +hf;_A f;s +Hf f;?A f;rHvf;+A f;r̍Hvf;A f;rHvf;A f;rHvf;A f;rf f;A f;vHvf;A f;^Hvf;A f;FPf;A f;,Hvf;r{A f;HFf;rgA f;@f;rQA f;f;r;A f;H&f;r'A f;sf;sA+u)BfvBfvBfw A;wUEM;tAMLcHCH9{t H;Cv H HAH;AtHHAfA;ufU0LmXD}PLuMeuEu!HMcAbHKHCH9{tH;Cw*AfA+f;wH HAH;tHHAAHCHEHHCH9{t H;Cv$HHBH;BtHHBf;u@fMEtPt et pu AE‰}DAPLCHCH9{t H;Cv$H HAH;AtHHAf;uf-fUʸAf+DMfuALCHCH9{t H;Cv$HHBH;BtHHBf;ufM0@}`f;ueE`HCHCH9{tH;Cw:H HAH;At-HHAf;t0fUf;ufM0f;f:s +f;k`f;sP f;rҸf;]P f;rf f;GP f;rBvf;3P f;rBvf;P f;zBvf;P f;bBvf;P f;Jf f;P f;0Bvf;P f;Bvf;P f;Pf;P f;Bvf;rwP f;BFf;rcP f;@f;rMP f;f;r7P f;B&f;r#P f;s}f;ou)AfvAfvAfw Ƀ sdCE`DBDUE;EHCHCH9{t H;CHHBH;BtHHBf;AQDUĺ0AAA`Af A Af A Af f;@f:s ++fA; fA;jf;s A+f;f;s +fA;p f;s A+fA; f;s A+fA;p f;s A+fA; f;s A+ifA;dp f;s A+Jf f;Ap f;s -f % f; f;s - f f;p f;s -f Pf;Zf;s -Pf;f;s - f;*f;s - o@f;rjJf;s -@Qf;rLf;s -3f;r.f;s$-f;sA+u)AfvAfvAfw Ƀ sGHCHCH9{t H;Cv%HHBH;BtHHBfA;uϺ0fMBLmXAPDMDUDE`LuMeD}PuEtAEuZHMm\tALCHCH9{t H;Cv$HHBH;BtHHBf;ufMAHKHCH9{tH;Cw"fA+ȸf;wH HAH;tHHAM;tfIF@88uLI;uM;tPE;~ mD;}\AɃADE;D;|E+EUEEu@Nj)"LEHMHFLEHMHHhA_A^A]A\_^[]LI[IsMCWATAVH@ICISICL%}HIKL3AB:'$tB:'$HCH{HCtH;CwH3H!ȃtHF2HAHuHKH{HCtH;CwA<vHɃt HJHMHCHD$pHH{HCtH;Cw*H;H!tHGHL$ Y2A3AB:'$tB:'$HCH{HCtH;CwH3H!ȃtHF2HAHuHKH{HCtH;CwA<vHɃt HJHLH\$`Ht$hH@A^A\_HL$ XLMCSH@ICISICHIKLE3EAA:$%tA:(%AHBHBL9ZtH;BwL IAI;AtHIAuAIA IuHJHBL9ZtH;BwvH HAH;tHHAHBHD$`HHBL9ZtH;BwLI@I;@tHI@uAA MAA:,%tA:4%HBHBL9ZtH;BwL IAI;AtHIAuAIA IuHJHBL9ZtH;BwvLIHI;tHIHH@[HL$ JXHL$ 9XLI[IkIs MCWATAUAVAWH@3ISICIKHICLL%D}AfB;'$tfB;'$L{HCH9kt H;Cv H3Hȸf;tL~HfAHuHKAHCH9ktH;CwfA+fA;wHHJHhHHCH$HHCH9ktH;Cv1HL$ &SH;Hf;tLfAHAfB;'$tfB;'%L{HCH9kt H;Cv H3Hȸf;tL~HfAH uHKHCH9ktH;CwfA+fA;wHHJHwGL\$@I[0Ik8IsHIA_A^A]A\_HL$ 6RLI[IkIs MCWH@ICISICH=IKLE3۽EA[AfA;8D%tfA;8L%HZHBL9Zt H;BvA L IAI;AtHIAf;uAIfA IuHJHBL9ZtH;Bwf+f;wH HAH;tHHAHBHD$`HHBL9Zt H;BvA4HL$ xULI@I;@tHI@f;uAfA MAfA;8X%tfA;8h%HZHBL9Zt H;BvA L IAI;AtHIAf;uAIfA I uHJHBL9ZtH;Bwf+f;wH HAH;tHHAH\$PHl$XHt$hH@_HL$ TLI[IsMCWAUAVH@ICISICL-HIKH3B:.$tB:.$HCH{HCtH;CwL3IsȃtIF2HƈHuHKH{HCtH;CwA<vHɃt HJH*FHCHD$pHH{HCtH;Cw*H3HtHFHL$ S\2<(tHL$ S;HCH{HCtH;CwH3HtHF2HӈH< t?HKH{HCtH;CwA<vHɃt HJHOEHHt<HKH{HCtH;CwA<vHɃt HJHEsA)D87tf?tXAЃ vAvAv _HCH{HCtH;CwH3HtHF2A:uD87H\$`Ht$hH@A^A]_LI[MCWH@ICISHICHIK3L }B: <%tB: @%HCH{HCtH;CwLI@I;@tHI@u2HˆHuHKH{HCtH;CwvH HAH;tHHAHCHD$`HH{HCtH;CwHHBH;BtHHBu2Ɉ(t-HL$ MQHL$ qM=HCH{HCtH;CwHHBH;BtHHBu2ɈHHS t:HKH{HKtH;Kw<vH HAH;tHHAHHt7HKH{HKtH;Kw<vH HAH;tHHAyA)D8tl?t^AЃ vAvAv _HCH{HCtH;CwHHBH;BtHHBu2ɈA:uD8H\$PH@_LI[IkIs MCWATAUAVAWH@3ISICIKHICHL%D}AfB;&%tfB;&%L{HCH9kt H;CvL3IfA;tM~HfHuHKAHCH9ktH;CwfA+fA;wHHJHt?HCH$HHCH9ktH;Cv-HL$ FL~H3HfA;tL~ff(tHL$ LCL{HCH9kt H;CvH3HfA;tL~HfH-t=HKHCH9ktH;CwfA+fA;wHHJH>HHt:HKHCH9ktH;CwfA+fA;wHHJH>>yf?)tnf9/t_AЃ vAvAv _L{HCH9kt H;CvH3HfA;tL~ff)uf?)L\$@I[0Ik8IsHIA_A^A]A\_LI[IkIs MCWAVAWH@3ISICIKHICHL MDvAfB; t%tfB; |%LsHCH9st H;Cv LI@I;@tHI@fA;uHfHuHKHCH9stH;CwfA+f;wH HAH;tHHAHCHD$pHHCH9stH;Cv4HL$ JHHBH;BtHHBfA;uff(tHL$ IVLsHCH9st H;Cv HHBH;BtHHBfA;ufHHt>HKHKH9stH;KwfA+f;wH HAH;tHHAHHt>HKHCH9stH;CwfA+f;wHHJH; tHHJf?)tuf97tfAЃ vAvAv _LsHCH9st H;Cv HHBH;BtHHBfA;uff)uf?)H\$`Hl$hHt$xH@A_A^_H\$Hl$Ht$WAVAWH 3H-HLA:/%t :/%u:HFHFH9^tH;FwL6I#tIFHAHuHl$HH\$@Ht$PH A_A^_H\$E3HELAA:%t A:%uBHBHBL9BtH;BwLIBI;BtHIBuAIA IuAH\$AH\$Hl$Ht$WAVAWH 3H-HLAf;/%t f;/%uFHFHFH9^t H;FvL6I/f;tIFHfAHuHl$HH\$@Ht$PH A_A^_H\$E3HELAfA;&t fA;&uPHBHBL9Bt H;BvA%LIBI;BtHIBf;uAIfA IuAH\$AH\$Hl$Ht$WAVAWH 3H-gHLA:/%t :/%u:HFHFH9^tH;FwL6I tIFHAHuHl$HH\$@Ht$PH A_A^_H\$E3HELAA:%t A:%uBHBHBL9BtH;BwLIBI;BtHIBuAIA IuAH\$AH\$Hl$Ht$WAVAWH 3H-[HLAf;/%t f;/%uFHFHFH9^t H;FvL6I f;tIFHfAH uHl$HH\$@Ht$PH A_A^_H\$E3HɝELAfA;%t fA;%uPHBHBL9Bt H;BvA%LIBI;BtHIBf;uAIfA I uAH\$AH8Lʃ3tmtMt:t"8 A8 8HT$ LD$ IɈD$(|tHT$ LD$ IɈD$(Vq38 돃tNt=t u838 AA-38A3A A3H8H8Lʃ3tqtPt9t(H8H?H H8H?HT$ LD$ ID$(`sHT$ LD$ ID$(U|3H늃tZtIt+uD3H8H?H I438H?I3IHI3H8H\$Ht$H|$ UATAUAVAWHHPE3EEHL9"tL9bu)nsHCHt L9cuD 3 Et A@"wHHMHCHEHHCL9ctH;CwH3H1 tHFAAHE@σx~LEAYHEHHQA#ƅt2HCHCL9ct H;CvAH;HtHG@EA@@-u@+u0HCHCL9ctH;CwH;H~t HG@AMA G< w @ǃ#G<w @ǃG<w @ǃtAEEiHCHCL9ctH;CwgL;IЃtUIGHuLEDDHCHCL9ct H;CvAfH;HAt HG@MAHAEAEDHKHCL9ctH;Cw$B<vHtHJHU3AMc3HIHU8LOЀ w DA&G<w DAG<w DAAAtqE;slA M;ruAH;v IIELHCH{HCtH;Cv@2|H;HtHG@HU8AV@2IE3LcHCL9{tH;CwG<vH@A;t LbHS2@uAHEH;CtHCD8D8}t HE؃HCHL9{D8I֋ktzuj"@uMm@t/D8}t HE؃HCHt L9{uD8H^D8}t HE؃HCHt L9{uD8H/@tID8}t HM؃HKHt L9{uD9IL\$PI[0Is@I{HIA_A^A]A\]H\$Hl$Ht$ WATAUAVAWHE3AEHL92tL9ru)ui.oHGHt L9wuD03Et A@"wHH$HGMH$HAHGL9wtH;GwYH7HfA;t HFf;\$XD$`f;r*f;\$hs#f;\$ps DAAAu-CfvCfvACDfwA AAt~E;sy M;ruAI;v IIELHwHGL9gt H;GvA*HHAH;AtHHAf;tںAHOHGL$L9gtH;Gw!f+޸f;wHHAH;tHHA@u/L;otHGD D8$H$I֋T6S"@uI}@t7D8$tH$HGHt L9guD HnD8$tH$HGHt L9guD H7@tID8$tH$HOHt L9guD!IL$I[0Ik@IsHIA_A^A]A\_HHXHhHpHx ATAVAWH MMHHMtVH|$`H+LIA:+t:u]HGHHGtH;GwH7HptHF2HAII;uH\$@Hl$HHt$PH|$XH A_A^A\2H\$H|$MILMt]LL$(L+HHAA:t:uOIAIyIAtI;AwMI@I;@tHI@u2HA HH;uH\$H|$2H\$Hl$Ht$WATAUAVAWH E3MMHHAMt_H|$pH+Af;+tf;ugHGHGL9ot H;GvAL7IUf;tIFAHfAHI;uH\$PHl$XHt$`H A_A^A]A\_2H\$Ht$H|$3IILDMtcLL$(L+fA;tf;u^IAIAI9qt I;Av$MI@I;@tHI@f;uIf HL;uH\$Ht$H|$2HHXWH@LA8HQHLHWHH3@@x蚏HKpLD$XH @8|$PtHtC@8{2t;HCxHCxHHHu`OUH@D$X@2H\$`H@_HHXWH@LA@HQHLHWHH3@@x:HKxLD$XH @8|$PtNtI@8{:tAHHHHHuNsTH@D$X@2H\$`H@_HHXWH@LA8HQHLHWHH3@@xrHKXLD$XH@8|$PtEt@@8{4t8HC`HC`HHHuNS HCh@D$X@2H\$`H@_HHXWH@LA@HQHLHWHH3@@xHK`LD$XH@8|$PtEt@@8{H$H$IWHfE;tHKAHS H$MEuL;t {4uEtHD$0HChH$H@A_A^A]A\_^]H\$UVWATAUAVAWH03DH@8qH(HAxHAxL@Mu9V?2H AH(H(HHL@MuW9?2H AH(H(HA`HA`L@Mu9>2 HAh AH(H(HAhHAhL@Mu8>2 HAp AH(H(HAxHAxL@Mu8Z>2HH IH(H(HHL@Mu[8>2HH IH(H(HA`HA`L@Mu8=2 HAhH IH(H(HAhHAhL@Mu7=2 HApH IH(HHLALIHHLALIHHHHD$(HAHD$0HA HHLALIHHLALIHHLALIHHLALIHD$(HAHD$0HA HHLALIHHLALIHHLALIHHHHHHHHLALIHHHHHLALIHHLALIHHLALIHHLALIHH@SH aHH3LAH4DB cHHc c(c0fCCC,H [3HHALAHA8AAHA A(A,A0HHaHLALIMtAHHaHLALIMtAHHaHLALIMtAHHaHLALIMtAH@SH LH3Aa(LADB LI HL c,Hc8c@cHHD$PfC0C2CDHHHCpHD$XHCxHH [@SH LHAJ3Ia0LA LI(DB HTx c4Hc@cHcPHD$PfC8C:CLHHHCxHD$XHHH [HD$(L3ALALI HQ(HQPQ0Q4HQ8Q@QDQHHAXHD$0HA`HHQhHQpHD$(LAJ3ILA LI(HQ0HQXQ8Qss AEDAA6EtEDA96t"AAAALHLALI E;uEtA>ss AE|AA6DDAC AIDssAEDA`A6@WA>LI^;A63IMtGHu '0HL;wHEL3T'" -EEDDLAAA IHL I E;u!A;6I~EHHDEHDAE6HE3HT$0E3HL$8DD$ D$@EF$EuD;F!dDABD$@3EʅEAAstVD;uAAKdDCȉL$@HD$8C EABDDIHЋHCHBTDH ;ƋD$@ut@AsCD;uAdDAAD$@AAËTDHЉTDD$@H څuDD$ AsHT$0AE; Dd$$D3IAMtEHu %.HL;w HT$DXL3 g%" +D+d$,HRDd$$D$(D+tkAE"tYtWEEtODDDAAAALIHLALI E;uEtA>ssAEDA3A6A6EtEDA96t"AAAADHATH DE;uEtA>ss AE|AA6HH3iL$I[0Is8I{HIA_A^A]A\]HDLtHE3ED9t(@AAATI AHLʉQI E;uEtAssELAHEIHLD$$D\$ E3ɺs2H̋HAH‰H ADLЋLALLT$D$ DH\$Ht$WH 3H9qt2HAqfq@qHq q(@q,q0@80u y[t3HCCq[H{HK Z[u2HK%8HA8CHC8*u H@{HCHXDHo[HKIt@HH?H H@IɁ;DA0AEMDDL$ AEىL$$@AHAD$pHH$Et HDHtEuEt[-t%=tDL$ D\$x=u:@7@8$tEu8\$ptADL$ D\$x DL$ D\$xËL$$HHt9AVIHI#HH;9AA+A+A+(IA8^t@H?H @gEAA@rHAAMHAA$HHL$xEt HDHtEuEt9t=t =u"D @A8\$xtEu 8$uDAAHIHAVHHH#HH;v%HɁ;~ j~AHHI#HH#It0@ŁH H HH#H4H H N@ ω 3H$H0A_A^A]A\_^]H\$Hl$Ht$WATAUAVAWH0H$DAEALъFA\$?҃A+D;w29vDAE3D9!vA3EAAH HEAE{ECAuFB|ABLH HEAE3EtC|ED"E;uHG|AGlA+AA+EAKIEDCTH#HALI#HLEu DuAE2E3EtC|AD"E;uAIDH$H\$`Hl$hHt$pH0A_A^A]A\_HE3D8BtAI?LÄAADL u33ELtAQ D$t3̸H;vH 3tB 3tBHAHAHAH+HAH+HH\$UVWATAUAVAWH$Hp HH3H` DLEBHL$XHT$pHыIE3DPE҉D$TLJEHA^&D;EEEABD+LHBDT$PHLL$xHD$hA+LRL$0M;:A EtzEEAATHiʚ;AHLTI E;uLL$xEt6Pss!PDTDPADPEDPDPEthEEt-AAAċTHLቌTDPI E;uEt.AssADTDPADP EDPEEAC AID$HM;EAD$8ȉD$@;ˋG3҉D$<ȋA""A#"HLÍHH CH "HHLHHuEDP EEELAAATIHLTI E;uEPss$PDTDPADPEDPAATLIDPMt@HTL;wHL3"DPE EELAAATIHLTI E;uA;DHTELHHDHTIDHL$`EHT$HDEAEDD$DEE"A‹4u!E;EzDDAEʅEAAstfE;uAAJDC ȉC EAHHBHC HBDH ;tHT$H딅tNAsE;uADAAAAӋHЉDH څuDD$DAsHL$`HT$HAE;EIDPMt@HTL;wHL3f"zDPtAL$@L^@+L$D;EDG3Dl$8AEA""A#"ًHLÍHH >H "HHLHHuEDPEEELAAATIHLTI E;uEt?Pss$PDTDPADPEDPADPATLIDPMt@HTL;wHL3L"`DP EEELAAATIHLTI E;uA;DHTELHTELDDEAEHHDEHT$HEAAtu!E;EzDDAEʅEAAsthE;uAAKDCȉCEAH֋ȋHBHCHBDH ;tHT$H뒅tNAsE;uADAAAAӋHЉDH څuAs7HT$HAE;EIDPMt@HTL;wHL39"MDPDd$DDl$8E+&Dd$D&D$RDL$P+L$HL$PD$8DL$0D+t@AIH."uuE3DuLEDHQDE"A9DuLEE3DHHQDAMHxtEtEELAAAIHLI E;uEhss$DDADBE3DuLEDHPHD$pLD$XHAD8ptAI?L0AAD0AUDt$H$tAEuA AL$Dt$HtAȋr+A;DS#|$0Dt$H\$0Ht$8H _3H9̋AËAËA0E3x~{AP~%t ;ti t3ËA(tQtQ;IEII(-t?t6ttt't'I"tt ׺HÊA,HHH̋A0E3x~{AP~%t ;ti t3ËA(tQtQ;IEII(-t?t6ttt't'I"tt ׺HÊA,HHH̊AÅA3QH ҉QH̊ÅA%ÊA%ËA0ËA0@SVWH H>H3H$H Bu(E3HNE3DT$ LD$$DM?tDEtE3H^EEHfAAH AHHL‰I E;uEtssDDE3DT$ LD$$DH>2gL$D6A~H^LBD HI>u'E3LD$$E3DT$ DHc>tDEtE3EEfDAAH AHHL‰I E;uEtssDDE3DT$ LD$$DH=2A;L$L$L$HFt LjLD ELzDLE3H$PAAډL$ EAlu;KDT$L$ EڋE߃stQ;uȍSDT$ щT$ LL$$M EALLA L MEI A;΋L$ uEtCs;uDT$HL$ HT$$HEË LDL$ I EEustlA;DLD$$IHN<H$PL$L$L$L$H$H36H _^[D2HLu+E3LD$$DE3HDT$ <HÃtH$uH$HH$E3H$EHyEAAËH AHHLʉI D;uH$EtAss"ELAH$H$HEE3LD$$DT$ H7;2̋HH\$UVWATAUAVAWH$HHH3H̉T$(DL%E3LD$,DD$ F&A&EDG3Dl$$AEH< "BL'Bt'HLHL$DD$@B'HL$DHHLHIL$@D$Du 3A6~EEr3M^DDHAAAI AHHL‰I E;uE1Ass EDAE3ɉt$@LD$DA6I92A6A~I^LAIMtGHu \0HIw HT$D3AϿ*"u#3LD$DE3ɉt$@A6H 9h_EES3LDDAAH AIHL‰I E;uEAss EDAE3ɉt$@LD$DA6H82;Mnt HT$DMD DL|$DIE3HT$0AAىEfDË E33H蟗@@ wtmtat+t2g3@8ySH$HĀA_A^_^]H\$UVWAVAWHHHAH3HEHIIMAA;fD{Ht"eHUH EȉC(HMD38kDLE3I/MH0 HM3fCC$HM؋C tS$HMC(tk3DNLEHEAHEIHE蹵tJHc}~ +HcUċMH HHSwAA;v"u͓ 2_ FfD{s 3fDfCt,Hd$(HEE3HD$ E33I+tHcEHCAHMH3XQH$HĀA_A^_^]H\$UVWAVAWHHH?H3HEHIIMAA;fD{Ht"eHUH EȉC(HMD3TiDLE3IKMHL HM3fCHC(HHMHHC HHS(HMHC0Htk3DNLEHEAHEIHEɳtJHc}~ +HcUċMH HHSwAA;v"uݑ 2_VfD{s 3fDfCt,Hd$(HEE3HD$ E33I;tHcEHCAHMH3hOH$HĀA_A^_^]H\$UVWAVAWHHH=H3HEHIIMȑAA;fD{Ht"eHUH EȉC(HMD3dgDLE3I[MH\HM3fCHC HHMHHCHt~HS HMHC(Htg3DNLEHEAHEIHEݱtFc}uHMwKAA;v"u 2]5nfD{s 3fDfCt*Hd$(HEE3HD$ E33IStECAHMH3MH$HĀA_A^_^]@UHHpH<H3HEHMЅu H uxHUHMtVLE3HUۏtBDUD]L$0DMDEUMDT$(D\$ tuݎ XHMH3LHp]@UHHpH`;H3HEHMЅu H uHzHUHM>tWLE3HU"tCDUD]L$0DMDEUMDT$(D\$ fsHu# e融HHMH3KHp]@SH@HD$xE EHD$p DH$DD$\$xD\$pH@[r@SH@HD$xE EHD$p DH$DD$\$xD\$pH@[rHD$8E EDHD$0 DT$8DHD$(DT$0DDT$(ZrHD$8E EDHD$0 DT$8DHD$(DT$0DDT$(*r̋HHHLAHHLA̋HHHLA̋HËHËHËHËHËHHHLAHHHH@SH H9Ht H H H [@SH HH úH#H [H9Ë g@SHPHHH [HcLHHA?IH BD8u JLKND(3M u13HL$ DB$UbHCD$ L$0HD$@IA 3HP[@SH`HHH yZHcLHHA?IH BD8uS WLKND(3M u>3HL$ DB8aHCD$ L$0HD$@IL$PA I03H`[̋ g@SHPHHH YHcLHHA?IH BD8u觊 LLKND(3M eu33HL$ DB0aHCD$ L$0HD$@IA 3HP[̋ f̋ f̋ f̋ e̋ f̋ e@SHPHHH YHcLHHA?IH BD8u߉ LLKND(3M qu33HL$ DB0M`HCD$ L$0HD$@IA 3HP[HHXHhHpHx AVH MIHHV0OLHHσ f^HHt 10H%%8"t3E3H3ɉ00^IH\$0Hl$8Ht$@H|$HH A^@SH H9Ht H H H [H(H(H("yu=w 菈2H(H(H"Hy~g2HcIH HȰH H(H\$Ht$WH L3AAuSMtGAAfv fafwfAx:tDEI@IHEf91tf9\tf9/uf9qt@@fff#иf f Mte.IvHHtPH-H]t9H*H]t&H'H]tH$H]uf@Ht$8ff8f fff H\$0H _HHH@SH H3҉fAfv fafw:fy:u,f9Qu^2!fAfw UH [H@SH Hu2`.uHHtHH\t9H H\t&H H\tHHs\uH [E3HHtH Afv fafw fz:tAHJHEfD9uf:\tf:/ufD9Bt2H3Hf9AuHfA\fA/fD9 tfD9upfD9ItfD9AubfD9At[fD9ItTHAftHfA;t fA;tHf9t1Hf9t(ftfA;t fA;tHf9tf9Pu2f\t f/t3øH\$Hl$VWAVH@H1H3H$0HHZE3HI„(軄AHL$ HD0YHHt 蘄($菄8"uQ腄E3H3ɉ(YHHHt2HHfD94GuHt HtH;wAH趲@H$0H3BL$@I[(Ik0IA^_^H9@SH HH oH#H [@USHHhHUHډM Hu螃!跃3HMDB$=ZEЋEMKC HcU uZ r txX;`V}PHLTR?HHHID8t-HE U(HELM(HEU0LEHEHU0HM  躈Hh[]@USHHxHUHډM Hu讂!ǂ3HMDB0MYEMEKC HcU uh 耂 txX;nU}PHLbQ?HHHID8t-HE U(HELM(HEU0LEHEHU0HM  ȇHx[]@USHHxHUHډM Hu躁!Ӂ3HMDB8YXEMEKMC K0HcU uj 肁 txX;pT}PHLdP?HHHID8t-HE U(HELM(HEU0LEHEHU0HM,  ʆHx[]@USHHxHUHډM Hu辀!׀3HMDB0]WEMEKC HcU ux 萀 txX;~S}PHLrO?HHHID8t-HE U(HELM(HEU0LEHEHU0HMz  ؅Hx[]@SH HHu a7Hd$0HT$0WHL$0u |H2HL$0{H [@SH HHu 7Hd$0HT$0EWHL$0u {HHL$0{H [@SH HHu 7Hd$0HT$0VHL$0u _{HHL$0F{H [@SH HHu 7Hd$0HT$0VHL$0u {HbHL$0zH [ /zH9 t HH;u3H̸csm;t3ËH\$Hl$Ht$WH HE3HHu3HHHHH;t 98t HH;uIHtHxHtHu L@GHHkHspH0HLAHH;u8s8tw8tf8tU8tD8t38t"8t8uOCFC=C4C+C"CCCCHcS׉sHL@GHkH\$0Hl$8Ht$@H _2H(auu =@t2H(@SHPH<)H3H$@HٹS{LHPHwYLL$@E3HT$@ H$4 HH;t HfuA+D$3DD$0LL$0LD$ IDBHT$@|H$@H39HP[H\$Hl$Ht$WAVAWH0Hٹ`3u =?AH-?AL\HT3Ʌ>L5%?f5&AIA}yAuLVIHHfA94NuHAH̋=̉ =H&HыH3ƒ?HL&HAй@?+HI3E3HALL+IIH;MGMtIHHIM;uHHa&H3@C?HHH )CH\$WH H/&HH3 C?HHu3H{HH\$0H _L%LAй@?+IM3L BHDuHuHHEHH}@LM@HD$ E3H}H3HbL}@AHUHIHHu Kx{ 8:NHHEHHLM@HD$ AuE@ȉS;HHM;HߋVHU8H}8HRttHM81HU8HHH9:t H@HH98u ;HH:HM8sH}8HsH\$`H0A_A^_^]H\$UVWAVAWHH0ADvqw)}HBAH3fuH5:3H:Htf9>uHHEHH}@LM@HD$ E3H}H3HL}@AHUHIHHu v{ 8:NHHEHHLM@HD$ qAuE@ȉ9HH9HߋVHU8H}8HrtHM81HU8HHH9:t H@HH98u 9HH9HM8rH}8H}rH\$`H0A_A^_^]EH H%'uEH H%/tHHXHhHpHx ATAVAWH L|$`MILHI'IHtLI@2;"u@@"@H7IHtH3HË8tIHtHH@t@u@ t@ uHt GH@2;; t; uH;MtI>II$3H;\t;"u1u@t {"uH 3@@Ht\HIutD@u< t;< t7t+HtH TtIHHtHIHiHtHI%MtI&I$H\$@Hl$HHt$PH|$XH A_A^A\HHXHpHxL` AWLT$03II2IHtLHDA"fD9!uEAAHIMt fAIHftEuf tf uMt fApH@A\f91f9 tf9 uHf91HtLHHAHfD99tfD9!u7Au@t fD9auH @D@MtfE8IIuft/@u f t$f tEtMtfAIIHrMtfA0II*HtH2HH\$Ht$H|$ Ld$(A_HH6HH 6HHHHHHHH@SH HH nH#H [@SH HH nH#H [H 3HH9t HRHH:uH 3HH9t HRHH:uHH!HH!HH!uCnCnHHHHH5H5H5H5@SH HH mH#H [@SH HH mH#H [H( |H(2@SH HLLH;r3uHHEHH}@LM@HD$ E3H}H3HXL}@AHUHIHHuAp{ 83NHHEHHLM@HD$ AuE@HG3=3HU8H}8HKltHM8lHH}8l?HU8HHH9:t H@HH98u 23H}8H2kHH}8kH\$`H0A_A^_^]H\$UVWAVAWHH0ADvYo8u*H:AH3PmH523H2Htf9>uHHEHH}@LM@HD$ E3H}H3HL}@AHUHIHHun{ 83NHHEHHLM@HD$ VAuE@H11HU8H}8HjtHM8jHH}8j?HU8HHH9:t H@HH98u x13H}8Hw1fjHH}8ZjH\$`H0A_A^_^]H a1H a1H(H:Hu 3H:H(H(H:Hu WH:H(@SH Hs:3Hu+H9m:u3ju%H J:HEHH [@SH H3:3Hu+H9:u3uH :HEHH [H\$WH 3H9=9t3HpyHHu'HHuH9H93iHhH\$0H _H\$WH 3H9=y9t3CyHHu'HHuHP9HA93hHhH\$0H _3=tHHH€<uHHʊuE3Af=tHHHfD9QuH QHfuH\$Hl$Ht$WAVAWH03L<=tHHH@84uHHȊuHJiHHtlLA86taHHA84.uHA>=t5HiHHt%MHHh3ɅuHI?IgLHI3rgH3fgH\$PHHt$`Hl$XH0A_A^_E3Ht$ E33qH\$Hl$Ht$WAVAWH03Lf=tHHHf94AuH AHfuHJhHHtpLfA96tdHHfA94nuHfA>=t5HhHHt&MHH'3ɅuII?IfM4nH3lfH3`fH\$PHHt$`Hl$XH0A_A^_E3Ht$ E33 pHt;H\$WH HHHHfHHHuHeH\$0H _Ht;H\$WH HHHHeHHHuHeH\$0H _kugvH\$Hl$VH@H56HHd$8AHd$03҃d$(3LHd$ iHctɺH gHHt[Hd$8AHd$03L3ɉl$(HD$ Sit13H 3dHH>s3H\$PHl$XH@^HdLH\$Hl$VH0H5B5Hupsd$(AL3Hd$ 3eHctغHLfHHtKLAl$(33HD$ et-3H`3=dHH>u3H\$@Hl$HH0^HdkMHH eMHH 銛HHH<uHHHfu.H@f.LȍU@LH;teu*H@ssf_tmHLLÍU?:t6uJHsDftf,u9HLLú:uyf,fI^0H\$PHl$XHt$`H0A_A^_E3L|$ E333YE3L|$ E333XE3L|$ E333XE3L|$ E333X@SH {DAЀɃt6t9t tR?XAAD AH [H(HHH;LDH~AJAHB A@ J0AH0B@A@@JPAHPB`A@`MJpIAHHuAJAHB A@ J0AH0B@A@@HBPI@PakyH(@SHPH@H3H$@كw:Ht5HD$0D$(LHD$ 3A3NtHT$0z3H$@H3"HP[@USVWATAUAVAWH$HHHH3H0L3HT$HIH\$XMLHHu%3H0H3HHA_A^A]A\_^[]iHAUt$0HHL$8LHHHL$@LIHD$P7f?Cu0f9wu*LHIPMtA6ITHHE3HfD9 wuHsLLIM+B+uHuHD$@LL+B+uHu{Kz3HDHL$`Au}ELD$`L|$8HL$`It'`t[LD$`I>E3MHHfD9;AJLHL$0Mƺ-#HH= LD$0fDl0AHHtI^fD9+tHfD9+HtH$H3H$XHA_A^A]A\_^]3Ll$(L$@AHD$ UHT$0HtHtALw(t@IHD$0H+DA+u HEutLD$0HHHuAI ~=0I8CE3Ll$ E333KH\$ UVWATAUAVAWH$H0HH3H ILcH莗LpAHT$`HLHD$@HD$(HD$ UvE3Hu,3H H3uH$H0A_A^A]A\_^]IHL$`HHD>(LL+F A+u HEutHD$`HHfD9XuH ]@LHwHL>(LD$`HL$HHSJ(HL$PO L$DHHw3ۅf|$`CIEHD>(uf9\$bu J(HpJ(AD$@DÉG HIO A9G tIAI HHH|EtIcIII Au|G EHzD$0LAD$(AQHEp3HD$ )it@HMpf!HIHcHrHHMpA2˅AOA_G AAGGAu D$@G AuD$@GKdHHHDH3ۅt8HD$HHD>(J(>HD$PIJ(>D$DG H H9L$Ht?HD>8u.HL>8N>HL>0D>J(7>H\>(J(AEHD>(Ll>8SE3H\$ E333GHHH 3HH H HËH(vzA3G tH(HiH @ƒ?+3HH3Hl=H\$LL$ WH II H 6H\$0H _H\$Ht$LL$ WATAUAVAWH@IM IHHu H@H5oDA?HH3:AHH|$0HH3ZHH\$ HGHLH|$(LH\$8A@AA+3HH3HH\$ H;r H9uH;sJHH;tHg<H5ƃ?D+A3HH3IHHIHHQIHHQr΃?H33HHHCBIHH5DA?LL3 AIHBH3HM;uI;t MLL$(ILL$0LHD$8HHD$ H$3ۋ~H\$pHt$xH@A_A^A]A\_HH(HLHH LHP HH?H(HH(HLHH LHP HHH(LHAй@?+HI3HH̋HHHLA̋HËHËHHH@SH HH :H#H [H\$Hl$Ht$WATAUAVAWH H3LH8HuH7LHI3I3EA?AHHHFHLLA@AHA+HI3HH;raH9tHAI3HHHM@LIEA?AHLHBM3I3IHM;uI;tMILHHtH9LLA?D+IAHI3HH)IHHiIHHi3H\$PHl$XHt$`H A_A^A]A\_̋ i|HHXHhHpHx ATAVAWH H3LHHuLA@H+ALK?H[I3M3HI3IHL;H+ݸHH;HHGAD$HHDH;rED$HH3L8Mu(H{AHH~3L8MQLM AI?A+HHHI+I3HIHIL;HGHtHHHIH;uLAÃ?+IGHAHI3MAIHʃ?+IHH3HH)AHtƒ?+IIL3HLBHVƒ?D+IAHH3H3HYH\$@Hl$HHt$PH|$XH A_A^A\̋ z̋ )z̋ !zHH!@SH HH c7H#H [HH BHH }LIKH8ICICMKMCIS D$PIKD$XH8E3LHuHAH9u$Ha@ƒ?+IL3MMHMH3HT$HL$UHH@HEHELM(HEHELEHUHM E(EH@]HHJH(H 1TH =HH(̰̰H( H(ð̰@SH H@3ۃ?+HH3H>H~HHHSH [3 @SH H OuH <H H;t 5H$H u|5H q3H`g5H dHUT5H YHJA5HDH [̰E3HALL+IIH;MGMtIHHIM;uHuH ~{H(HH(H(H(H=H FU|H(裌H(HyH6HEAH(H 5HxHEHHH(@SH HHH5HzHEBHZH [@SH 轊HXHt HG:5LMtHT$(vHT$(gHHtt;t+؀|$8t HD$ 3H\$PHl$XHt$`H@_HdHHXHPUVWATAUAVAWH0LL HE33LhHH'Eut=AwHt$pHtm3H)u3H#2IILƄt6<"uIMIAuHtH+II3HHu*31IH1Ht^3H跕uPHgHHD8.t"tIID8(uD)313H{u3x1Hp1H'H=3HRtH=ߍHG1IHMtLIG8,33LÄt8<"uHIHAuHtH+ʺH$,HHu)3=*3H3*HtS3HuEI.d;t"tHHǀ?u3)3Hu3I6)H&H=`3HuI> HJI3H)H\$PHHl$XH0A^_^Hd$ E3E333Z3HHXHhHp WAVAWH0LLHE33LxHH5t/AH\$`HHtr3HXu II>IILft=f"uHIHAfuHtH+ʺH*HHu*3(IH(Ht[3HuMI.lfD9;tf"tfHHfD9?u3fD8u(3H裋u3I6](H'H=3HuI> HτIIH)(H\$PHHl$XHt$hH0A_A^_E3L|$ E3331H8Hd$@L3HL$@觉t t3HD$@H8Hd$ E3E3331H8Hd$@L?3HL$@{t t3HD$@H8Hd$ E3E333;1H\$WH H3ۋӋLNJtW<"uHIHAuHt>H+ʺH(HtH"tHH8uH3&H3H\$0H _H\$WH H3ۋӋLftcf"uHIHAfuHtEH+ʺHl(Ht$Hf"tfHHf9ufH3d&H3H\$0H _̋A̋y̋H .̋H b̋H ̋H J̋MH 鯈̋H 颈̋MH 铈̋MH ̋H ̋MH HHH<uHHHfHT$(HT$(HDžt;t+؀|$8t HL$ Ht$XH\$PH@_@SHP3Hu%+L$`d$xd$@d$0DD$(D$ @DLHT$`HL$xD ؉D$@|$xt0t#HcL$`HHHd?HH€d8L$`t B%uD$`HP[@SHP3Hu%*L$`d$xd$@d$0DD$(D$ @DLHT$`HL$x ؉D$@|$xt0t#HcL$`HHH?HH€d8L$`?t $uD$`HP[H\$WHPEL3H$HuO$* 3Htً$tAtd$@d$DL$0DL$(DT$ DHHL$@ D$D|$@t,t!Hc HHH?HH€d8 Zt H\$`HP_H\$WHPEL3H$Huo#') 3Htً$tAtd$@d$DL$0DL$(DT$ DHHL$@ D$D|$@t,t!Hc HHH?HH€d8 zt H\$`HP_HD$8E MHDHD$0H DT$8DHD$(DT$0DDT$(<HD$8E MHDHD$0H DT$8DHD$(DT$0DDT$(8 HD$8E MHDHD$0H DT$8DHD$(DT$0DDT$(HD$8E MHDHD$0H DT$8DHD$(DT$0DDT$(LI[IkIs WAVAWH0Lc3MAA?H IIHIAHHBD8A@Eu"IK\$P D$PA#u?A#A@t>tt u #;uD>E@zE#‹ˋ=@t=t3;VEKA;vv\8A\$PHT$PA~DtEA;tW|$PuDE3A誉HtzE33A蘉Hu 1 MvD$P=u  =uE3IAMHtD>E33A5HttY\$PtuD$PAD$P~(DHcHT$PD+HAaF;3H\$XHl$`Ht$hH0A_A^_E3H\$ E333[%HHA@MA @LHd$0D$(A@E@ ARD$ HHH(DtHt!t$.'A"%@H(H(#tetVtGt8tEt!t';tf$! H(H\$Hl$VWAVH0HEAtFt t#-&"%@C#t^=tP=tB=t4=tB=t=t&;tx1#! CtJt>t2t&@t'"&3{@ 3c@s C@t u@uHL$Xu9t$Xt@+t8A#@uC@@tkkK  s K sk@ tk @tkHl$`HH\$PH0A^_^Hd$ E3E333<"H(tKt?t3t'@t!$3 3H(H8s2H8@tHL$@u |$@Hd$ E3E333!H\$Ht$WH HcH _HHH?HHL8HuxytAH舄HHu8tMF3HT$0ft$0DF^uf|$0uH׋~tE33ҋ+Ht3H\$8Ht$@H _HĉPL@LH H(H@DH(LECMK SH@d$(MKIC MKD\$0L$0EˋH@[HHXHhHpWHPH`HHHPIAuC$DH\$@H։D$0LË$H͉D$($D$ HˋH\$`Hl$hHt$pHP_H8AD$(DL$`ELHL$ DAIH8HĉPL@LH H(H@D2H(LECMK SH@d$(MKIC MKD\$0L$0EˋH@[{HHXHxL@UATAUAVAWHhHEMDMwHDEoHAHMfsfI~I L}E@EEAuw GPuT iHd$0LM׋MAHUEHeH]H ]\$(L$ IH EEH]DuHELHA#;uFAt@Hd$0LM׋MADuEHU\$(L$ HM_H MHELHu3HcL=H?HHIǀd8IuQȋHcL=GHʃ?HHI πd8I_ ~]u@uIHcL=HH?H]ILj\8HcH?HHID9At+Du3LmELMMHUE)EEMtDbAHcEHʃ?HHI ψD9HcHƒ?HHI A$d=D=Hu AtHcH?HHIǀL8 A#;AIHMLMHd$0ADEL$(ML$ HM_DuHUH 6HHu3HcH?HHIǀd8_HcH?HHIHT(3L$I[0I{8IA_A^A]A\]H8AD$(DL$`ELHL$ DAI[H8H\$Ht$WH0HHu3H\$@Ht$HH0_HHÀ<uHK%HHtLHSHuHHd$ E3E333H\$ UVWATAUAVAWH0LcLIHP?MIHJHL8(H$Mt A> uL88d88O$IIM; In<< tHHHI;s} uH HH Hd$ LL$xAHT$pHHtf|$xt_HJD88HtL$p u M JL8:@|$p u I;u ,AHA||$p H:tH/ HH$I;J D98@u D98 HI+ދH$H0A_A^A]A\_^]@SUVWATAUAVAWH8LcLIMI?HLA KHL8(H$Mt fD9 uL88d88N$BHHI;Hj fnf;tfHHHI;sfD9MuHfD HH|fHd$ L$AH$HH$LA KD88Hte$fA;ufD H$I;7 f$f 3K HψD:HH|KDL89 H(̋ H\$WH Hu3UHu @u ;u@xtHH;tHuH\$0H _̉L$H8Hcуuo  txX;usPHLi?HHHID8t-HD$@T$PT$XLL$PHT$XHD$ LD$ HL$H  H8H\$WH HcHu3WHu @u ;u@xtuHhH;t\Hu؋HLz?HHHI D8t 3H\$0H _HHHHH\$WH H?HuJH \,3Hu H3+VHHHtHCHH H\$0H _Ht7SH L3H uHH [@SH HHwEu0w Eu$o AA$u s@ HHCEtHf9+tEuf93GAHKHHHf9+tf;=Hf9+tAHKH}\u H /JAHrKHZ\u H/'AH_KH7\uH/Hf9+t8H\$@HHl$HHt$PH0_H\$H|$LL$ UHH`HAHMz@E؉Eu3`DEHMDD$ HuHM(E AHE(`HE(H`(HE(H`HE(H EHM(AHE(H\$pH|$xH`]H\$H|$LL$ UHH`HAHMf@E؉Eu3`DEHMDD$ HuHM(E AHE(`HE(H`(HE(H`HE(H EHM(AHE(H\$pH|$xH`]MH MH EMH 鹸MH 魸MH 顸MH IZMH =ZMH 1ZHD$(E EHDH DT$(6HD$(E EHDH DT$(̋@t2Ã@)̀:t2 ̀:t2 ̋t2 ‰̋t2̀:t2i ̀:t2q ̀:Lt2uIAHËt2HHXHhHp WHPHIHHA3@D$0D$8:tGDD$0HL$pDD$ Hu&D$4 GD$p_H_(H_HH߉GHl$hHH\$`Ht$xHP_HHXHhHp WHPHIHHA3@D$0D$8:tGDD$0HL$pDD$ Hu& D$4 GD$p_H_(H_HH߉GHl$hHH\$`Ht$xHP_H\$WH H_HH3?HHE33HHH\$0H _HH%@ƒ?+3HH3H\$Ht$LL$ WH II؋ ,HLHƒ?@+IL3LSH L>LAЃ?+ڋ3HI3HĻ,H\$0Ht$8H _HH(HLHH LHP HHGH(HIHыH3ƒ?HL1HAй@?+HI3̋HHH̋HHË +@SH LHA@?+HHHH QI3HS6LAЃ?+3ҊHI3HH [Ë *@SH LsLAл@?+IH M3ȍSL zL=AЃ?+3ҊHI3HTH [HL I3LIHIL ILIHIL ILIHIL ILIHVeL ILIHNEL ILIH>%L IL}IH6L yILeIHfIL qIL]IH^IL qI L]IH^IL iI LUIHVIL qI L]IH^IeL yI LeIHfIEL yI LeIHfI%L qIL]IH^IL mIL]IH^IL yILeIHfIL qIL]IH^IL yILeIHfIL ILmIHnIeL ILmIHEL iILUIHVI%L ILmIHnIL IIL5IH6IL aILMIHNIL aILMIHNIL aILMIHNIL YILEIHFIeL IIL9IH6IEL =IL-IH.I%L 9IL%IH&IL 9IL%IH&IH\$Hl$Ht$WAVAWH HHH;L=7IHtHttmM,3IAzHHu <WuE33IYH3HuHIHIHt HHu(HH;j3H\$@Hl$HHt$PH A_A^_HH\$Hl$Ht$WATAUAVAWH DL=MILK0LHAIH3у?HH;%HtHM;uIHtH;tzsM,3IARHHu WuE33I1H3L=cHu HIHIHt HXHuUHI;dL3HtJIH Ht2L@Aȃ?+ъHHI3K0-LבLΑA¹@?+HI3K03H\$PHl$XHt$`H A_A^A]A\_HHXHhHpHx AVH L5rI3Ht HH;HDsI,3HAHHu!WuE33HHHHuHI3HIHt HHH\$0Hl$8Ht$@H|$HH A^HHXHhHpHx ATAVAWH IHLI;L%7IHtHttmM,3IA"HHu WuE33IH3HuHIHIHt H.HuHH;j3Hu3 IHH\$@Hl$HHt$PH|$XH A_A^A\@SH 3AHmHu!2WuE33HH [H%I3H [@SH L GA3L:AH;A*HHtHHH [HH [HHXHhHpHx AVHPAIL @LL@H@HHtWHH$DH$LHL$@H$HL$8H$HL$0$L$(IHD$ 23IDϋ$LƉD$(H$HD$ H\$`Hl$hHt$pH|$xHPA^HHXHhHp HHWH@IIL %@L@H@HHtHHL$PLLƋ0HD$PHD$0LL$$LD$0HT$(D$$HL$ D$(H\$XHl$`Ht$hH@_H\$WH HL ?L?H-HHHtHXJH\$0H _H\$Ht$WH HL >HjL>-HHtHHӋ HӋH\$0Ht$8H _HHXHhHpHx AVH@IIL >LLr>Hs> HHt7HH$LHL$0LƋL$xՉL$(HL$pHL$ I,3ILϋD$xLƉD$(HD$pHD$ H\$PHl$XHt$`H|$hH@A^@SH L = L=H=HHtHHH [HHHXHhHpHx AVH AIL =LL=H= HHtHlDLƋI xZ3H\$0Hl$8Ht$@H|$HH A^HHXHhHpHx AVH AIL l=LLZ=H[= HHtHDLƋI3IwDLƋH\$0Hl$8Ht$@H|$HH A^H\$WH HL =L =H =HHtH_H HH\$0H _HHXHhHpHx AVH0IIL <LL<H<%HHt*HL$hLωL$(LHL$`HL$ I,3IuLϋD$hLƉD$(HD$`HD$ SH\$@Hl$HHt$PH|$XH0A^H\$Ht$WH L H<HH><L*<yHHtHDH E3DNjHYH\$0Ht$8H _H\$Ht$WH HL #<HH<L<HHt$HHHHH\$0Ht$8H _HH\$Hl$Ht$WH AL ;L;HHHHtH`DŋH H9H\$0Hl$8Ht$@H _H\$WH HL p;L\;H];,HHtHH3HȺH\$0H _HHXHhHpHx AVH EAHL +;L;H;HHtHxEDH׋ DH׋4GH\$0Hl$8Ht$@H|$HH A^HHXHhHpHx AVHPAIL :LLv:Hw:!HHtWHH$DH$LHL$@H$HL$8H$HL$0$L$(IHD$ 23IDDϋ$LƉD$(H$HD$ ,H\$`Hl$hHt$pH|$xHPA^H\$Ht$WH L 9HH9L9AHHtH HHFH\$0Ht$8H _H\$Hl$Ht$WH IL 9L9HH9HHt+HLNjHHH\$0Hl$8Ht$@H _HHHXHhHpHx AVH AIHL 39LL!9H"9THHt5HDLHIHH\$0Hl$8Ht$@H|$HH A^HBHHXHhHpHx AVH AIHL 8LL8H8HHt5HDLHIHH\$0Hl$8Ht$@H|$HH A^HH\$WH L a8LQ8HN8]HHt H(H\$0H _@SH L /8L8H 8HHt HH [H\$Ht$WH L 8HH8L8HHt#HHHH\$0Ht$8H _HH\$WH HL 7L7H7lHHtH7HH\$0H _@SH L 6L6H6#3Ht'L 6L6H6KHtH [H(L 4L3H3HH(H(L U6LA6HB6HH(H\$WH L 3L3H3cHHu3MH*HHtL Y4 LE4HF4%HHuHHHH\$0H _H|$H$H=M¹@?+3Hȹ H3HH|$H\$WHPHH3HD$@L 3L3H3HHuvL U4LA4HB4aHHtH,HHu283HHD$0D$8 Hd$ LD$0A HAQׅtʊD$8$HL$@H3qH\$`HP_H\$WH L3ۅt\L _2LK2HL2HHt(Hȉ\$0z3HL$0׃zu H  2H\$8H _@SH u/HH HtHtH#HHH;uذH [H\$WH0d$ _\$$;tnHcHHHuUH tH vH Y4tD$ H]H H0oH HH KH8H$놹)D$ H\$@H0_HL$HAHHD$`HH#;LDAA HA@A#AHuH\$Ht$WH HًA$<uJAtC9+yaHqH1~/DH(u;t KCtc3H\$0Ht$8H _@SH HHu H [@ktC tH }@u3H [̹HHXHpWAVAWH@``|H=ēHcL4AH|$(I;tqHH\$hH\$0HuWH1C t<uH+A;t*D$$$u CtH T$ A;AD׉T$ Hl1H녹4D$ DD$$H\$`Ht$pH@A_A^_H\$HL$WH HHu 1HH1H\$8H _H@@SH HًA t'AtHIc3HCHCH [ÅttøøHHXHhHpHx AVHHH"E3fD9t$bHD$hHHcHp H98L8;=̡O=št^AH;tEH;t?t:u H Ot(HH?HHHH HHA(A8HHHHuL$I[IkIs I{(IA^H\$Ht$H|$AVH 3E3HcH HÃ?HHHHC(HHv K8C8υtt  HHHHv Hf3tHs(uK8@.u)K8#K8@HC(HHt I@I5H\$0Ht$8H|$@H A^@SH  33?u I H [H\$WH 3H=H ;Ht 諧H$;HHrٰH\$0H _H@H(HuoAH(@SH E3HtHt MufD{3H [LL+CfAMIftHuHufD;"3@SH 3Ht HtMufH [LL+CfAMIftHuHuf"@UH Hl$ HxLɃL AI+IML#I;LBI 9tHH;uI+I;uILIM+IL+LWt u H I;uI9tHH;uI+wHH+HIML#I;LBK L;t 9tHH;uI+I;uLIM+WIL+Lfoftfu HI;uI9tHH;uI+eHIL;t 8tHH;uI+H ]@UH Hl$ H+wLLt)HQHH;tE3fD9 t HH;uH+H H+HML#II;LBE3IKXL;tfD9 t HH;uI+HI;uPIIPI+HH+WLJu u H I;uKP fD9 t HH;uI+HwHt+HQHH;8E3fD9 +HH;uH+HML#II;LBE3IKXL;tfD9 t HH;uI+HI;tIIPI+WHH+LJfofufu HI;uKP fD9 t HH;uI+H QIL;tE3fD9t HH;uI+HH ]LHI;t 8tHI;uH+LQHI;tf8t HI;uH+H@UH Hl$ HLLA I+LIML#II;LBIL;t 8tHH;uI+I;uJI+J HƒH+HWtu H H;uK9tHH;uI+wHH ]@UH Hl$ HLLt)H QIL;tE3fD9t HH;uI+H H+HML#III;LBE3K XL;tfD9t HH;uI+HI;uSI@II+HH+WLJuu H I;uKP fD9 t HH;uI+HwHH ]LLAI+LIML#II;LBIL;t 8tHH;uI+I;uJI+J HWɃH+Hfoftfu HH;uK9tHH;uI+HLLt%H QIL;tE3fD9t HH;uI+HÃH+HML#III;LBE3K XL;tfD9t HH;uI+HI;uSI@II+WHH+LJfofufu HI;uKP fD9 t HH;uI+HHw@UH Hl$ HotH ]@UH Hl$ HouH ]foftfofuofof@UH Hl$ HWH ]W@UH Hl$ HwqLɃL AI+IML#I;LBI 9tHH;uI+I;LIM+IL+LWt u H I;uI9tHH;uI+wH+HIML#I;LBK L;t 9tHH;uI+I;u^LIM+WIL+Lfoftfu HI;uI9tHH;uH9tHH;uI+HH ]@UH Hl$ HpLLt+HQHH;E3fD9 HH;u H+HML#II;LBE3IKXL;tfD9 t HH;uI+HI;HIIPI+HH+WLJu u H I;uKP fD9 t HH;uI+Hwt+HQHH;E3fD9 HH;uH+HML#II;LBE3IKXL;tfD9 t HH;uI+HI;usIIPI+WHH+LJfofufu HI;uKP fD9 t HH;uI+!HQHH;tE3fD9 t HH;uH+HHH ]@SH 3HiE3H H ʺtRà rӰ 3$2H [HcH H"H H%G@SH HH H / u߰H [HcH HΓH H%H YH%H IH%H\$T$UVWATAUAVAWH03LHugH=H軏LHt^I;tY@8pL5@L;5@l$puIiLHߌAMtPH95͌tGYHHHH$H0A_A^A]A\_^]@uѺI讽3HaȻL5UMuHH95Ku+Ix3H3蒻H95'tL5MtMIM+I96t4HMI!1uHA<=tA84t HH93I+H I+HHHxWI96tRI @uM<IDIHI94uAHI)3HHtfHk]@HHSH;s HHH;sAI3L萺MtMgI >HtVLHVVu0HH?u3=HH\$@Ht$HH|$PH0A^蟷Hd$ E3E333胷HHXHhHpHx AVH03HHu3HHH9/t HH@H9(uH芷HHt{H9/tQLL+HHHf9,puHNY3I>vI >HtYLHVu4HH9/u3MHH\$@Hl$HHt$PH|$XH0A^誶E3Hl$ E333菶H\$Hl$Ht$WH H=HHHH?t4HLH*uH<=t<t HH;H+H H+HHHl$8HH\$0Ht$@H _HHXHhHpHx AVH H=E3HHHL97t5HLHE(uHfH;HH#HAH;w HH_H+H\$@HH;HH#E3HHtHIHI3LEtt$(LEH\$ FLD$0LEt$(H\$ 蝵LE3M9vAII $fI$IʅHK9uLuAL]DfEdM9AAHHAMfD9tA;h+A'A;AC;tEC!A;tdAC&;t%AC:;HHojuXHw it%t#tAAbAڸmt tAAHHjuHwp%} A+ƒA…uFJ-3HׅtIIB<uHcIH5_>-Hu-HW~BHHD$8HH 3L 8$HHH+HHH/HD7qHKEtEHF80tWDFAyAC-Ad|QASkœDA |gfffASkDDC$u90uHQAE^|$Ht HD$03Hd$ E3E333JyLI[IsWH@t$x3H IICMCICHHD$pIC!DD$4LL$03H׃|$0-DH+HHDH\t%H$LL$0HD$(DHD$ HH\$PHt$XH@_HHXHhHpHx AVH@HT$xHHHMA@ANɀ|$pt;u3HcA>-Hf0A>-u-HHA~$LIB<uIHKH\0HIcFH؅~|HkLIB<uIHH\HD$(HH ANyB|$pu;}߅tHƀ<.uHcLFHHd\LcǺ0HH|$8t HD$ H\$P3Hl$XHt$`H|$hH@A^LI[IkIsAVHPH 3ICIICMCH$H$IC(Dt$DLL$@D$3Ƀ|$@-HAH+HH1HDHWtD$DD;|E;$}H\$Hl$Ht$WATAUAVAWH`MIHLHu^ntMtMtL$Mtы$At CvE2AH$@u*Qt!ILH?LƀDt$ sHA)tXt tL2=AHUEDmE4fHt)I;AHMHHAHHMHd$8HEHd$0LEMAD$(3HD$ H1bDHMLMHd$ HUDSb3҅tkK+MωKD9urbA u4HMЍB HT$ DBHUfELMb3҅t,}r.CCI;K D1>KL0=C\`HHMH3H$HĀA_A^A]A\_^]HHXHhHpHx AVH 3AHHAHHH;sEDp 7f;u)Cf uAfA;uCCHH;s _Hl$8HH\$0Ht$@H|$HH A^H\$Ht$WH Hcًu2ZHH5/H?HHD8tβHH8u H|9tH HT$8HL (`H\$0Ht$@H _H\$Hl$VWAVPtIH+HZ H3H$@HLcIAHH x.A?I#IcHcINt(L;soH|$@H;s$H< u C HLjHH$?H;rHd$ HD$@+LL$0DHT$@I_tD$0C;rH;r4^HH$@H3L$PI[ Ik0IA^_^H\$Hl$VWAVPlHH+HR H3H$@HLcIAHH p-A?I'IgHgINt(L;H\$@H;s1Hf uG f HfHH$>H;rHd$ HD$@H+LL$0HHT$@ID^tD$0G;rH;r]HH$@H3L$PI[ Ik0IA^_^H\$Hl$VWATAVAWpLGH+H2 H3H$`LcHIEHH P,A?MIMIHNd(3#HCM;HD$PI;s-Hf u fHfHH$H;rHd$8HL$PHd$0LD$PH+D$(U H$HHL$ Dȹ34]tI3t3Hd$ H$LL$@DHID+I]tt$@;r͋A+ljCI;3[HH$`H3BL$pI[0Ik@IA_A^A\_^H\$Ht$L$WATAUAVAWH ELHcكu[ [ xt;.slHLIL-*?HKDL08tEq7KDD08u[ j[ EIԋ@8F[ ^[ aH\$XHt$`H A_A^A]A\_H\$ UVWATAUAVAWHH`3ELcHEu3HuZ8Z`wMH)A?MIILmJ B\19C<w AШtBD18 t3ADBAH}VH)JBD086HH98uHS)JB8|09H=)J HUJL1([t{ˀ+!}N$>3L]I; E/AfA;u3]fA uA AfA;uÉ]IM;s XELmEHMLAxH~(J BD18tM˄t2tuyEHMLAEHMLAEHMLAkJL1(LM!}3H!D$ EHHEYu HXEЋ}EEHEH uhEt-uX XM=XH'JBD08@t >{X\X E+H$H`A_A^A]A\_^]HHXHpHx HPUHH HkHUDBAuX HEHHEH AAt W"HEHAt+HE`HEHHEAtHHHHE`HEHHE`HE`HEPu8H]A H;tH]H;u u HMHU@]!@H\$0Ht$@H|$HH ]HHXHpHx HPUHH H3HUDBAuV HEHHEH AAt V"HEHAt+HE`HEHHEAtHHHHE`HEHHE`HE`HEPu8H]AӶH;tH]H;u u HMHU'H\$0Ht$@H|$HH ]HHXHp HPHWH HHL$8LcȋQHL$83ۋHA9H+yHHD$8H ɉH~)HT$8DAHRLHD$8;HHD$0lAAvIHH$?IHHH H ]A8 t3ADBmHuHL$8IAHT$0AH\$@Ht$HH _HHXHp HPfHWH HHL$8LcȋQHL$83ۋHA9H+yHHD$8H H~+HT$8DAHREHD$8;HHD$0flAAvIH?#?IHHH H TA8 t3ADBdHuHL$8IAHT$0AH\$@Ht$HH _H\$Ht$WH HHDCAuS KC t |S"׋CtcCtHCHcKccCu,γH;t迳H;u uHH@$_@H\$0Ht$8H _H\$Ht$WH HHDCAuR KC t R"ՋCtcCtHCHcKccCu,H;tղH;u uHH>]H\$0Ht$8H _H(迤HT$0HHL$0HJHD$0HH(HH\$WH f;u3Jf;sHH+3fL$@LL$0f|$0HT$@ODPtD$0#H\$8H _ËRuHHcH#E3Ht$H|$Lt$ UHHHH3HEDHcIHMҽG=wHEHyHU@.t@uDJ@}E @}DE3T$0ELEfEHEЋH HEL$(HMHD$ vu8Et HEȃ3EA#ƀ}t HMȃHMH32L$IsI{ Ms(I]HE3HALL+IIH;MGMtIHIM;uE3HALL+IIH;MGMtIHIM;uHH)$pH$3$$H$H$H$H$H(HuRO U ~$3H(H(Hu"OT R$3H(H(HuNT $3H(H(MLHtFMtFHtHt9Aw3H#IcLHHA<uHHMu&3H(MtqN*TH(I;v "H(L#IMIH(sKHdJDAAQ+AADAAAADɋD+ʙAH\$Ht$WH HI3HHtHHdHEHH\$0Ht$8H _H\$Ht$WH H3HHtHHHEHH\$0Ht$8H _H\$WH HHHu2MRnA$#HtLcA@W}LH&AL;y-2AAi€yFD3D;|&AD+D;|D+AӸD;|AD+AˉSLE.EAAi€SDH"LEIJEHI9|E+˸E.DKIcA+S /$Ic ʃk+ȸųAKA iSDAAkHHt$LD$8L )HHL$@4uH33H=HH\$0H _H\$UVWAUAVHH0H-E3HM8Du8HDu@~HM@ H Ht&LHL+F A+uHEuWj=HHHD84 uH=3HeD=H YHHD84;uHWL#>:HDhE͍P@LA/D83t HHu;-@@tHHBiU8<+t,0< wH;:uLHHBU8k<щU8<9 HÊ<0};:u"HHBU8ЉU8<9 HÊ<0}@tډU8D83AE@tHNMLú@i t ,HFD0]8x]@^H\$`H0A^A]_^]E3Lt$ E333EE3Lt$ E333EE3Lt$ E333EE3Lt$ E333EE3Lt$ E333wE@USVWHHH3HM(u(H؉u0u88HM0iHM8CH _>;H kH5Ln>k Nt9u@u H@p?H@0HE@AHD$8LHC3Ht$0D$(?HD$ >t9u@u HC@p?HC@0](z]0`]8^HH_^[]E3Ht$ E333CE3Ht$ E333CE3Ht$ E333CH\$Ht$WH@H3H3H$0L 3A5HT$0HL$ 蕛uH|$0N"tHDHL$ 9HHu 3C9LD$ L AHHL$(LtH39HD$0HH;HDHt@87t H TH8H$0H3L$@I[IsI_H(u)HN{u s{H(@SH Hٹ{HعT{H [H(zx-{H(HT$LBIL9sztHcB HrLHT$BH Htf9t HHfHD$@HD$`HD$HH\$Ht$ HT$UWAVHH@HH3HEfMHnt=HM(wnt/H](HfnHcL5 HHPn?HIH0@933ɉ]]Mu)DDCHUHMt DEEAEDE@uHE(IcLHLL9s9XuD;@ LHE(DEAHHcхxHHDHHE(yDED@HE(`HE(HEHMH3;H\$pHt$xH@A^_]HHXHhHpHx AVH Hf;BROuHuHHG u_Hlt8Hlt+HlHcL5HHl?HIH@8t H`HGHHH9suJHcG Hr@HG HtHHf9(tHHHHf(GgOH\$0Hl$8Ht$@H|$HH A^H\$HT$WH H3Hu8w>"HHpHH\$0H _H\$WH BHڋ u}HkLcHLJAIvMIA?HIMLAx9u$AAvII?HHIB=t7=ltCKuuH{uH@HH;Cu {tHHCH Ht @88t HH@8CcK@H\$0H _H\$HT$WH Hڋ3HuG7=HHӋHvH\$0H _H(##t$=t=t+ H(H(%H(HHHHXHhHpHx ATAVAWHPE3ILHAHtMu3fD!Hu]6Cfwf Afwf Hft9f;t2HT$(THT$(Hv@Hftf;t+@8l$8t HL$ H\$PHl$XHt$`H@_H\$Hl$Ht$WAVAWH03HHHu(-3Ht>E|$(DH>AH|$ AAL3g%Lcu'S'IH2$HHt=Dt$(ALHD$ 3A"%u&'HHHH#H\$PHl$XHt$`H0A_A^_H\$Hl$Ht$WAVAWH@3HHHu"',3HtFDH|$8DH|$0Alj|$(AH>AH|$ L3]'Lcu&Q&I3#HHtGH|$8AH|$0LDt$(3AHD$ 'u%&HHHH"H\$`Hl$hHt$pH@A_A^_Hx"HH@SH HH _"H#H [3H9HH!H3H9@SH HH "H#H [H\$Hl$Ht$WH @#3HHtLHH;t=Hx0HOE3IJHOH7G G g @wH@HGH;uH3!H\$0HHt$@Hl$8H _HtJH\$Ht$WH HHHH;tHa%H@H;uHLcewA;0tqt~!3HM}}}1RHMP,HMoHc}+AQDCAADAAAADɋD+ʙ HcHAHcHimHcHHHcEH RH IHkH\$`Hl$hHt$pH|$xHPA^HHXHhHpHx AVHPALHC@|3tHt H@t @uJ؃@tdH|$(LL$0L6|$ 3Lt$03H\$8t$@|$DHHtE3Hu|$DHt H'Au3@HDMH>H\$`Hl$hHt$pH|$xHPA^E MHH c=E MHH =E MHH ;=E MHH =E MHH =E MHH =@SH DIHLHQ3uN߃@t^H|$(LL$0L|$ 3Lt$03H\$8t$@|$DHHtME3HH˅t /|$D?u3>HDMH;H\$`H|$xHl$hHt$pHPA^HHXHhHpHx AVHPALH?@d3tHt H@t p=u2߃@t^H|$(LL$0L|$ 3Lt$03H\$8t$@|$DHHtME3HvH˅t/|$Dt>u3=HDMH;H\$`H|$xHl$hHt$pHPA^H;s3H;H;s3H;H\$HT$UVWATAUAVAWHH`3HHu_WH:H99EH}tWH HUPfEP*?@}R^H HuLME33 LEHDu HH9;LeHuHuLLeHIH}PH+LLIIHHHI;HGIHt%LIHA8<uIHLIL;uLMPAIIΟHHtwJLHUHHUXI;tVHH+HMMMIC8<(uH+IHUPMHEHEXHMHUJ9IIHEXM;uHEHDH3 ILH+HHI;HGHtI HMH;uH AH$H`A_A^A]A\_^]E3H|$ E333LH\$UVWATAUAVAWHHHӼH3HE3HUHHu_WH:H99EH}tXH HUE*?f}H HuLME33 LEHeDu HH9;LeHuHuLLeHIH}H+LLIIHHHI;HGIHt&LIHfA9L҃ uA7AIEA>A3AHAAH̋A3E3HAE3H3H\$WH@HHL$ bHD$0Ht xuAE3H=3ɀ|$8t HD$ H\$PH@_̋A3E3HAE3H̋A3E3HAE3H̋A3E3HAE3H̋A3AW{HAAWH_A3EAIHAHEA1̋A3E3HAE3HHH@SH HH Ht H#H [3H9@SH HH Ht H#H [H(H(3HHf9AuH AHf9uHAH33H9HHXHhHpHx AVH@=E3HHHfD90tHHfD94FuH4FHfD96uLt$8H+Lt$0HHLDDt$(3Lt$ 3HctLHHHt/Lt$8DLt$0LÉl$(33HD$ tHIIHfIHt HoH\$PHHt$`Hl$XH|$hH@A^H\$Hl$Ht$WH >3HHt[HHf94HuHHHf90uH+HHH,HHHtLHHlH3HH\$0HHt$@Hl$8H _HHHHHHH@SH HH cH#H [@SH HH GH#H [HH!HH!@SH HH H#H [@SH HH H#H [H({DHT$0HHL$0HFHD$0@ H(H(KDHT$0HHL$0HEHD$0@H(H(DHT$0HHL$0HEHD$0H(H(H(CHT$0HHL$0HrEHD$0@H(HH@LI[IkIs WATAUAVAWHH~H3H$L83IKHI[DDDMLa H\$XsA9$u3Ld$ AIKߡHb3HD$X~E3LcH֋13LOH֋3H;Hֹ3L$H9\$XMM MHI͋ÈH=|A $H$$$IH8MM\$@D$PA$D$8D$0HL$(3ɉD$ D@/hqA$HH8MM\$@AD$8D$0HL$(3ɉD$ g,9t$P~58$t,H$8t Q HcB( ;~H8YuA$I\$0AD$(MHL$`HL$ 3Dd$PIfA^]AHD$hD;~?8$t6H$8t*QHcAfEG;~H8YuIIAAOA I0AG AO0A@IPAG@AOPA`AG`LApHAG HApAAI AGA0AO I@AG0APAO@I`AGPAO`IGpAxAGxA|fAG|AxAAAA ANA0AF A@AN0APAF@A`ANPApAF`ANpAFxA|fAF|A~AF~xE M0E @M0PE@`MPpE`MpEx|fE|~E~HHtN;uCHHnHAI+YHI+JH>HD$X0HHD$`HHD$hHIHHHDg$HL$XIIHIMHHtHxUHHHWHHHMYH3qH$H31L$I[8Ik@IsHIA_A^A]A\_HDHH@SH HH +H#H [HH!@SH HH H#H [HSH HHIH; tHK H; tHK(H; tHK0H; tHK8H; tHK@H; ztHKHH; ptmHKhH; ~t[HKpH; ttIHKxH; jt7HH; ]t"HH; Pt HH; CtH [H\$Ht$H|$UATAUAVAWHH@3HMHDH]H9@uH9HuDL5YtAAe3LMuAI͋?3L]Mu IPH9@RHI3L,Mu IIH@IFLHD$ AHMA5IN AHL$ LHMAՋIN(AHL$ LHMA HMIF0ALHD$ AՙAMn8LLl$ HM AQ贙APHM LIF@HD$ AQ蓙AQHM LIFHHD$ AQr HMIFPALHD$ 3S HMIFQALHD$ 34 HMIFRATLHD$ 3 IFSAULHD$ 3HM HMIFTAVLHD$ 3ט HMIFUAWLHD$ 3踘 HMIFVARLHD$ 3虘 HMIFWASLHD$ 3zAHM LIFhHD$ AQYAHM LIFpHD$ AQ8AHM LIFxHD$ AQAHM LIHD$ AQAPHM LIHD$ AQϗ IAQHD$ LHMAQ諗 t*IcIWIOIGgIU38 A< w0 AI8u;uLIHALuAHAHAN@ AF H0AN0@@AF@HPANP@`AF`@pAD A HDIDAHHIHHHINHHHINHHHXINXHHH`IN`E,$MtE/HHtHHt$uHHL3LLL\$@I[0Is8I{@IA_A^A]A\]E3HD8 t A< w0 HD8 uÀ;uLIHALuHtfSH HH H; t^HKH; tLHKH; t:HKXH; ;t(HK`H; 1tH [HHXHhHpWATAUAVAWH@3HHHHXH9HuH9@uDL5DLHuSHzAHAN@ AF H0AN0@@AF@HPANP@`AF`@pAD A HDIDs3L)Mu ImA$H9HH>3LMAHL$0HHALLt$ INAHL$ LHL$0ՋMnALLl$ HL$0 ǓAHL$0 LIFXHD$ AQ襓AHL$0 LIF`HD$ AQ胓 tII,IIU3 A< w0 H8uS;uLIHALuHLIHIFHIFH͘IFXHʘIF`A,$MtA/HHtHHt$uHsHgL3LLL\$@I[0Ik8Is@IA_A^A]A\_E3HD8 t A< w0 HD8 uÀ;uLIHALuHv̺j̺ ^̺R̺F̺ :HH@SH HH H#H [3H9HH!H\$Ht$WH 3HHHH+HHH;HGHtH 2HH[H;uH\$0Ht$8H _HH\$WH HPHu HA;HHtHH6u H3HHH\$0H _ǃ\H3H\$Ht$H|$ UATAUAVAWHH@LPLE3HUILe0IEl$1AHE0AMи%I$E+Mºk+ȋIHMHD$ K EMIG8MHHMHD$ ' HMI`EHMƺHD$  EMIMHHMHD$ ڏ AHm0EA8IEeHGMEM HD$ HM蛏EH|$ MHM 耏 EM HMHD$ HM[ HMH`EMHD$ < HAIpI0Mƍ{&HD$ DύSHM _I8DEl$HD$ MHMADHM {IMHD$ 辎 HMIDMHD$ 蟎 DcI@EMHD$ AHM{ {IHDMHD$ AHMX HMIPDHD$ MA3 DKIXM3HD$ HMEHM EeIAMHD$ IDHD$ MHMAύIDHL$ MHMA 词L\$@ I[8Is@I{HIA_A^A]A\]3H9@SH HH /H#H [HH\$Hl$VH HًHK8uHKpxHjH0U[H@HHHPH`)HH H0HUHPHDH8H,H\$0Hl$8H ^H\$WH HPHu H<RHHu3HH>uHH&3ǃ\H 3H H\$0H _E3LfD9Ht)MfE9tAf9tIAfuHfD9H+HMu3ftf;uHHIu +@UATAUAVAWH`Hl$0H]`HuhH}pHzH3HE DEHMHMFuHEp EMċ҃d$(Hd$ Lcu3IHHOH;HHtuHOH;HH#H=HGw:H;HH#HAH;w HHH+H\$0HtyH;HH#_HHtH3HtHL3H[EDt$(MH\$ .tLDHA3HtHK9u}t HEHM H3IH]`HuhH}pHe0A_A^A]A\]AHHtHHtHHtHHtHA8AHÈH9Pt HHtHxt HPHtH IuH yH\$Hl$Ht$WH HHHtyH fH;tmHHta8u\HHt9uH~HHt9udHHLH@HHtG8uBHHHH+HH+HH H(H{8HvH9GtHHt9u HHtHOHt 9uHH HuHH\$0Hl$8Ht$@H _fHtH<8H;t\øHt0SH H8HH;t\u H H [HtH7H;t\øH(HADIHHtDHHtDHHtDHHtDHA8AH!H9Pt HHtD Hxt HPHtD H IuH 5H(H\$WH 'H xt HHu6HHө&HعHuSHH\$0H _H\$WH HHtIHtDHH;uH9HH-Ht"H{uHH;tHH3H\$0H _H\$WHH̀H3H$IHHL$0U~2IHD$03IfB9H\$Ht$WH0HzH3H$ H AxLD$0HKHҁ3usFIH HT$0u-IIfB94OuIHXLǺUu4KCЃH$ H3hL$0I[Is I_E3Ht$ E333SH\$Ht$WH 3HHHtVf91tQHlSStAHdSH@u$HX DNLD$0t0D$0+HcLIK&蘡u IL$II y}u;~Hl$HHt$PH\$@H|$XH A_A^A\HHXHhHpHx ATAVAWH0IHLE3HIDcLXL3H{fE'HfD9 tLAT$H rEHHfD9 tMHfD9 t D9cuALH A@tHHfD9 t D9cIH؅|HtHH IfD&IfG9$OuIMǺUH$DH@LźHt{HA@LǺHtZ_H観HuP.H薳HtA@LHAQ|tA HEA3H\$PHl$XHt$`H|$hH0A_A^A\E3Ld$ E333H\$Hl$Ht$ WH HuH3H$HHHHLD$ Axȋҁ3ۅuCCHHT$ 蟞u$H Nf;1tHHcH rwwЃH$H3L$ I[Ik Is(I_H\$WH HHL3HHf9HHH`uu!ODNLD$0 1t-D$09HO/OLD$0A u3D$0uH\$8Ht$@H _E3L HAAfA;tDIIcH r3H\$Ht$WH 8LD$0A  HwE3҅u3S;\$0tHtDLEAIIBfv fafw AHHHfE9AuD;tH\$8Ht$@H _HHXHhHpHx AVH 3MHx0I+HcHHHTזt+y_w;~2H\$0Hl$8Ht$@H|$HH A^HHHHI@USVWATAVAWHH@HlH3HEILLH3HEEHME3HHILHHtfD9 t<H :LDeHHtyfD9 tsHHtfD9 t HM HMD9e=:LH 6HHtfD9 t HMwHMlHHtQfD9 tKHHHHfD9$HuHAH 7EuDeEEED9eIIHUHH#Q؅MMtAMHE3AqUDHtdMH E3DM@DLǺIt9MLDκ-tHDNDF3HMH3{H@A_A^A\_^[]H(HT$0HHL$0H HD$0HH(H\$Hl$Ht$WH IHHHt3HBHI;sK 3AHt pH3HHHHHtH;sH+H 8L3裓HH\$0Hl$8Ht$@H _H9H(&HH$H(H%H H\$Hl$Ht$WH HHH;u\HH+HtHՄt HH;uH;tH;t-HH{tH3Ht H3HHCH;u2H\$0Hl$8Ht$@H _H\$Ht$WH HH;t&HZH;Ht HX3HHCH;uH\$0Ht$8H _Hh@ƒ?+3HH3HihHыH3ƒ?HLQhHAй@?+HI3H1h@ƒ?+3HH3HE3HALL+IIH;MGMtIHHIM;uHH uH\$WH H.HHtHYHӅt3H\$0H _@SH 3Hg˃?H3H3HH [H\$WH H3lHDgƒ?HH3ՐH˹@+HH3H=3HH\$0H _Hf@ƒ?+3HH3H\$LL$ WH I Hf˃?H3{Hˋ%HH\$0H _HH(HLHH LHP HHH(HqfHыH3ƒ?HLYfHAй@?+HI3̋HËHË I̋ HfH3Џ?HH\$WH ٹHeƒ?ȅHuLH3~LxH3qHHr@+3HH3IHu3Ht HӸH\$0H _̃t/t ttt3HHHHՎE3HALL+IIH;MGMtIHHIM;uH HH 9Jt HH;u3HH(w r HH(HLH(MKMCD$8ISD$@IKH(H H H H H(O HH(H(; HH(HSVWATAUAWHHE3D!h@@$t"t ttqAviDk LHu"HH HH 9yt HH;u33HuǶ耼HY@2@$?t3t t tt3"HHHHڌH$@t 2@tHcʃ?H3HLL;I$Mu@t AO=VA w@As:IEH$HD$0IeuV@$D$ @u2Hh HIEH a HHHD$(H;t1H`HH6bƒ?@+3HH3HA @t |$t3auHIHҋSAIHuЋA׃ wAsH$IEu$HHHA_A]A\_^[H\$H|$Lt$AWH0LHBHD`2E3AO[tu:=ъu1H t #HHt3L`AЃ?ML38IL|$ It@+IM3L0!t I  HHtL=L98u&H L HHtL8IHUH HLMJH;t9xt HH;u3HZHPLItN I;t9zuL2HHJI;uIw r HH\$@H|$HLt$PH0A_@SH I3LL8L$Pt-LRM3A vW0AHI…tH;rH;rAx"0 AIAA AIAIM;r3H [H\$WH 3ILLҋ@8|$PtO-f LROM3A vfWf0fAHItH;rH;rfA;ر"萷'fA:IAA fAIfAIM;r3H\$0H _@SH HI3LL8L$Pt-LRHME3I vW0AHIHtH;rH;rA2" AIAA AIAIM;r3H [H\$WH 3HILLҋ@8|$PtO-Hf LROME3I vfWf0fAHIHtH;rH;rfA;莰"F'fA:IAA fAIfAIM;r3H\$0H _@SH0EDHu6H0[MtDL$`AHHHL;w "AB";wDL$`AEH0[@SH03EDHu輯tH0[MtDL$`fAHHHL;w 胯"AB";wDL$`AEH0[@SH0ELHuBH0[MtDL$`AHHHL;w "AB";wDL$`IEH0[L@SH03ELHuȮ耴H0[MtDL$`fAHHHL;w 菮"AB";wDL$`IEH0[j@SH03HA uHyEȈD$ IHH0[H83A uHyD$ H8@SH03HA uHyEȈD$ IHH0[H83A uHyD$ H8@SH03HA uyEȈD$ IHH0[H83A uyD$ H8@SH03HA uyEȈD$ IHH0[H83A uyD$ EH8@SH03HA uyEȈD$ IHH0[H83A uyD$ }H8@SH03HA uyEȈD$ I]HH0[H83A uyD$ H8@SH0ED$ IHHH0[H8D$ H8@SH0ED$ IH&HH0[H8D$ *H8@SH0ED$ IHHH0[H8D$ H8@SH0ED$ IHrHH0[H8D$ H8HHXHpHxLp AWH0IHL H3ۋMuT uIHtHHtH+LHtNHH88uHH'IHu MHHuHtH> H\$ E3E333ðH\$@Ht$HH|$PLt$XH0A_HHXHpHxLp AWH0IHL D3ۋMuPvIHtHHtHLHtOHHf9xuHǺH"IHu MHHuHtH> H\$ E3E333辯H\$@Ht$HH|$PLt$XH0A_H\$Ht$H|$AVH0HLHu)gH\$@Ht$HH|$PH0A^H!HtH"MtI-HHu3HHÀ<uHH$IHu LHHu HtHHd$ E3E333ˮHHXHhHpHx AVH03HLHu.艨AH\$@Hl$HHt$PH|$XH0A^H)HtH*MtIHHu3HHf9,XuHúHCIHu LHHu HtHE3Hl$ E333@SH H3Hu躧s3<3H=tӹ hHHع HH [@SH H3HuN3<3H=tӹ HHع :HH [H\$Ht$WH H@HHtWHtRHHǀ<>uH8t?H HH<uH;v<9=uLHt HH;HHH3H\$0Ht$8H _H\$Hl$Ht$WH Hl@3HHtXHtSHHf9,~uH9(tAH HHf9,AuH;vfHFE3I֋YHP3H\$@Hl$HHt$PH A_A^_賛8u ɛ 辛Hˋ8yE3HӋHLzHuz OHHT$L$USHHHLcAu xtD;$nskIL j?IHHID8tHHy՚ AHEDE0HELM0HE DELEHEHUHM(蒚 誚 bHH[]H\$Ht$L$WATAUAVAWH EDHcكuF ^ xt;ImslHLIL-6i?HKDL08tEuKDD08u ڙ EAԋ0v趙 Ι 臟H\$XHt$`H A_A^A]A\_H\$Ht$L$WATAUAVAWH ELHcكuZ r xw;]lsoHLIL-Jh?HKDL08tHtHKDD08u EIԋHuHǘ ߘ 蘞HH\$XHt$`H A_A^A]A\_H\$Ht$WH HcAˋVwHu菘 7DNjHЃtHLfg?HHHId8H\$0Ht$8H _H\$Ht$WH HcAHvHu HSDLD$HHH"u8qHD$HHtHLf?HHHI Ȁd8H\$0Ht$8H _LI[IsWH0d$X3AHcD$\MCIS HDHuSd$XLD$X3HDωD$\HetH|$X~!HT$ E3E3HB 묋D$XH\$@Ht$HH0_H(ELD$Hu$]HHD$HH(#cH(d$0HT$0 D$0H(H(Huj#luى l3H(H(u * Bx.; is&HcH eH?HHHD8@ 褛3H(H(bMLE3ɅuyMtlHu貕kH(HtL+A Afwf DA@fwfA HIt ftfA;tADD+AH(H(HHXHhHpHx AVH@E3IHHAMHu躚HtIHL$ HD$(L98u:H+>Cfwf Afwf HHtDft?f;t8HT$(=BHT$(-BHvHHt ftf;t+D8t$8t HL$ H\$PHl$XHt$`H|$hH@A^DE3ACAʙL+HcHB+ tyDHD@E;~̓HHXHhHpHx AV3L54DHACHU+LcIHN 1I+BJfwf A Afwf IHt ftf;t+tyEXEPE;~ IHADH\$Hl$Ht$ H|$(A^E3LLMtDL+C Afwf ABfwf IIt ftf;tDD+AH\$Hl$Ht$WH0IcDHu u Huy3yE3H-AC +AHcH+)tyDPDHE;~ՃxHUHHlHH~;}HLHuGH\$@Hl$HHt$PH0_Hd$ E3E333H(Ht"xHH=sHH 63H(H\$LL$ WH II؋ TmHHcHHHLt`?HID8t$pH|3ۅu)H9 mH\$0H _HH(HLHH LHP HHSH(̋HHH̋HË m@SH HL_HcHHH?HID8t&\oHt3jHяz H [̋ )l̉L$H8Hcуu K lxX;9csPHL-_?HHHID8t-HD$@T$PT$XLL$PHT$XHD$ LD$ HL$HA 蛕H8H(\LLE3ɅutHu諏dH(HtIwL+CBfwf A Afwf IIt ftf;t+H(H(HHXHhHpHx AVHP3IHLMu3Hu跔HtL;vՎ莔IHL$0HD$8H0HuCL+A >Afwf Bfwf HHt ftf;t+-t$(DMH|$ Nu BX@8l$Ht HD$0H\$`Hl$hHt$pH|$xHPA^̋ [jVE3HHXHhHpWH`HHIHHIHu3HtHu訍aH;v臍@cHD$HH0HuLL$HLHHV;@HL$HD$8L͉|$0AHt$(|$ Qu "X|$Xt HD$@L\$`I[IkIs I_@SH ;3҅uf_uH [@SH :3҅uf_uH [@SH@HL$ fHD$(HQ%|$8t HL$ H@[̺:̺:f u@ú@j:̺ ^:@SH I:3҅uf_uH [@SH :3҅uf_uH [ú9̺9̺9̺W9̺9̺9̺9̺9@SH@3HL$ 0HD$(HQ%|$8t HL$ H@[̺V9̺J93f;f u@ú@"9̺ 9̺ 9̺8̺8̺W8̺8̺8̺8̺83H9@UATAUAVAWH`Hl$PH]@HuHH}PH6H3HEHc]`MHUEH~HI_O;ÍX|DuxEuHDp DMA҃d$(Hd$ gLc{IIHHJH;HHtrHJH;HH#H=HBw7H;HH#HAH;wIHFsH+Ht$PHH;HH#˅HHtH3HDd$(DMHt$ AHd$@EHd$8LHd$0AL}d$(IHd$ HcbAEtREpN;DHd$@EHd$8LHd$0AՉD$(IHEhHD$ 觮 HHHJH;HHtvHJH;HH#I;HBw>H;HH#HAH;w HHqH+H\$PHH;HH#uHHtH3HtsHd$@EHd$8LHd$0AՉ|$(IH\$ ڭt2Hd$83H!T$0DϋEpLA΅uf!T$(H!T$  u`HK9u觃3HtHN9u菃HMH3EEH]@HuHH}PHeA_A^A]A\]ÉD$(HEhHD$ HK9uGH\$Ht$WHpHIHAHL$P$HL$XD$@Lˋ$DljD$8H֋$D$0H$HD$($D$ 3|$ht HL$PL\$pI[IsI_@SH 3Hu^HtEAOHH;w -"MtIQHA0DEtHA0DHAEx:5|0HȀ89t91uAAIIB8\uIHQp3H [@USVWATAUAVAWH$HHHM2H3HH AHD$XLD$PT$8D$HHT$HLLL$@I4AMHHHH#HH#HE#AAKK,ȉ|$dEVrEH D#|$hDd$ A։T$`3Džp;UE3BDdB9?ED;ud$(D[EA AAAIA+HA+DAt3D+AAE;AA;AA;u EtA2AEArA;DBE;tWEE+C<A;rHD;sFTdE3A@;sTd3A#ԋED#AAA CTdA;tT$`3Et ddA;uEAFDEE3Dž4ADd$ D0DDt$`hd$(D[EˍBAAA IEE+AHA+ދDdDAt3D+B E;AA;AA;u EtA2AEArA;DBE;t\EE+C<A;rMD;sFTdE3A@;sTd3A#D#AAAA AE‰TdCA;tT$`3Et ddA;uEAFDEE3403Džp; E3BDdB9ED;ud$(t3A D+D;AA;s DDdE3A;sTd3A3ЋA͉TdA;tT$`AHE3AD+Dt$`HLWD@θEIDD0M7H4L;Hk d$(BDdt3A D+E;AA;A;u EtA2Aubu^ArA;DBE;t?A;s DDdE3A;sTd3C3ЋA͉TdA;tT$`EAFDEE3Dt$`+H3HLVD~@ϸL3V"詅D0EAHD$4DD$$&ED;DGDl$0AE""#"ً3HLÍHVH H "HHLHHjDAuE3D0EE3LE3B4AIHLB4I AE;uEt40ss0D4D0AE3D02D0A4MIED0Mt@H4L;wHiL3T-~"D0EE3LE3B4AIHLB4I AE;uE;H4ELH4LDEEEEHHDE3E3HT$(DECtA…u!E;B!EzD3EEAAstfE;uAOCȉA9EAHHBHA9HBDH A;tHT$(딅tNAslE;uAAAAAӋHЉDH څuAsHT$(AE;EID0Mt@H4L;wHgL3R|"ׁD0Dd$$Dl$0E+HDd$$5D$4|$ +A"t{EE3DE3B4AIHLB4I AE;uEtA0ss)0D4D0AE3D0E3D0D0{AL$0HԧD$(DD$$&ED;DGDl$4AE""#"ً3HLÍHTQH mH "HHLHHdeDAu E3Dt$`EE3LE3BLdAIHLBLdI AE;uEt)|$`ssD$`DDdDt$`AE3Dt$`2sDt$`gA\$dMIED\$`Mt<HL$dL;wHdL3=Py"QDt$`EE3LE3BLdAIHLBLdI AE;uE;HL$dELHT$dLDEEEEHHDE3E3HT$HDECtA…u!E;B!ErD3EEAAstfE;uAOCȉA9EAHHBHA9HBDH A;tHT$H딅tNAsZE;uAAAAAӋHЉDH څuAs HT$HAE;EIDt$`Mt<HL$dL;wHbL3>Nw"R}Dt$`Dd$$Dl$4E+H+Dd$$bL$0D$(+A"tbEt~E3DE3BLdAIHLBLdI AE;uEtH|$`s|$ s.D$`DDdDt$`ADt$`.Ht$@d$`Hދ|$ Ht$@d$`H}Dt$`|$ Ht$@HEtgE3E3BDdH ALHFDdAI E;uEt;|$`ssD$`DDdD$`%Ld$`HL$dE3ɺH0HL$`{ 1H^EE3E3B4H ALHF4AI E;uEtZ0ss0D40;L0H4E3ɺ'u0H^HD$PL$88x wHD$XHȋH;HBHH;A DT$`EE3E3BDdHiʚ;AHLBLdI AE;uEt;|$`ssD$`DDdD$`%Ld$`HL$dE3ɺ\H0HL$`WzDLD+AAD*AH0DE;rA DD;uHH+I;IOHH;HH3K2HĸA_A^A]A\_^[]@SH H9<uC H9CHH [H(ytq9H(DLLD;t23Et#HBL B9LuA;uDE3LLD;t2AEtHBLB9L uA;u39H\$Ht$H|$AVH LH3HLI@H|$@BD3FH\$0Ht$8AIH A^@USVWATAUAVAWH$(HHuH3HHL$8MHL$`LL$PMLD$p7D$`E3<uDl$hHL$`78D$hH\$8HHMwH# HIHɃ AHu,Iu'H@L+IEoCo HL$88tAG_7HAH#H\$8D$8D$XHT$XL‰t$LI4MHMI#IL#LE#A*8a7,DuAEI D#DuADd$0A҉U3Dž($p ;aEAȋD9$JED;uD[Dl$8EˋAAA+IڋHA+ADAtA+AAD;AǃsAsuAEuAAEArA;DBE;t\EE+C<A;rGD;sFTE3A@;sT3A#ԋED#AAA CTA;tUAE3AEtADlA;uEAFDEDu E3EDmDžTDd$0ADPD D(td$8D[EˍBAADIE+AHA+ڋDDAt3+B D;AăsAsu EtA2AEArA;DBE;t\EE+C<A;rMD;sFTE3A@;sT3D#AAA#AD DTAECA;tUE3AEtDlA;uEAFDEDu E3EDmT,3Dž($p ; EAȋD9$ED;uADl$8tA+;AA;s DDE3A;sT3A3ЋA͉TA;tUAH$E3AD+DuHL DD@EǸI$E3DPD M=HTL;H$XBDl$8DtA+A;AssuAEuAAuhudArA;DBE;t>A;s DDE3A;sT3C3ЋA͉TA;tUE3AFEDEDu E3EDmAH$+3ҋHLBD~@EǸ$IL3Bl"qDPEAHD$HDD$@&ED;DGDl$DAE""#"ً3HLÍH$ 0BH IH "HH$LHH@VD A$uE3DP EE3LE3BTAIHLBTI AE;uEt4PssPDTDPAE3DP2DPATMIEDPMt@HTL;wH$JUL3@Yj"pDP EE3LE3BTAIHLBTI AE;uE;HTEL$HTLDEEEEH$HDE3E3HT$8DECtA…u!E;B!EzD3EEAAstgE;uAAJBȉBEAHHBHBHBDH A;tHT$8듅tNAs~E;uAAAAAӋHЉDH څuAs0HT$8AE;EIDPMt@HTL;wH:SL3>Ih"nDPDd$@Dl$DE+HٔDd$@4D$HE3|$0+A"EEEDAAATIHLTI E;uEtNPss6PDTDPADPE3EDPEDPuDPiAL$DHD$8DD$@&ED;DGDl$HAE""#"ً3HLÍH$ j=H H "HH$LHHzQ $u E3DuEE3LE3BLAIHLBLI AE;uEt%}ssEDDDuAE3Du2hDu]A]LID}Mt:HML;wH$PL3_HHL$@VE3HL$@E33fVuVW\;G蜤HHuKW`W3 ۅ$DHL$@HHuH3踅HHH\$0Hl$8Ht$HH _H\$ UVWH0HH3HD$(3AHEyV\3t!ruVV %؅tf@D$":.f\$ f|$&D$ .Ht~Df>HHL$ sE3HL$ E33UuUU\;GMHHuUV3 茄$DHL$ HHuH3iHHHL$(H3H\$hH0_^]H\$Hl$Ht$WH E33E3HaT3uTU3X;غG蓢HHuBUWU DHHHt HHHH賃HH\$0Hl$8Ht$@H _H\$Hl$Ht$WH E33E3HS3u+TdT3X;غGHHuTT DHHHt HHHHHH\$0Hl$8Ht$@H _H\$WH AHEuFTY35LE3ɋR;r T"݅u^SSHH\$0H _H\$WH AHEuSY35LE3ɋR;r S"݅uR+SHH\$0H _ALLIE3H%8RALLIE3H%(R@SH0H H3HD$(vS.S X343ۅuC)f@D$":\fL$ HL$ f\$&SËHL$(H3H0[H8d$(DHd$ H3A^H8H8d$(AHd$ >H8H8d$(DHd$ H3AZH8H8d$(AHd$ :H8fL$UHHPf;HMHEL8MuUBfwif cMf;s)-uUAHEUH,AHE DL$(LEIHD$ $UtU }t HMHP]35HXH1H3HD$@3LH LswD HH |HL IL AuAAɃHT uIEEu3HL$@H3HXI E3H\$WH@HHHuPsV3bHtH;sIHL$ xHL$0yuH%HSHH;w DuHH+ʃH+Hˀ|$8t HL$ HH\$PH@_H('T3ɄH(@UAVAWHpHl$@H]PHuXH}`LehHH3HE LMHAHMƼHEE3E3ID` qHcu3HHHJH;HHtyHJH;HH#H=HBw>H;HH#HAH;w HH99H+H\$@HH;HH#KHHtH3HtODLËIKqt;DEpAAHHd$8Hd$0I#DD$(AHT$ L3dO3HtHK9uJ}t HEHM H3 H]PHuXH}`LehHe0A_A^]@SUVWATAVAWHH+H3H$H$03AMLH>LL$@D$ DIHc؅tCWH+L3HIJH9>HCLcLD$@HZ3)MzE3ɉ|$ DIILcIϺKHHt%LD|$ DIIat HHHHIt;u;E3E3IoLctQIϋQKHHtELIYo랅u)|$0LD$0DI9ot D$0H$H3 HA_A^A\_^][E3H|$ E333RD 3DE+uH+fEtHD DE+tEyH(HuvL/RHH(L3H "H(H%KH(Hu:LQHH(L3H r"H(H%KHHXHpHxLp AWH MAHHٹ 轊KD8DHH3t IK0!HuHtHxHHIKD8 車H\$0Ht$8H|$@Lt$HH A_HHXHpHxLp AWH MAHHٹ 3KD8DHH3t IK0!HudHtHxPHIJD8 H\$0Ht$8H|$@Lt$HH A_HHXHhHpHx AWH0HAAHHH8Au TH HIXt3H膪tHt;t!HH<uH;rHt"dLHHVGum3NiHt?HxHHt6HHuQIG3HFHHtLI Gt6 H\$@Hl$HHt$PH|$XH0A_Hd$ E3E333OHd$ E3E333OH\$Hl$Ht$WATAUAVAWH0IcL% E3HHAAM94uAA@G3I]EIHfD93uAIHt3HXtHt=t#HHfD94CuH;rHtfD6"dLHHv|uo3NHt?HxPHt6HHuIIF3HDHHtLI+|t7 H\$`Hl$hHt$pH0A_A^A]A\_E3Lt$ E3333NE3Lt$ E333NH\$Ht$WH0HHٺ.HHuM2H\$@Ht$HH0_H;rH+H;v3HqHDB$kHtH+A$HHL=uHd$ E3E333MH\$Ht$WH0HHٺ.e6LHuM2H\$@Ht$HH0_H;rH+HH;vIp3HDB$kHtLA$L+HIHI+LΚuHd$ E3E333LH H H%DH\$WH HcH=4H<uD3HBHH\$0H _H\$WH HcH=H<uVD3HsBHH\$0H _H\$Ht$WH0bHHt~HйHwcHޅtt uutsHH+EA$LH_u1HH< uf .0D 2H\$@Ht$HH0_Hd$ E3E333yKHHXHhHpHx AVH0HcHE3L94uAVL;HH#HAH;w HH%H+H\$PHL;HH#8HHtH3HtTD|$(DMH\$ A]9t2Hd$@EHd$8LHd$0UHMD|$(H\$ 'Y3HtHK9u 73HtHO9u7HM(H3WHe8A_A^A]A\_^[]H\$Ht$WH`HIHAHL$@$HL$HD$8Lˋ$DljD$0HH$HD$($D$ |$Xt HL$@H\$pHt$xH`_38tH;t H<u@SH HC3H [@SH d$0Hً d$4KHL$0D$09u D$49Cu3H [@SH d$8Hكd$<HL$8wt"HD$8HL$8L$8Huu3H [E3D$HT$HHH#H@CH;AH;rHH;v~HH?H;s+HtbMtHHD$D$FiH= t&H=@tH;u0HE'HE HEHE HEHE HE HE 0HEHu8H }@t3HE!P HE0HEHHEH`HE!P`HEHPHHMAA A#A HE0HHEHHHEH`HUB`A#B`HEHHPP3LMDBHMAtH3AtH3 AtH3 AtH3 AtH3 t0ttu(H `H3 H+H3H+ H#}@tAPHAPHH\$8Ht$@H|$HH ]HHHD$xD$0HD$(HD$pHD$ HHH(tAw&" !H(\$ T$SHPL IE39tAH ~HH;|3 IcHIDH$HD$(Ht\D$pD$0D$tD$4D$xD$8D$|D$<$D$@$D$D\$ XHL$ uD$@6 $HP[@SH =؃?MH [H\$Ht$ WH HHD$8с## ωL$0=t%@t L$0t$8H\$@Ht$HH _@SH H? ËH [H(?H(D$HL$H0ff#D$ HD$ fD$H0f#ff fL$D$(D$WLf.z u3HD$LI0fDT$H uE3ɹf/AAu$D$ D$ yD$ D$tT$D$f#fD$Et f fD$D$D$HD$H0f#D$?f fD$D$JL$L$HD$H0f#º?f fD$D$D$ff#ȁA ùD$HD$H0ff#f+D$HD$H0D$f#ff fD$D$D$HD$H0f#D$fff fD$D$D$HD$HH u uÁu uAHH0fA#fA;uAfA;uut3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%D%6%(%%%^%P%B%4%&%% %%%%%%%%%%~%p%b%T%F%8%*%%%`%%dLcAF@UH H} u"HcMHHHH?HH€d8MH|H ]@UH HHEHH ]E@UH HH ]E@UH HH ]E@UH H3H ]E@UH H3H ]E@UH HHEHH ]kE@UH HH ]RE@UH Hꀽt 5EH ]@UH HH ]E@UH0H H0]D@UH0H H0]D@UH H H ]D@UH H H ]D@UH0H H0]D@UH0H H0]D@UH HHM@fH ]@UH HH ]LD@UH HHEHH ]@UH HMPH ]@UH HMPH ]|@UH HHEHH ]b@UH HHEHH ]C@UH H H ]C@UH H H ]C@UH H H ]C@UH0HHM0yu HM0eH0]@UH HH8t 8t3H ]@UH HH8t 8t3H ]@UH HH3Ɂ8H ]ooppooooorj`j`oNo>o2o&ooopokll$l8lNl^lrlllllllllmm&m>mw0kkvvvvvrvXv>v2v&vvvuuuuuuuluXuDu,uukkkkxklk\kvDkk kjjjjjjjvtwttttpppppqq8qRqhq~qqqqqqqr*rBrZrrrrrrrrrrss&s6sDsTsvssssssssstt&t8tHtZtjttt0pmtmhmnnnnnnnnrndnVnDn2n n nmmmmmmmm\pnpLp@@ܕ@@̕@2@@@@}@4@@3@+dWnOA AlGRWpO6a'wj5ObFÅm]rLwx,aOMG  ķ]v+qAO pO]և+DW^ Oor;owLf[MEĀv*cMjVDEs"@0(9A8L7ʸ!A9mG-*+$%|QOz)(BF\G aUFEzfCNItwׄtxM NI{@ >K]TKFad4Cz "zOy|I)sO>BqB 7 EC)t0ō*M^2mFT }jL^6CTv]=D%OcgP0 V A H FFPB,ɨ=$HܨEye64Bl OUᏢWU]O ɊFiyŜ?Oɝa3K@~OqK M;rG¸E\\GNˇbo-XCMtY&h~vIsB U[6J[CS[bHNAF"JL G:7՝5F3+zFO${aύtA^?UX&I}!<OGFV;&OF}P($IZ^9&M[OrWG 35w~s5i+.bi;'~.gC\[bGEրEv+0PoSi)!@'QL.JifrtgHU;aއ-+ o.Eцf@"nO :i+00.PRO—-2NfHyu M7?eEd9Ē^F{w@=TR%9O'HKlqt} {ҜJ3F̉.|-!CQ7o֩Cmy4[ _eOkmM]`g.H iVFO#A,\V׉#G`` E%6QM\vWNVM.^R FHsp^QmOpNr-O&oORO%e{HqC,㟽$\E9 Ot<&KA>=a-kQG^),=Nk.4qa޼^Ol^\`U;MW.I|Kg+*U6F:(Y;J\FЗ4mc/4*&{-@`ެ)F#Ϋ>/ICVJNztI6FOEг@wiKw^ Ҩ\I;%Sjc(=O'>OСFVe\Kz~|Tn9{ŞC $&;ل.CZ0YctXT9bq^F*O !:i+00iI~+.ͩ _@^A% xSiMEQ 3߷;`[}N8úGˢ)w]+.DJQ3(9O>ܥ>G2A`tpZdfapHUeі[/tAxC(DW@Xzvi>VMYFDAtKpȞ&Aõ*.7V`Ɔ'":i+00hXt_vJ)v ؂تI'9Y:Oh7 e.{ JOe/+dWnOF]K $Lb`wG:J'Ws5i+.b!\_[CP2nD\HC*v CBg (#4DLe+.b1 ъ*Bp2r%9Y:Oh7ա΋!  Hl?<W>OrAGQ`{FL>!OL'`g$$/4EjfqJ1B*)l6ٿMp.лչL@mIh.6]PO,1Dl4L~ɋ@J7<}iFs5i+.b1IkLIC'+I~vph}OUEK}4@ VqzeG'{-F4plTI?rF֔hJuAtXJQ x;>VfNr@"=3uw-NFEH/дtF5K@~OqF9tRNNgɆ󝚫N_3haO1FIFS2IEt$c^NIe2$53QB`ϝk(ԺCy&|=HF5ꥂG)]/qNnwmjKDWw? jY>4'r`F$<;{dFP0 F:̿,LB)隇AxWObDcq# ۅ>eL:er=mG)fR IC0hxU*TK Ix5i+.b^5N$̈cpH|t$ HNOiNㄐi3O < zO1I( W0\"F-V ևA)F Wt חb@Z|KJAVgq@L\J7.jxO`OK #@;>VFhP}N<)ѪF $aOBd-@y#uLKdqkPCU .4z]bM I]Ft Ox_xrd_w~LNdL֬F4Ku@ +К#FlHi"k1%B T #8ƪd_NM&uf4Lc'wj5Obx8WFTpj7BWGCQl2FiM^eQI+Idʏ[FFFFF F F!FFF0:s *Dw= F`k;Yi+-z1OY ȿ4<OV% X$5I?#3:O4j;Yi+-zj;Yi+-zi;Yi+-zv nr=F>FDF[F"FFF0F1F2F3F%F)F*F0:s*Dw=IF y.Y+FGFHF:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/OFFFFU 8r+C+n4@FacH&8FvCj?e~ҦFFF&FF F FFk!Pi)? F F F F FFFFFPF%FQFFFF@Fʙ^AiXשFh Mm8gh z0Gd<O8m xO4yOԒMm8gh &FEFǝv\Wސy(_FF4F Z'B>âRX0eu{ڮP9Vu{0ne0E Kvne yOܦϫ|x O jIOQnO09$-1.E^*onePone |~|?ne? PE^#1$-?W2$-?W2$-pw~?neg@ne˳j@ne˳j@ne?W2$-~{S^BEy|KDphKΔӳOհrIOC'zO{TxhO{lhO6ǀ_`\`OOrOh7y) Oh7BTyI6 EZ{ْ?i]?9A!8ҏFs%E~2]r?jdN&6u^gO!B> 9}Nr*GݓkFN]ͷghhϓgAc*^Z%Ȕ2AeqKW';?B@ J$SQ`Ɔ(œO>1s-O(hHjxOi QD(ߥl+ rˆLmCBUa{Ӱ~C.`1 y/DĊY F;aAdƼ403bpc(Jg Дէ{E] E)ПS-oEH?syYz(y K@AXGA'qQU AJ s Y!WOZ{*lg(M2(TfC'>|a.  O;O.K[K8H]҇26 -&{-r: %wCjW'tVamy!@iaWBVm`ɠI-`:Bn5OC(K鞟^ﯘ=ѕK0:ښL%2J4{[kYs=BMQ!B\[/B{NsASÖ.̆I#t9JDf?kјH"tŻ-Gs?zZAe!`[ǽ6NXX$  KiiőԞ(LqmjK H(.~,-Y@o3\.Q Cpg{LKI s<_z\ LKo(t;sM|@)^vJYӞ~+IzÊChsxDpWJ?,CP0DOAoZ\q"tDk׾ TLrTIkE a`NNe76_I|kHrYM>s: .jxOˡd:aDX7iii9P5}+EutX(T6QB~ۜC]_#ͼ_Ld=xr|խhG2`?uIp4Bf6חKt3OtaG'"v0 SNwL1"(iv@ YGح+ObC4`[ԄLr?RJ{,AsEOWL"O7v8yOhKKt&1Zs~:6 B}Ftr⋪GMv2̤ pDʹfD.b[GvtH; zr\GڙYkH?FA&OA;,Ui6 IJ"x9J4ܵ;EfDװqmrE.1!YuY&HxHϣ'GVBeUNOخ|)IE@0lyדسDg,ݠeL3"5/QqCAwSk5 X;-3B{_41lxpOh6ǾƱLb VBPoz5zD #D@Fgm[M/BT|\?@zpDF[0 49Z I}AaB}KX䌠%D|DZ#`ڽWvGE>ςZ#@k{X8&oI Qd5CvSdn0@DH&'E4VwҁnB*O&-bfMlV!j hFXapf_:qJ?򥸿2cpF^W5}3ƔHjiOY<0G== 6eFpqFwHҶe_K#q}kdO-pV+UN;;z5Og5е.Í}DwMm3sG%`4n.8E40yvF'6я]A.VGމJ=PpZd1FOЊ ĽFK6eJ7`, :i+00Fh3MnMܙS{5)xKt O3CKsw`$D&l;0MHֿRUBu(dT&arrCuƋ.|uU:WPHw[ێ Z܊M`* !sG3^F0MJSkyZ 8y M3,/KqI\M;TQ'CHCh4-6C$/`zLbeLWwR"F)JȬ պFD-ʀr33yHȅF/_~_INK R(N伽I@܏Uo#RH kM?'kaIõ}EFVxCEg{Sl"vM`3)/#RW$ZI/Փg3wB$hŨ"IΕL?vk΄e}IƼ8-F"DDm'Cb**+C ,R[09|)J=AxB:RC%jAyiȳO^7q2hK_Lrz=*Fŗ5WIZgnMI/~o& IFk"t% 0H Ng4f/`CU7%(Lx#h>5qM?w;E9eZJ 57BxsCU3@@@@@@8@advapi32api-ms-win-core-fibers-l1-1-1api-ms-win-core-synch-l1-2-0kernel32EventRegisterEventSetInformationEventUnregisterEventWriteTransferFlsAllocFlsFreeFlsGetValueFlsSetValueInitializeCriticalSectionExP @` @h @x @ @ @ @ @ @ @ @ @ @@ @ @ @ @ @$ @( @, @0 @8 @D @H @L @P @T @X @\ @` @d @h @l @p @t @x @| @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @8 @X @x @ @ @ @@ @H@h@@@@@@@@@ @0@P@p@@@@@8@`@@@@@@@0@P@h@@__based(__cdecl__pascal__stdcall__thiscall__fastcall__vectorcall__clrcall__eabi__ptr64__restrict__unalignedrestrict( new delete=>><<!==!=[]operator->*++---+&->*/%<<=>>=,()~^|&&||*=+=-=/=%=>>=<<=&=|=^=`vftable'`vbtable'`vcall'`typeof'`local static guard'`string'`vbase destructor'`vector deleting destructor'`default constructor closure'`scalar deleting destructor'`vector constructor iterator'`vector destructor iterator'`vector vbase constructor iterator'`virtual displacement map'`eh vector constructor iterator'`eh vector destructor iterator'`eh vector vbase constructor iterator'`copy constructor closure'`udt returning'`EH`RTTI`local vftable'`local vftable constructor closure' new[] delete[]`omni callsig'`placement delete closure'`placement delete[] closure'`managed vector constructor iterator'`managed vector destructor iterator'`eh vector copy constructor iterator'`eh vector vbase copy constructor iterator'`dynamic initializer for '`dynamic atexit destructor for '`vector copy constructor iterator'`vector vbase copy constructor iterator'`managed vector copy constructor iterator'`local static thread guard'operator "" Type Descriptor' Base Class Descriptor at ( Base Class Array' Class Hierarchy Descriptor' Complete Object Locator'CV: ::template-parameter-generic-type-`'`anonymous namespace'''`non-type-template-parametervoid`template-parameter...NULL%d`template-type-parameter-`generic-class-parameter-`generic-method-parameter-}' }' `vtordispex{`vtordisp{`adjustor{`local static destructor helper'`template static data member constructor helper'`template static data member destructor helper'static virtual private: protected: public: [thunk]:extern "C" ) char short int long unsigned void volatilestd::nullptr_t std::nullptr_t,..., throw(cpuamp, charshortintlongfloatdoublebool__int8__int16__int32__int64__int128char16_tchar32_twchar_t__w64 UNKNOWNsigned const volatile`unknown ecsu'union struct class coclass cointerface enum volatile const & && cli::array<cli::pin_ptr<)[{flat}{for s @,@,@,@ @'@@@@(@\@@ @'@@@@'@@\@ @ (@@@ ?? EEE50P( 8PX700WP `h````xpxxxxEEE00P('8PW700PP (`h`hhhxwpwpp(null)(null)        ! 5A CPR S WY l m pr   )    Tc-^k@tFМ, a\)cd4҇f;lDِe,BbE"&'O@V$gmsmrd'c%{pk>_nj f29.EZ%qVJ.C|!@Ί Ą' |Ô%I@T̿aYܫ\ DgR)`*! VG6K]_܀ @َЀk#cd8L2WBJa"=UD~ $s%rс@b;zO]3AOmm!3VV%(w;I-G 8NhU]i<$qE}A'JnWb쪉"f37>,ެdNj5jVg@;*xh2kůid&_U JW {,Ji)Ǫv6 UړǚK%v t:H孎cY˗i&>r䴆["93uzKG-wn@  _l%Bɝ s|-Ciu+-,W@zbjUUYԾX1EL9MLy;-"m^8{yrvxyN\lo};obwQ4Y+XW߯_w[R/=OB R E]B.4o?nz(wKgg;ɭVl H[=J6RMq! EJjت|Lu<@rd 6x)Q9%0+L ;<(wXC=sF|bt!ۮ.P9B4Ҁy7P,=87MsgmQĢR:#שsDp:RRN/M׫ Ob{!@fu)/wdq=v/}fL3. iLs&`@< q!-7ڊ1BALlȸ|Rabڇ3ah𔽚j-6zƞ) ?IϦw#[/r5D¨N2Lɭ3v2!L.2>p6\BF8҇i>o@@w,=q/ cQrFZ**F΍$'#+GK ŎQ1VÎX/4Bycg6fvPbag ;s?.❲ac*&pa%¹u !,`j;҉s}`+i7$fnIoۍut^6n16B(Ȏy$dAՙ,C瀢.=k=yICyJ"pפldNnEtTWtøBncW[5laQۺNPqc+/ޝ"^̯p?m- }oi^,dH94X<H'W&|.ڋu;-Hm~$P  %-5 > H R ] i u -C Y p        %  d'@Bʚ;minkernel\crts\ucrt\inc\corecrt_internal_strtox.h__crt_strtox::floating_point_value::as_double_is_double__crt_strtox::floating_point_value::as_float!_is_doubleINFinfINITYinityNANnanINFinfINITYinityNANnanINFinfINITYinityNANnanINFinfINITYinityNANnanSNAN)snan)IND)ind)SNAN)snan)IND)ind)SNAN)snan)IND)ind)SNAN)snan)IND)ind)Visual C++ CRT: Not enough memory to complete call to strerror.Visual C++ CRT: Not enough memory to complete call to strerror..exe.cmd.bat.com./\?*   Runtime Error! Program: <program name unknown>... Microsoft Visual C++ Runtime Library(@\)@\/ )@/mscoree.dllCorExitProcess)@v@)@(@v@*@(@\@ *@(@@8*@(@l@P*@(@`@LC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~=;;=C_.,_.@`@@d@X@\@@<@`@|@@@'@|'@@4@@@4@L@@D@H@@@@\\\.\.TMPTMPmsvcrt.dllccsUTF-8UTF-16LEUNICODEccsUTF-8UTF-16LEUNICODE@-@-@@-@.@`.@.@/@@P/@/@/@0@`0@0@ 1@p1@@8@1@api-ms-win-appmodel-runtime-l1-1-1api-ms-win-core-datetime-l1-1-1api-ms-win-core-file-l2-1-1api-ms-win-core-localization-l1-2-1api-ms-win-core-localization-obsolete-l1-2-0api-ms-win-core-processthreads-l1-1-2api-ms-win-core-string-l1-1-0api-ms-win-core-sysinfo-l1-2-1api-ms-win-core-winrt-l1-1-0api-ms-win-core-xstate-l2-1-0api-ms-win-rtcore-ntuser-window-l1-1-0api-ms-win-security-systemfunctions-l1-1-0ext-ms-win-kernel32-package-current-l1-1-0ext-ms-win-ntuser-dialogbox-l1-1-0ext-ms-win-ntuser-windowstation-l1-1-0user32AreFileApisANSICompareStringExEnumSystemLocalesEx GetActiveWindowGetCurrentPackageIdGetDateFormatEx GetEnabledXStateFeaturesGetFileInformationByHandleExGetLastActivePopupGetLocaleInfoExGetProcessWindowStation GetSystemTimePreciseAsFileTimeGetTimeFormatExGetUserDefaultLocaleNameGetUserObjectInformationW GetXStateFeaturesMaskIsValidLocaleNameLCMapStringExLCIDToLocaleNameLocaleNameToLCID LocateXStateFeatureMessageBoxAMessageBoxW RoInitialize RoUninitializeSetThreadStackGuarantee SystemFunction036am/pma/p - : +% 8@$8@(8@,8@08@48@88@<8@D8@P8@X8@h8@t8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@8@9@9@9@(9@49@89@@9@P9@h9@x9@9@9@9@9@9@9@9@9@9@9@9@:@ :@8:@@:@H:@P:@X:@`:@h:@p:@x:@:@:@:@:@:@:@:@X:@:@:@;@;@(;@8;@P;@d;@l;@x;@;@;@;@SunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecemberAMPMMM/dd/yydddd, MMMM dd, yyyyHH:mm:ssSunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecemberAMPMMM/dd/yydddd, MMMM dd, yyyyHH:mm:ssen-USINFinfNANnanNAN(SNAN)nan(snan)NAN(IND)nan(ind)e+000 ((((( H   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ ((((( H ( 0SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecTZE@F@F@8F@HF@hF@F@F@F@F@F@G@(G@@G@XG@hG@xG@G@G@G@G@G@G@G@H@(H@hG@PH@`H@xH@H@H@H@H@H@hG@H@hG@I@ I@8I@XI@pI@hG@No errorOperation not permittedNo such file or directoryNo such processInterrupted function callInput/output errorNo such device or addressArg list too longExec format errorBad file descriptorNo child processesResource temporarily unavailableNot enough spacePermission deniedBad addressUnknown errorResource deviceFile existsImproper linkNo such deviceNot a directoryIs a directoryInvalid argumentToo many open files in systemToo many open filesInappropriate I/O control operationFile too largeNo space left on deviceInvalid seekRead-only file systemToo many linksBroken pipeDomain errorResult too largeResource deadlock avoidedFilename too longNo locks availableFunction not implementedDirectory not emptyIllegal byte sequence+I@I@I@I@ja-JPzh-CNko-KRzh-TWO@ENUO@ENUO@ENUO@ENAP@NLBP@ENC0P@ZHH8P@ZHI@P@CHSPP@ZHHxP@CHSP@ZHIP@CHTP@NLBQ@ENU8Q@ENAPQ@ENLpQ@ENCQ@ENBQ@ENIQ@ENJQ@ENZR@ENS0R@ENThR@ENGR@ENUR@ENUR@FRBR@FRCR@FRLS@FRS8S@DEAXS@DECS@DELS@DESS@ENIS@ITST@NOR T@NORHT@NONpT@PTBT@ESST@ESBT@ESLU@ESO0U@ESCXU@ESDU@ESFU@ESEU@ESGV@ESH(V@ESMHV@ESNhV@ESIV@ESAV@ESZV@ESRV@ESU W@ESY@W@ESVhW@SVFW@DESW@ENGW@ENUW@ENUAW@USAW@GBRW@CHNW@CZEW@GBRX@GBR X@NLD0X@HKGHX@NZL`X@NZLhX@CHNX@CHNX@PRIX@SVKX@ZAFX@KORX@ZAFY@KOR0Y@TTOW@GBRXY@GBRxY@USAW@USAamericanamerican englishamerican-englishaustralianbelgiancanadianchhchichinesechinese-hongkongchinese-simplifiedchinese-singaporechinese-traditionaldutch-belgianenglish-americanenglish-ausenglish-belizeenglish-canenglish-caribbeanenglish-ireenglish-jamaicaenglish-nzenglish-south africaenglish-trinidad y tobagoenglish-ukenglish-usenglish-usafrench-belgianfrench-canadianfrench-luxembourgfrench-swissgerman-austriangerman-lichtensteingerman-luxembourggerman-swissirish-englishitalian-swissnorwegiannorwegian-bokmalnorwegian-nynorskportuguese-brazilianspanish-argentinaspanish-boliviaspanish-chilespanish-colombiaspanish-costa ricaspanish-dominican republicspanish-ecuadorspanish-el salvadorspanish-guatemalaspanish-hondurasspanish-mexicanspanish-modernspanish-nicaraguaspanish-panamaspanish-paraguayspanish-peruspanish-puerto ricospanish-uruguayspanish-venezuelaswedish-finlandswissukususaamericabritainchinaczechenglandgreat britainhollandhong-kongnew-zealandnzpr chinapr-chinapuerto-ricoslovaksouth africasouth koreasouth-africasouth-koreatrinidad & tobagounited-kingdomunited-statesACPOCP  6 - h@h@h@h@(h@0h@8h@@h@ Hh@ Ph@ Xh@ `h@ hh@ph@xh@h@h@h@h@h@h@h@h@h@h@h@h@h@h@h@ h@!i@"W@#i@$i@%i@& i@'(i@)0i@*8i@+@i@,Hi@-Pi@/Xi@6`i@7hi@8pi@9xi@>i@?i@@i@Ai@Ci@Di@Fi@Gi@Ii@Ji@Ki@Ni@Oi@Pi@Vi@Wi@Zj@ej@j@j@(j@8j@I@Hj@Xj@hj@xj@ ;@ j@ j@ j@j@j@j@I@I@j@j@k@k@(k@8k@Hk@Xk@hk@xk@k@k@ k@!k@"k@#k@$k@%k@&l@'l@)(l@*8l@+Hl@,Xl@-pl@/l@2l@4l@5l@6l@7l@8l@9l@:m@;m@> m@?0m@@@m@APm@C`m@Dxm@Em@Fm@Gm@Im@Jm@Km@Lm@Nm@On@Pn@R(n@V8n@WHn@ZXn@ehn@kxn@ln@n@n@I@n@ n@ n@ n@n@o@o@(o@8o@Po@,`o@;xo@>o@Co@ko@ o@ o@ o@ o@ p@ p@ p@; 8p@k Hp@Xp@hp@xp@ p@ p@ p@p@;p@p@p@p@ q@ q@ (q@8q@;Pq@`q@ pq@ q@ q@q@;q@q@ q@ q@q@;r@ r@ 0r@ @r@; Pr@$`r@ $pr@ $r@;$r@(r@ (r@ (r@,r@ ,r@ ,r@0s@ 0s@ 0 s@40s@ 4@s@ 4Ps@8`s@ 8ps@<s@ <s@@s@ @s@ Ds@ Hs@ Ls@ Ps@|t@|t@arbgcazh-CHScsdadeelenesfifrhehuisitjakonlnoplptroruhrsksqsvthtruridbesletlvltfavihyazeumkafkafohimskkkyswuzttpagutateknmrsamnglkoksyrdivar-SAbg-BGca-EScs-CZda-DKde-DEel-GRfi-FIfr-FRhe-ILhu-HUis-ISit-ITnl-NLnb-NOpl-PLpt-BRro-ROru-RUhr-HRsk-SKsq-ALsv-SEth-THtr-TRur-PKid-IDuk-UAbe-BYsl-SIet-EElv-LVlt-LTfa-IRvi-VNhy-AMaz-AZ-Latneu-ESmk-MKtn-ZAxh-ZAzu-ZAaf-ZAka-GEfo-FOhi-INmt-MTse-NOms-MYkk-KZky-KGsw-KEuz-UZ-Latntt-RUbn-INpa-INgu-INta-INte-INkn-INml-INmr-INsa-INmn-MNcy-GBgl-ESkok-INsyr-SYdiv-MVquz-BOns-ZAmi-NZar-IQde-CHen-GBes-MXfr-BEit-CHnl-BEnn-NOpt-PTsr-SP-Latnsv-FIaz-AZ-Cyrlse-SEms-BNuz-UZ-Cyrlquz-ECar-EGzh-HKde-ATen-AUes-ESfr-CAsr-SP-Cyrlse-FIquz-PEar-LYzh-SGde-LUen-CAes-GTfr-CHhr-BAsmj-NOar-DZzh-MOde-LIen-NZes-CRfr-LUbs-BA-Latnsmj-SEar-MAen-IEes-PAfr-MCsr-BA-Latnsma-NOar-TNen-ZAes-DOsr-BA-Cyrlsma-SEar-OMen-JMes-VEsms-FIar-YEen-CBes-COsmn-FIar-SYen-BZes-PEar-JOen-TTes-ARar-LBen-ZWes-ECar-KWen-PHes-CLar-AEes-UYar-BHes-PYar-QAes-BOes-SVes-HNes-NIes-PRzh-CHTsrj@B`i@,`@qh@p@@@@@@Ђ@@@@@ @0@C@@P@`@Hi@)p@@ki@!@ch@@D@}Ѓ@h@@E(h@@G@0h@@H8h@(@8@H@IX@h@j@Ax@@h@@JHh@@@@Ȅ@؄@@@@@(@8@KH@X@Ph@ h@x@@@@@ȅ@؅@@@@@(@8@H@X@h@x@@i@#@ePi@*@l0i@&@hXh@ Ȇ@Lpi@.؆@s`h@ @@@@M(@8@i@>H@i@7X@hh@ h@Nxi@/x@th@@@Zph@ @O@i@(@ji@ȇ@axh@؇@Ph@@@Qh@@Rhi@-@ri@1(@xi@:8@h@i@?H@X@Si@2h@y(i@%x@g i@$@f@Xi@+@m@i@=Ȉ@i@;؈@i@0@@w@u@Uh@(@8@TH@h@X@i@6h@~h@x@Vh@@W@@@ȉ@h@؉@Xh@@Yi@<@@@v(@h@8@[i@"H@dX@h@x@@@@h@@\t@Ȋ@@@@h@(@8@]i@3H@zj@@X@i@8h@i@9x@h@@^@nh@@_i@5@|W@ ȋ@bh@؋@`i@4@@{8i@'@i(@o8@H@X@h@x@@@F@paf-zaar-aear-bhar-dzar-egar-iqar-joar-kwar-lbar-lyar-maar-omar-qaar-saar-syar-tnar-yeaz-az-cyrlaz-az-latnbe-bybg-bgbn-inbs-ba-latnca-escs-czcy-gbda-dkde-atde-chde-dede-lide-ludiv-mvel-gren-auen-bzen-caen-cben-gben-ieen-jmen-nzen-phen-tten-usen-zaen-zwes-ares-boes-cles-coes-cres-does-eces-eses-gtes-hnes-mxes-nies-paes-pees-pres-pyes-sves-uyes-veet-eeeu-esfa-irfi-fifo-fofr-befr-cafr-chfr-frfr-lufr-mcgl-esgu-inhe-ilhi-inhr-bahr-hrhu-huhy-amid-idis-isit-chit-itja-jpka-gekk-kzkn-inkok-inko-krky-kglt-ltlv-lvmi-nzmk-mkml-inmn-mnmr-inms-bnms-mymt-mtnb-nonl-benl-nlnn-nons-zapa-inpl-plpt-brpt-ptquz-boquz-ecquz-pero-roru-rusa-inse-fise-nose-sesk-sksl-sisma-nosma-sesmj-nosmj-sesmn-fisms-fisq-alsr-ba-cyrlsr-ba-latnsr-sp-cyrlsr-sp-latnsv-fisv-sesw-kesyr-syta-inte-inth-thtn-zatr-trtt-ruuk-uaur-pkuz-uz-cyrluz-uz-latnvi-vnxh-zazh-chszh-chtzh-cnzh-hkzh-mozh-sgzh-twzu-za01#INF1#QNAN1#SNAN1#IND:Yw/Ml;Zx0Nm?&{?x?5q(7>PD?%>b?>@??`??UUUUUU???UUUUUU????TUUUU?ƺ?Q#Ib?]4? ?0wG?`!?@?@Y?]??i?`÷?0?v?0ϸ?@'?m?ع?Щ0?_?pߺ?6?䍻?0?@:?p??}?? ?0>?0i?@A?pc?l?D???0Q ?P-?PIO?@p?0?@'?I?X?S?`:7?`X?x?p|??Н??0s?;?P[?`&|???pw?`? ?P?p(?7?0kE?S?+b?p?@~?`? R??๷???P?2? ??pD ?B?9(?*6?PD? " = .3i=W~ =imb;D=W>6Z= y+>>IԭwJ=07?v>Gb=M>Q= z >p=QW.>n[>p)=m6W>OJK>C>*f>8=pT=: r>]'p>qw>` '>M>[^j7>Kb|j>:bβ> >ޔ0>1k>A >+^=lg=)>,ļ,+>De}=7W`@>`z >~|'e>_M>`>1<. />:+>Os&>൏= MǛ/#> yHs=nX>JR!>11Y@/>58d%>_>)MJ$> " > H *>eVM>cQ6 !>6'Yx=%R>jtm}S=` '>Z>U&>䮿Y >?h/>77:ݸ$>a~>I{,>Y)>6{1n>Ur Vr.>Tz3&>Ra+f)>0'C>6Z d >' 4 >yU>^!-=j c?>cQ.> 5b#)>^x8o2>Lj[;>vj"=:1J<>s|d>f3>fvw=>;H9>&X;>7Y9>> 'S5>*StO9>T'4>K Z >`'>%%>΋.>Tu .(!>ʧY3p >%@~+>!n03>Pu?>d׌5>>t"v:>R=>X̤/> Ң;>[ >["`=>7>ː#>>6>\.>9Ir,>X>z8>4&/> VYS9>HVo6>a"$>S= 5>VaR:>V8>(. 0>D=Yc%>2x.&>>=K~Je#>!Ix[>dn-/!> 9٭7>qb(>aIbQ=cQ6 1>v+M<7>=*>!ư*>f[t0>To ->Or=)a ?>ė=l(>> "I c(>\, =F ET5>m0;>9lߙ%>6>ȨmG4>?7>*y W3>ay;>V >bp(=>?gҀ8:>})36,>8!> ;>PӽD8>j`&‘+>+&z*>nOv>h=O>yu`=GQ~f=oj37>k>/>dn9>hS=q)i5>m"e=?~X3>6>Tz36>J`?>!T4<> 0A8>cքBC?>6t9^ c:>VB4>ٲ6>*:8'>0<>Rm=1>"3>PkY)>'._M >5*=4<,BF>^G*>`JK&>.yCB )>O 'L>[.xJ>Hfy\PD>!MԩL>|b=})>\ >vc [1>H')>dL?>Z|F>Ni;>_j+>yC>O@L)>uzKs@>D>He@>5A3>N;kUr=CA > p.>EK>VR>>e kE>fvwM>`7nH> eF>tH/>ѤL>ev[%>J A>@ _A>pP&V6E>`"(5~7>ҹ@0$>y{@>W9oM>W L> փJ>W p0> lD>#,=>B_!">}tM>'>+Ai=1I!>u|KN> c0iN>/پA>+h->|ۈ:>r-4@>%>b?>@ ??? ?۠c?qBJeD? #D%?|?E??z?g1?Pt?t:W?sy:?????ہv`?#?4,Tw?ru\?AA?[,'?tn ?ƿD\n? V?m?^?BZ&?qq?I єX???.9&???+?{>e?к?#+?3=l}?e?O贁N?JH7?ـl@6 ?"1K ?(?^?pp?/?cj`?Y0Q?mЦm?JhAW?AA?Ň*,?Kz??3?-hk?N?U$?? /?r p?w \?H?,4?)I ?ՐO ???7zR?0?:bο?k??J?'t?aa?xO?ݾz?[R֯?Jv?gв9?H"?{Gz?f`Y4m?`?vS?beF?M0':?%f-?QY^& ??feт???B?,?u?{?U)#`?;;?"z8$?c,?f"?88?E[u?Hi?*_]?x+R?FyF?W[:?j\/?+J#?Xw?0 ?`*?h/?KN?K%?P- ?,M?7Z?@+??)A?[r??MΡ8}?5'Ps?'|h?p"^?w~S?$I$I?[`>?߼xV4?*"*?x!?UHy?g G ?  ?p}?Ljm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfa`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     @@HN #+3;CScs !1Aa  0@` inflate 1.2.8 Copyright 1995-2013 Mark Adler @0@@@@P@`@p@@@@invalid distance too far backinvalid distance codeinvalid literal/length codeincorrect header checkunknown compression methodinvalid window sizeunknown header flags setheader crc mismatchinvalid block typeinvalid stored block lengthstoo many length or distance symbolsinvalid code lengths setinvalid bit length repeatinvalid code -- missing end-of-blockinvalid literal/lengths setinvalid distances setincorrect data checkincorrect length checkneed dictionarystream endfile errorstream errordata errorinsufficient memorybuffer errorincompatible version *PXZ *PX pp *PX @@@@ЍH `xЍ@H@H `x@H88@`H `x`@H@RSDSm>0JHȧE:\CPython\cpython35\lib\distutils\command\wininst-14.0-amd64.pdbGCTLp.text$mnp .text$mn$00 .text$x.idata$5.00cfg.CRT$XCA.CRT$XCAA.CRT$XCZ.CRT$XIA.CRT$XIAA.CRT$XIAC .CRT$XIC.CRT$XIZ.CRT$XPA.CRT$XPX0.CRT$XPXA8.CRT$XPZ@.CRT$XTAH.CRT$XTZPX.rdatal.rdata$rd.rdata$zzzdbgx.rtc$IAA.rtc$IZZ.rtc$TAA.rtc$TZZ|p.xdatad.idata$2d.idata$3d.idata$4`j .idata$6 .data.data$r=.bssZ.pdata0 .gfids$x0 .gfids$y@ 0.rsrc$010A (.rsrc$02dT42p dT4pd4 p7 &t;&d:&49&2P@d 4R pRp`0d 4R pd T 4Rpd 4R pRp`0bp ` P 0d 4R pRp`0T42 p20  4 2p' T9482 p `@d T 4Rp t d T 42BB 4, *p@@&4ZXP@&4ZXP@ 4 2 p`P* %4# p`P@h 4r p ` P t d T 422 t# d" T! 4 @ 4 p@P+p`0@0d 4 rp  4 Rp. t1d0T/4.,@P p`P0@9 ((t(d(4(P@ 4 p@@!0@0( d342, p P@P  4 Rp204 "1"t0"T/"*@@7 &&&t&4&P@+@@#p`P@0) 32d1.P@` 4&$P@B@@+T 4  @0&4dbP@d T 4Rpd T 4Rp2020d4  p@@= ,t,d,4, P@PR0t4t d4t d4) t*d)4(&P@  B p`P0dT42pd42 p t dT42  p`0P20d42 pdT42pd42 p d T 42p* 4  p`P@BbB  b  4 rprp`020B2020BB  4 Rp|7LL2PBBB20 "|7››PB202020  4 rPdT42pBBBBBB  4 2PBB4PBd42 pd42 pt42 P"" dT4rpBBBBB20 dT4rp20202020BBBd42 p20B20B20202020 t dT42 t dT42  4 2p t d T 4R  4 2p  4 2p  4 2pd42 pdT42p  2020 t dT42 t d T 42 d T 4 2p d T 4 2p t d4|)*RP t d4|*+RPd T 4Rpbp ` P 0d42 p  4 2p  2020d42 p  4 2pd42 pr0@8r0@8  4 2p  4 2ptd42dT42p2020202020  4 2pd42 pd42 p202020  20d42 p20  4 Rp  4 Rp  4 Rp  4 2pd42 p  4 2p20d4  P20- td4P@td4P +t*d)4(&P  4 rP  4 rptd4P 480 p`P1 #t!#d #4#P@- t#d"4!P@??x 4h4& p `PBr020  4 P  4 Rp20  4 Pt 4  P11x-h't'd'4'Pd 4 P04p`Ptd 4 P td 4 rPt 4  P td4P# #t#d#4#PR0d 4  pt 4  Pd 4R p20  4 p00202020td4P202020t4 P20R020r0t4 Pd42 p  4 2p  4 2pdT42pdT42pd42 p t dT4220  4 2p  4 2pd 4 R p|0102P20t d 4 R|012P20B t dT4220202042 p|55H2P  4 2p2020bb  4 2p|55`2P  4 2p|+686y2Pd42 pd42 p t d T 42 t d T 4R t d T 422020 t d T 4 r  4 Rp  4 rp  R0  4 2pbbb dT4p dT4p dT4p  P  P  P2 !d!4! p P@  4 Rp t d T 4 R2 !d!4! p P@p  P  P  P2 !d!4! p P@R0 d T 4 Rp2 !d!4! p P@p20B  4 2p20  4 2pPPPPPP, 4 p`P@2 !d!4! p P@R0  4 Rp  t d 4R t d 4 R, 4 p`P@p2 !d!4! p P@pB20 d T 42p20202020T42 p202020T 4 2 p `B d T 4 Rp  4 2pd42 pd42 p  4 p20d42 pd4  p@@20$d4 p@BB20 d T 4 2p20202020  td422020d T42pB+ dT4rp@8d42 pd42 pd42 pt4  20d42 pT 4 R p `20$d4 p@BB2020T42 p202020T 4 2 p `B d T 4 Rp  4 2pd42 pd42 p  4 p20d42 pd4  p@@20$d4 p@BB2020  td422020d T42pB+ dT4rp@8d42 pd42 pd42 pt4  20d42 pT 4 R p `20$d4 p@BB  4 Rp  4 RpR020d42 b2020 d T 42p202020T 4 2 p `2020B d T 4 Rpd42 pd42 pd42 pd4  p d T 4 2p  4 2pd4  p@@20$d4 p@PBB  4 Rp  4 RpR020d42 b2020 t d T 422020d T42p2020B+ dT4rp@8d42 pd42 pd42 ptd4  d T 4 2p  4 2pT 4 R p `20$d4 p@PBB t d T 42202020T42 p2020BT 4 2 p `B d T 4 Rp  4 2pd42 pd42 p  4 p20d42 pd4  p@@20B d T 4 2p202020 t dT42d T42pB+ dT4rp@8d42 pd42 pd42 pt4  20d42 pd T 4 Rp20, 4 p`P@2 !d!4! p P@B20B  4 Rp  4 RpR020d42 b2020 d T 42p2020BT 4 2 p `2020B d T 4 Rpd42 pd42 pd42 pd4  p d T 4 2p  4 2pd4  p@@20B20B  4 Rp  4 RpR020d42 b2020 t d T 42d T42p2020B+ dT4rp@8d42 pd42 pd42 ptd4  d T 4 2p  4 2pd T 4 Rp204444444444 t dT42" "t "d"T"4"24t 4dT42pR0R0R0R0R0R0R0R0R0R0R0R0R0R0R0R044444444R0R0R0R0R0R0R0R0R0R044R0R0R0R0R0R0R0R0R0444444R0R0R0R0R0R0R0R0R0R044R0R0R0R0R0R0R0R0R04442 p|MM2P42 p|MM2P42 p|JMTM2P42 p| MM2P42 p|LL2P42 p| NN2P20dT42p2020BT 4 2 p `B d T 4 Rp  4 2pd42 pd42 p  4 p20d42 pd4  p@@2020 t dT42d T42pB+ dT4rp@8d42 pd42 pd42 pt4  20d42 pd T 4 Rp20444444 P@!( ( Ԅtd4 {! {T 2p! d 4 70! 70BBBd 4 Rp| a42Pd 4 Rp|8N2PP d T 4 2pd42 pB42 p|.9h2PB2020B2020  4 2pR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 RpR0  4 Rp  4 2p  4 2p  4 2pBR0  4 RpR0  4 RpR0  4 RpR0  4 Rp  4 Rp  4 Rp  4 Rp  4 Rp  4 Rp  4 Rp  4 Rp  4 RpBB td4rP td4rPBB dT4p dT4p20R0202020R0d42 pd42 p  rp0P  rp0Pd42 pd42 pr0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r02020r0r0d42 pb  P t"d!4 P  P- t(d'4&"P@2020 TG> `!tFs !4Ds !s !s ?4?!4@ ^P!!t>dA4@ ^P!!t>4@ ^P!!t>4@ ^P! Dp`0@!A!!GGTJ@BCv!!v!!!! @ABCTJ!0 4~ p`P@YYCQDIFATG64HIp`!EIl"!Il"bb t dT42 t d T 42 4R p ` P dT 4 Rp@ /t/d/4/~!P@0 4xn p`P@`   4 Rp20  4 2p20  4 2p2020PP- t(d'4&"P@ t"d!4 PB20B20d42 p  4 2p2020  4 2p  4 2pd42 pd42 pd T 4 rp  4 2p  4 2p20Bd42 p2020d42 pB20) t"d!4 P@BB20Bd42 p  4 2p2020  4 2pd42 pd 4R pBd T 4 rp  4 2p  4 2pB  4 2p  4 2p d T 4 2pd42 pd42 p t dT42  4 2pd42 p202020t4 PBB20d42 p  4 2p20  4 2p  4 2pd42 pd42 pd T 4 rp  4 2p  4 2pB  4 2p  4 2p20  4 2pd42 pd 4R pBd T 4 rp  4 2p  4 2p20dT42p  4 2pdT42pd42 p d T 4 2p 4R p`PB20B td4P  4 rp  4 rp 4r p`P 4 2 p`PB  4 2pB dT4p  4 rp  4 rp t dT42 T4 R p `B td4rP  4 rp  4 rp 4R p`P d T 4 2pB dT4p  4 rp  4 rp42 p|z  2P42 p|: D 2P 4m hp@0B 4m hp@0B 4m hp@0B 4m hp@0B 4m hp@0B 4m hp@0B 4m hp@0B 4m hp@0B p ` 0 Pbb p ` 0 P 4r p`P p ` 0 P  4 2pd 4 rpd 4 rpbbbb  4 2p d T 4 rp d T 4 rp  r04 r pd T 4 rp dT 4 rp  4 2p t d T 42  4 2p d T 42p d T 42p  4 2p d T 4 2p  4 2p d T 42p d T 42p  t444t d444  4 Rpd T 4Rpd T 4Rp  4 Rp20b  4 Rp  4 Rpd T 4Rpd T 4RpB  0P  0P  0P  0P20202020BB t dT4220d42 p20' TN4MH p `@0202020 d4 p P20 d4 p P20 d4 p P20 d4 p P 0 P 0 P 0 P 0 P2020$4 p`P@xT 4 r p$4 p`P@xT 4 r p$4 p`P@xT 4 r p$4 p`P@xT 4 r p0B0B0B0B P@h P@hd 4 p|:,, 2Pd 4 p|)s*2Pd4p|n++2Pd 4 p|*3+2Pr0r0dT42p d T 4 RpB J0@@  4 2p4 R p`P4 R p`P20B4 R p`P4 R p`P t d T 422020 td42020BBB  4 2p  4 2pBd42 pBd42 p42 p42 p2020BB d T 4 Rp d T 4 RpT 4 r `T 4R `  4 2pB  4 2p t dT42d42 pBBB  4 2p2020B20  td42|q9r$xrq~r?2P2P4 2 p `|uuX2PBB t4d 4R p20  Rp0P *0@@2 0|@k2P2P P t d T 42- I p`0P@0bp`P0d T 4Rp d T 4 Rp0 4qf p`P@  dT 4 Rp) 4K@ p`P@B2p|~~2P202020202020BB  4 p20B42 p|xx2P42 p|w+wo2P  20|MwVw2P42 p|wx2PBr P  b2020 t d T 42B d T 4 2pB42 p|-7)2P d4rp|vʓC2PBBBBB2020 20|Xee20BBd T 4 rpbb  4 2p 4Rp ` P dT4 RpT 4 R p `20202020  t d 4 R|Тm`RP d T 4 Rp2020  t d 4 R|̣iyRPb  4 2pb  4 2pBd 4 r pbbdT 4 p# #t#4#PB0|rPB0|IvrP  4 p|;_ rP  4 p|?srPBBBbT 4 R p `d42 p d T 4 Rpr 0r 0d 4R p4 2 `|7n2P 4 p ` P4 b p ` P 0 4R p`P b p`P0b  4 2p  4 2pBB42 p|-m2P  20  4 2p202020B20bR0bR0bR0bR0bbbbR0R0R0R0  4 Rp  4 Rp  4 Rp  4 RpbbB20B. d4 p P@  4 rp t d T 4R20|Lz2PdT42p2020dT 4 pdT 4 pt4Pt4P  4 Rpd T 4Rp  4 2p  4 2p  4 2pd42 pt2020 tdT 4 d T 4 rp t d T 4 r20 t dT42 t dT42  4 2p t d T 4Rd42 pd42 pdT42p  4 2p tdT 4  t dT42d42 pdT42p t dT42 t dT42  4 2p20d42 p  4 2p20BB  4 2p 4 p@@  4 2p20 t dT42 d T 42p t d T 42 d T 4 2p20  4 2p20Bd42p|l2P  4 Rp|A*2P42 p|v2P20d42 pd4 r p|(C6]2P2P2020| !2P  4 2p tdT4td42B20202P2P2P2P2P2P2P2P2P2020 4R p ` P dT 4 Rpt d 4RdT42p t d T 4R t dT42  4 2pBB  4 2pd42 p2020  20  4 2pr PBB  P  RPBBB  rP  4 2p2020d42 p42 p|2P42 p|2P42 p|Iy2P42 p|1?2P2020Bbb td4P dT4p dT4p dT4ptd T4d42 pd42 p204 p ` P' E4C p`P@`BbBBBd4 Pd4 P  4 2p  4 2pd pPd pP tdT 4   4 Rp  4 pbd4p dT4pBP@ tdT 4 dT 4 p tdT4 t d T 4 rd 4 r pdT 4 42 p|ii2P20!T4 r p `@0  B4R p|ij'jj'2P20  4 2p  2042 p|#n.nA2PBB  2p`P04 R p| ooYooY2PBBB d 4 2p|wws2P 4 p`Pd42 p( 4 p`P@p t dT42- T4 p `@@- T4 p `@@1 T4 p `@`  4 Rpd42 pd42 pt d42Pt d42Pd 42pd 42pB  4 2p(tdP@pBBBBd42 pd42 p20d42 p  4 2p  4 2p2020d42 pd42 pB|7=2P20| 2PB|Ӗ2P202020  4 2p  p`0P4 R p`P$d+4*( p@0d T 4 Rp dT4p42 p|2P t dT42(d4rpP@842 p|2P  4 2pBBb td 4 r tdT4  4 2p20R0@($dK4JH p@0dT42pdT42pdT42pdT42p  4 2pdT42p  4 2pdT42pBd T 4 rp d T 4 Rp dT 4 rpBt d 4R| Q72P t d 4 R|72Ptd42 t dT42dT42pd42pt d 4R|2P2020  4 2p"  p`0P@h'  p`0P@pB2020  4 2p  4 2p tdT 4  tdT 4  tdT 4  tdT 4 2020B 4 p ` P( 4 p`P@pd42 p  4 2pdT42p t d T 4 R% 490 p`P@pd42 p  4 2pdT42p dT 4 Rp% 4[R p`P@2020d42 p  4 2p|2PB% T4r p `@8r0dT42p+t4 P@p4 rp`Pd42 pB42 p|x2P  4 rpd 4 r p t d T 4 rdT42pB2020B1 dT4p@BBB20202020 td4rP2 02020 dT4rp  20  4 2pT42` td4rP  4 2p2020d42 p- 5td43 P@PBdT42p  20  4 2p|2P  4 2p t d T 4 R t d T 42  4 2p' T4 p `@  4 2p$d*4)& p@  4! p@d42 p 4 rp@8  4 2p r p`0P@0 t dT42  4 2p( d*4)$ p@  4 2p$d(4'$ p@  4 2p) d)T(4'$p@20d42 pd42 pBdT42pBdT42pd42 p  4 2p20|z2P  4 2p|2PBBB t 4R|IG2P p`0|#2PB  4 2p|g 2PB42 p|2H2PbR0bR0bR0bR0bR0bR0bR0bR0bR0bR0R020R020R0  4 2pR0  4 2pbb20|++2P20|%,0,2P  t d 4R|-#.1.F.RP  t d 4R|.%/3/H/RP  t d 4R|'o(`}((`RP  t d 4R|(t)y))yRPd42 pdT42pd 4R pd T 4Rpt d 4R t d T 4R2020B0@HB20d 4 r p  4 Rp|4 5452P2PBB 0 P d T 42pBB42 p|M55)2Pd 4R pB d 4 2p|*9Z9C2P d 4 2p|:H:Z2Pd42 pd42 pBBBB t d T 4 rBd T 4Rp tdT4b20B42 p|ABq2PB tdT 4 dT4p20202020r0r0d4 p- Utd4S P@X20d42 p-  p`0P@td4220B-  p`0P@t d42P t d 4 2P  b  bB42 p|xx2P2020BBbbbbR0@(d T42p 4 Rp`P@(  4 2pdT42p  4 2pdT42p  P@@  4 rpB$  p`P0@- Etd4C P@`BBBBBBBd42 pBBd 4 r p|ǑRP  4 2pd 4R pd 4R p  4 2p|CZ2P  td42|d2P  td42|S2P t d T 4R dT 4 Rp  4 2p t d T 4Rd 4R p tdT 4 d4 p' US p`0P@x202020  hB20B  t d 4 2|V__2PdT 4 p 4P Lp@P0d42 p& h p`0P@& h p`0P@0  hbb  hbb' h 4! p `P@+ x h4# p `P@B h4R p`P 0t d42P20 d 42 p|jqEq2PB20  4 2p|ͻ2P0B20"ejPheZmhin e~ohd"pXi@p@jpooppooooorj`j`oNo>o2o&ooopokll$l8lNl^lrlllllllllmm&m>mw0kkvvvvvrvXv>v2v&vvvuuuuuuuluXuDu,uukkkkxklk\kvDkk kjjjjjjjvtwttttpppppqq8qRqhq~qqqqqqqr*rBrZrrrrrrrrrrss&s6sDsTsvssssssssstt&t8tHtZtjttt0pmtmhmnnnnnnnnrndnVnDn2n n nmmmmmmmm\pnpLpPropertySheetACreatePropertySheetPageACOMCTL32.dllSetLastErrorSetFileTimelstrlenAUnmapViewOfFileVGetLastError7GetFileAttributesACreateFileACloseHandleCreateFileMappingACreateDirectoryADosDateTimeToFileTimeMapViewOfFileTReadFilehGetModuleFileNameA#SetPriorityClassGetCurrentProcessGetStdHandleLoadLibraryExAiGetModuleFileNameWCSetThreadPriority SetFilePointerResumeThreadjGetModuleHandleAMultiByteToWideCharGetTempPathAGetCurrentThreadLoadLibraryADeleteFileA0SetStdHandleGetProcAddressLocalFreeBGetFileSizeRemoveDirectoryAFreeLibraryCreateProcessAFormatMessageAGetTempFileNameAGetPrivateProfileIntAGetPrivateProfileStringAKERNEL32.dllEndPaintBeginPaintReleaseDC_UpdateWindow|GetParentoPeekMessageA>GetDlgItemSetCursorSendMessageASetDlgItemTextASendDlgItemMessageAGTranslateMessagepCreateWindowExADefWindowProcARegisterClassAWMoveWindowJMessageBoxA(ShowWindowwsprintfAGetSystemMetricssPostMessageA6GetDC"LoadCursorADGetFocusGetWindowRectDispatchMessageAUSER32.dllVCreateSolidBrushDeleteObjectSetBkModeTextOutASetTextColor7CreateDIBitmapSelectObject=CreateFontAGDI32.dllrRegEnumKeyExAkRegDeleteValueARegOpenKeyExARegSetValueExARegQueryValueA\RegCreateKeyExARegQueryValueExAaRegDeleteKeyATRegCloseKeyADVAPI32.dll3ShellExecuteASHELL32.dllSCoInitializeCoUninitializeCoCreateInstanceole32.dllRtlCaptureContextRtlLookupFunctionEntryRtlVirtualUnwindUnhandledExceptionFilterRSetUnhandledExceptionFilterpTerminateProcesspIsProcessorFeaturePresent0QueryPerformanceCounterGetCurrentProcessIdGetCurrentThreadIdGetSystemTimeAsFileTimeTInitializeSListHeadjIsDebuggerPresentGetStartupInfoWmGetModuleHandleWRtlUnwindExZInterlockedPushEntrySListXInterlockedFlushSList)EnterCriticalSectionLeaveCriticalSectionDeleteCriticalSectionQInitializeCriticalSectionAndSpinCountTlsAllocTlsGetValueTlsSetValueTlsFreeLoadLibraryExWWideCharToMultiByteGetCommandLineAGetCommandLineWCreateFileW&GetDriveTypeWEGetFileTypePeekNamedPipemSystemTimeToTzSpecificLocalTimecFileTimeToSystemTimeWriteFileWExitProcesslGetModuleHandleExWGetACPGetConsoleModeRReadConsoleW<HeapFree8HeapAllocGetDateFormatWGetTimeFormatWCompareStringWLCMapStringWZGetLocaleInfoWwIsValidLocaleGetUserDefaultLCIDLEnumSystemLocalesWSetEnvironmentVariableASetEnvironmentVariableW?HeapReAllocGetConsoleCPGetStringTypeWGetTimeZoneInformationSetCurrentDirectoryW GetCurrentDirectoryWPGetFullPathNameWMGetFullPathNameAOutputDebugStringAOutputDebugStringWWaitForSingleObjectExCreateThreadnFindClosesFindFirstFileExAtFindFirstFileExWFindNextFileAFindNextFileWuIsValidCodePageGetOEMCPGetCPInfo.GetEnvironmentStringsWFreeEnvironmentStringsWGetProcessHeapSetConsoleCtrlHandler9GetFileAttributesExWSetEndOfFile SetFilePointerExFlushFileBuffersWriteConsoleWAHeapSizeGetTempPathWDRaiseException2-+] f/     DB@ @=@(@(@(@(@(@0@?@@A@`5@@@C@=@BB@PSTPDT@@@ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZЊ@@@@@@@@@@Ԋ@@@@@@@@0@..u@@@@@@@ȫ@ԫ@@@ Ь@@@@(@@@P@h@x@Software\Microsoft\Windows\CurrentVersion\UninstallSoftware\Microsoft\Windows\CurrentVersion\Uninstall`@L @p@ @@X#@@@@@@"@@@@@@@@ȫ@ԫ@@@.?AVDNameNode@@@.?AVcharNode@@@.?AVpcharNode@@@.?AVpDNameNode@@@.?AVDNameStatusNode@@@.?AVpairNode@@@.?AVtype_info@@J\ >@(<RLTXhBxT2H  K L " "X#8h#$@$K&XL&(p(**m+p+n-p-L.L. 0 00 0K10L1 3< 3L3`L34h48686667799::<:::@?@?C(C:DP{>>>>>>??3?x?????@$@@@1B^p,@^^,^K_d-L__8-_x`-x` a, aa\-a&b -(bb|-bcX+cd`+diP(is(sw@)w),P-т,Ԃol-pl(\)T(T)x(;h)<ڇ(܇z)|,(,)(ȏt)ȏ ( )v(x7)'a'd'M'řX*ș * F*H+šx*Ě*C*D8+ $- $0&`}%# D_#`}l&Рt& '+d&,G#H|# +,%},@|&-,Ȩ?,@(#@!ԯ$,%,e"h"" #P#_t#x#Il"I|"|"@(Q($ 8%|T&%M'&!v!v!""$" ^P!^~X!~l!!!0H"9H!X4($4"&$H%8'Li`$l&t%X'L$L'&%('D$D'%U'XL$"l%dT$g&p8$&qX%t)D',l$5&8%Pd'PD$&d%:P'<W#Xq$tH&V"  $  %$X$%$ &s s  !$ !$]0!"d0&`H((Lj$l@%$"%$P8(P|(|8))$%0%(V&X0'E|$`&%nt' $ $' % '      ! ! # #M#x P##h #|$-|$:%-<%%-%&.&&-& '- ''-'{(-|( )- ))-)*0*L+L1L+,1,,0,-d0-.-00-V-t0X-~-0-q.l/t.g/x/h/e0/h0[1/\11.1`3.`33 /3k5/l55,/574/77L/79T/9H:/H::/:; 0;;<L0<<>/>?/@A0AC00CD0DHE0HEE|1EE1FF/FG. GG\0GUH|0`HHl0(II0IVJ.XJzJ/|JJ.JJt.JJ|.J(L.4LL.LM.4N=O.HOcO.dOTP$.TPFQ0.HQDRH.DR6S<.8SST.SS\.S>Tl.@TTd.TV1VV1V\W1\WY1YZ1@Z[2[],24]^@2^`l2``\2``2aad2aa2aa2aIb2Lbc1c5e1Heie3lee$3ee 3ef3 ff2ff2LgEh,3HhKiD3Lii2ii3ij\3jhkl3kk2k=l2@lZl2\lvl2\mm2mm2mm2mln3nn3ndo|3o*p3,pxp3pp3 q-q30qDq3Dqr4rr4s\s3\ss3ss38t|t3tt4tu4uuX4vv4v=w6@wiw6lwx7xx6xyh6y6y68y^yp6$z?zH6@z[z86\zwzX6z:{x6<{Y|6|}P6}/}@60}K}`6P}}4}'~6(~~x5~546'4($H5$Ɔ4Ȇ4̈,5̈1h54Љ$5Љ5?5@~5@7K7L77:7X77 h7#`7D~P7H7?,8HX48`<8JD88$8К8t8Dl8DkL8|8ޜ8ß8ğ8998X9Χ9Ч99*9d8p9 9Ъ89ǫx9ȫ988X9S9XD:Ǯt:Ȯ::h@;3:4:;;w ;xƷ;ȷ0;<:X; ::l:%`;0 : R9Tɾh;̾b;d;;;x; ;D<<<4< (<=<@<|x<|p<<~<<Q<T<0,=0lD=l8=P==C$=Dw =x== < 6<8k<l<<<*<,_<`<<<==@Z|=\="\=$Sd=Tl=t=3>4== >\>uh>x%<>(L>X>(>A4A,Ax$AA@l@l8@8:@<@>>b>d|>>i>l>> ?s?t ,? dD?d P? h?x?t?t?g?hW?X?4?4?C@D,@8@4@@4P@\@d@>l@@t@>@a@d>ZdA#A$oA|`A`A B\BxB3(B4tPB|BBuBxB B  B  B B9BlBBB B<sBBCz0C|nXCpDC~pC"C,DDXDQDTzD|CDC`zC|8D Dd )!C,!!C" "C "#D# $$D$$,D$!%HD0%K%@DL%%C% &C &&C&?'C@'y'C|''C''E'(E((F(H)EH):*E<*_*E*C:EH:;EH<AEApCLEpCEhEEgMEhMMFM,O0E,OKOELOjO(ElOO EOO FOPFP5RpF8RRXFRRdFSBT8FHTUHFUU0FUU(FU(WF0WWFW(YF(YuYFxYYFZ]]$\>?,\`?'@`\@bAL\dAAD\A$B\$BJB\lBB\BqCx\tCD\D9E\TETF\TFF\FF\FF](GTG]TGG]G!H]H7L0]8LL ]LMX]M _] _>_]@_T_]`g`]h`sp]s[t`]\tv]vw]xx^xx^(ycy^dyy^y!zD^`zwzT^xzz\^zzL^z+|^,|}^}-~^0~~^~I^L^h^ht^|^׀d^؀l^_āb_l_$_L_,_|_1t_4ևX`؇z`|lj`ȉ7`8ы`ԋx aԌ`Ԍ`܍ `܍aq,`t_/_0G_X_ޒ__;_Hn_p_e0ahXaHa|a a \a ˟a̟a(a ^a(\a:aP`b'b(ϦbЦ54b8ttj\VzxYYtdWDEEu*jWEutWhHZFjӃ WjYYEuhXEt WhHZFjӃ \u[3_@^]USVuWEu@EjhPjjhW@E؃HEuUVEYuPt PXE2WjYYt23PhjPPhW@E؃uWh`ZFWjYYtWjYYEPuu4EEPPPSTE} u SPK|$u΁?PKuN .D$D$$D$D$ FFD$OD$GȍCL$$3ɉD$8FD @AuL$@QAu+ʍD$@HD$(<\t|$@OGGufZFfD$@PPE|$@3D$0D$98t9ʍAD$Au+L$Qt$$ROw D$G8uNj|$GPt$$D$HPg L$@L$@QAuD$(+ʀ<\tJF T$@h&@PF3Pvt$@t"T$8QvOvQ\]|$,t$}t7ut0}t*t&39EhFYӋU׋_^[]UQEPh\Fu F tuj hZFF ]UQEPh\Fu F tujM hZFF ]U F3ʼnE=LFVu u:h\FtEuh\F5FFYY3h\FPELFW\FPWVF =LFuh\F5FFYY{34Fd|YYtF rh]F5F?j4FPjLFtPWFYYh\F5FF 3_M3^.^]U0F3ʼnEVu W3WȲEyPh$]F5FF PPPPPPPhD]FVF$u3PhEjWhEIJEy PhP]FxRhpEPy Pht]FRPQPy Ph]F1PQy Ph]F9t!PQ,y Ph]F9t'PQDy Ph]F9t!PQ$y Ph^FhPjWWhEjRPQyFPh@^F5FFtQPtQPElPQPQEhZFFYM_3^[]U EPEPEPhl^Fu Ft$uuuhEPEPhp^FFYY]54FFYUlF3ʼnESV5|EhFh^FPDž֍PFStEhZF5FE5Fh^FP֋5EPPEPhօt!PPEPhօt3SWOGGufZFfCu+OGGuˍj˃jPE_M^3[;Z]USV5EWh_FWh4_FWEhL_FWEhd_FWht_FWEh_FWEh_FWEh_FWE։EE}}}t{}tu}toh_FЋYt=h_FWh_FWFӃFpFj[jVUP6WUuEFEFEFE䣰F33@_^[]UXF3ʼnEE SV5EWh[FS]Eh_FSEh[FSEh[FSEht_FSEhd_FSEh_FSEh_FSE֋uąi}_}U}K}A}7/}%? hW詀YYuWh_FjYPR jXh`Fh5pFE֋Mhj`FVm} +ljEjZUċtUċȋE3ɉ 8UuVjUYY>t6r6YhF|EEPS-YYu*uFJVWSӉ ~Wf8 UYEUSEY j3@e_^[M3W]US] 3VW3MPFPuGtYYjhjjVhPE@E5EjjE֋5|EWjEWjWE tuUQ}YYu EEh(`FjYPYYujujjWE;s jWEFP-Yt(3PPPWE \EjE PV3W(E E W{V4t,aF3x܋Nt +F+FSW~++щF+7h'YPhlEtwSjh`aFPEt^3PPP7PjYtU0VWσ QAu+ʍFP|YWFFLE3@HEdaF3_[M3^O]UW3EPEEP`EjWWWEPEu_]ULF3ʼnE} SVuWtuuu VEEPVXEjxEj YhaF3QQQQQQQjhQQQPPEPW4EjWEDEFˍQAu+QS@EjjWhWB]UF3ʼnEPP P PhfFhPP5FF$tPYM3A]U  5F3ʼnEE S]VuWN-tc-t-PuhhSEVhSEVjhhSE3@M_^3[)A]FtPjhrhSEh`Fh@fFP|E5E PhShfFhS~1t)~8jjhpSEPtE5EjjhpSpFFPtEjjhkSPEFэrBu+րF\tyGGufZFfQAu+I!F 6\ F5Et9thfFhSg=FhgFhSփ u (gF*=F=PFt:hLgFhShhgFh5pFt3ҋWE=FtD=Ft;h|gFhShhgFh5pFt3ҋBVE3@UF3ʼnE} NS]V} c} =F=FhgFhSDžgFE3ɊF AuWOGGugFFfBu+OGGuFʃtQhFhgFP-hjlE=EP׉PPYYtPhgFj4YP t VhSEh(hFhSEVGY_FF3tPVhrhSE95FuPhSEVVhStE3@%Ex8ujjhpSEPtE3M^3[<]UF3ʼnESFEVWj43VPR3u} j4VEPmR=dE E8EV׉EEuЋ5(EPE,@Ek։EEPEElEM0@։EEPEEmE7@։EEPEEnE:@3EVE4׉EEEEP]E uuuE,EM_^3[;]h\FtEu3hxhFPE@FtUXF3ʼnE=Fu3AhFEhbFP|E EPhjEPhEuuE3@M3;]UF3ʼnEjjhZFhFhhFjLE ,P|hhFP|E |jhhFPjEM3:]U -F3ĉ$SVW5F=ED$hFVPhZFhhFSjPT$FpY5FD$VPhZFhhFSVT$FGY5FjPh FhZFhhFS5F5EjhhFS5FPFjhiFS5FFFj VhZFhiFS5FjPh`FhZFh iFh(iF5FhhFhZFh4iFS5FFj PhZFhDiFSNFFuZFXiF3ɺF :uAuun`iF3 :uAuauEt<̀=Ft1hiF3 :uAujhpiFhxiFhEPE^F5TFLEFtPxEFtPHE$3_^[3x8]UEE :utP:Quu3]]U`F3ʼnESVWh3PS$EPhiFPhiFPhiFViFPWVPhiFVPWV@V诿jD^VSPpM3DžfPPhZFSVSSSPSEtO5XEjjpEPhEP E5A@jV=Ej$hjFhjFj׃t334FZF9 Ɗ:utP:Quu34PPhkFVuT3 cF: uAu4FE8jPhkFhEPPPhtkFV\uPPhkFV!utVPPhkFVtɍPPhkFVueHEtZtUCRPPhkFVu ](PPhkFVbuOA; vxEt @CHEVMtSPhkFP|EPhDlFP|Ej@hhlFPjwQ3PPhljFPE3@M_^3[/]0SVWFVW3S$EVhFSETFuHE|lF}3@ C t~z3F9Fu5#90~, 88tSShPjFSEC8j\W ?YYttjhlFP# lFtlF3_^[UQQS]3VWU@;u!;r+;+s.t Bu;r+3ҋ ֋;3ҹEU+؉][ BJBBBBBBBB B B B B BuU3ҋ]Nj3m>UEBBBBBBBBB B B B B BBrt Bu3ҋNj3 _^[]UQS3W9E  |9EsjVPPu Euϋ3uȁ;+º;r+;r+ʾ;r+^;r+ _[]UEVRP`YY^]Uu uMYY]ø mFUu3]]UQSVuӅtt33 mFBuW E3ÉUȋ} qF3 uF3 mF3 yF3ȋ qF3 uF3 mF3 yF3_ȋ qF3 uF3 mF3 yF3Wȋ qF3 uF3 mF3 yF3_ ȋ qF3 uF3 mF3 yF3Wȋ qF3 uF 3 mF3 yF3_ȋ qF3 uF3 mF3 yF3W‰}ȋ qF3 uF3 mF‹3 yFm,rH3Ãȋ qF3 uF3 mF3 yFكu_t33 mFBu^[]USV#ދ؋#uWtt33 }FBuz E3_ȋ F3 F3 F3 }F3Wȋ F3 F3 F3 }F3_ ȋ F3 F3 F3 }F3Wȋ F3 F3 F3 }F3_ȋ F3 F3 F3 }F3Wȋ F3 F3 F 3 }F3_ ȋ F3 F3 F3 }F3ȋ F3 F3 F3 }Fm9rH3ȋ F3 F3 F3 }Fكut33 }FGuӺË##_^[]3tt3uUQSVWE +7mvu_^[]UF3ʼnES]VW} 3Dž| 3A@|@ ||h|W|FÃt֍ t6|Ãt֍| u3M_^3[%]UEVRPYY^]Uu uYY]UHSVW]K;COs lj}ENC+ڋQ8ƉEދA(EЋA,EA0EA4E̋ALE܋APE3@]Yqt7y f8f<3*"~< w3^<@H#EF8jX_^[]AL FAT AP FAXUQ‹SVWr33ۉEG9^4u#N$WPr(R F4uE9^(uN$~(^0^,~(];rW+Pv4 f0F(O+~0;v+WPF4F0Pj +tES+Pv4T ^0~0N(9N0uf0F,;sljF,3_^[]U tjX_^[]Ã> u3SAY;FtjES^Yt jF 3빅tAt@t P b03jXUQQSVW3]39}v=ڃs3Ɂ;uFt3jX+ƋG;}rȋ]lj3_^[]UQSVW_u {<sjjX9tES<3ʉc8+щS<rK8C8D5FK8sStVYtWjW6&9>tV^Yt6YPNPWh@uVuWjYYE=MEQPsYYËeuu[}u2EEPYjX:PPjh@\UF3E]UFj Y+ȋE3F]UEM ]UEVH<AQAk(;tM ;J r BB ;r (;u3^]ËUEu2]ùMZf9uH<ȁ9PEu f9A]du2dVFP;t3u2^ð^KtrPbYt2jY| u2 ur  c Uu} uuMPuUuu`YY]t hFYwJj} Y' U}uF u2] u j Y]U Vutu|7t*u&hFKYt2WhF8YDFuWFj Y+ȃ3FEEEFEEuE_^]jvjhFeMZf9@u]<@@PEuL f9@u>E@+PQgYYt'x$|!EE3Ɂ8ËeE2U&t}u 3F]U=Ft} uuuo YY]UF3Fuȃu hFYY#E]UF3Fȃu]kuhFYY]UuYH]UeeFVWN@;t t УFfEPEE3EEE1EE1EEPEME3M3M3;uO@u G ȉ Fщ F_^]33@3ø@33hFEhF Yðhhj uj8讑HH覑HH39 FøhFødFU$SVj\tM)3hVP5F |xffftfpflfhEEDž@jPEVP E E@EEEVXۍEEۉE|EEPxEu !F^[]UDjDEjP EPEEtEj X]3jEȅu2øMZf9uA<8PEu f9HuۃxtvՃh@|EUE8csmu%xu@= t=!t="t =@t3] ̃%FSVtFtF;sW>t 8׃;r_^[SV|F|F;sW>t ׃;r_^[%вEh`@d5D$l$l$+SVWF1E3PeuEEEEdËMd Y__^[]QU%F(S3C Fj me3 F3VWF}S[wOW E؋MEineIE5ntel ȋEj5Genu XjYS[wOW uCE%?=t#=`t=pt=Pt=`t=pu= F= F= F}EEEEE|2jX3S[]؉sKS EܩEEt = F_^tm FFtUtN3ЉEUEM3Ƀu3u/FFE Ft FF3[]39`FË вE3@̃=Fr_D$ fnpۋT$#+o fftftff#uf~3:E3D$ST$t :tYtQu WV ؋ ~333ƃu!%t%uu^_[3ÍB[ËB:t6t:t't:tt:tt^_B[ÍB^_[ÍB^_[ÍB^_[UW=F}wwU  fnp۹#σ+3offtftf#uf#DžEЃSf#3+#I#[DžD_U t93t;DDžt Gufnƒf:cG@LBu_ø#fft#Ϻf#ufft@ft뽋}3كE 8t3_UVuW} t N3 8sFN 3 8_^]`USVu WEE^F3FPSE]}WE @fEE}~ FGGLEteVMxf~UE8csmu7=lFt.hlFt5lFjua֋u EЋ9~ tlXMt]s]E$t,]~ t!hFFPuSE_^[]hFFP^ ^SukMӋI@j Bu2u~CjYU}uPjU Y]&U]*'Uu&Y]Uu&Y]UU ME]UU ME]UM33]UE]UE]V6v&&Y^V6f&&Y^ø-@ø2@Ã9Ã9Uu;&Y]Uue&Y]!ËËÃ9Ã9V6&&Y^V6%&Y^UEM ;u3]Ã:utP:Qu u]UuEtV0P%Yu^]UEŝH 3iГAu]U 33S] Vh(h-@h2@PKEQP]htz΍QAu+t| u DuAEWP/%Yt7'GVu}PE%M 3 uu3u EEWE$Y_V$EY^[]̋L$ D$׋|$<i % Fs D$%Ffnfp+ρ~L$$ffGfG fG0fG@fGPfG`fGpu%Fs>fnfp rG stb|9GD$tGutt $GuD$SVWT$D$L$URPQQh@d5F3ĉD$d%D$0XL$,3p t;T$4t;v.4v\ H {uhChChd_^[ËL$At3D$H3Uhp pp> ]D$T$Ut$L$)qqq( ]UVWS33333[_^]Ëjg33333USVWjRh2@Q_^[]Ul$RQt$ ]Uu!Y]UE]VHE^V6!&Y^1XEÃ9Ë!ËÃ9V6t!&Y^Uu5 FYY]UEt=$FtP=!Y]U Ft'VuuPo FYjPYYV^] R"Ã= Fu3SWHE5 F%YtuYj5 FFYYu3BVj(jF"YYtV5 FYYu3S5 F YY3Vp Y^WXE_[hג@6 FYu2h$FPYYuá FtP7 FYVWLF3jhW tdFr۰2_^UkELFPE]V5dFt kW4FWE dFu_^UkELFPE]áFj Y+33FUF3E]UFj Y+ȋE3F]UU ME]UU ME]UE M]UE M]UE M]UM33]UM33]UQE]ÃhEhEhEjhEh EhEjh(Eh$Eh(Ejht>t6E&xFu^]áFj Y+33FUFj Y+ȋE3F]áFj Y+33FFÃ!USVW}&Ff9t~3ҋ:E tK<_t<<$t8<t0<-t,E]UVuu IN^]UVuu IN^]UVuu IN^]UVuu IN!^]UVuu IN`^]UV~0M9uAP9>u AF 16^]UV~=S]t4>uS'jjF$.t EX3P[^]UV~RW}tIS39uW9Gt<t P#SjF-t WS[_^]USـ{NW}tE?t@V393uW0Vj Fi-t?tF<>uVWV"^_[]UV~->EttttPQYPPn^]UV> t8W}?t.jjF,Ѕt  OJ3҅tT_^]Uyt E@<~A]UEE A3AAA ]Wt.GG t$VG ww GB֋GG Yu^_U졼FШEEu]UVW}t.jjF,tH `EHx3uF_^]U`e3SWEEG} 33@9t GEuMuMjE uWPu uEOHr Vu3%=E‰Ut%%t%=WÅt%%t%=/=$@t^ F Ft.EPYPEPj MVEEЋEEEPYPMU3ɋþt%#ƅ} QEPYYEPEPj{EPPMEPSIY5Fu>EPEPj,M/EMEEhEE4EPM0hEMEPY F ШEPEPj M5EMEEj E EMEEEEPM}M!Eu!E#!E!EċÉuMMȉMMt%#ƅtw%=u>EjPE܉EEEEjPE܉EEEEjPt'%=uEjPYYE܉EȋEE̍EjPE܋UYEEYEt@%=t2F`<`EPtCY@MEyCYPMj FШt0t&EPEPEPY@MЉEEPYPM39t>9Mt.5Fu&WEPj MaEPM3 EЋGEԋ}M}QtNEP3YYPEPhEM EPM5FP3MÅtI%GjF'ȉMt3Aa3ΉuQEPA3YY0xu%%=uzEPEPh EMadEMEEj,E;EMEEEEPEMEEj,E EMEEEEP.tN%=u@EPEPh0EMEMEEj,EEPM` htfF>hS]t[9} tVE +tIFWtj t u SK>jt EHlju FF[_^]FЃáFЃË F3``áFЃáF% áFЃUSVu3C&Ff~FW@Zt3j,FɃ0 w @FEQ FPPb^eeEPEP.$F+YY~ F9 t EPEPF;uf&FF~4 jA_^[]U졬FXIEPUYufFt[@tPZtMj@FFШEuEPEPMU H‰JJ@FEMP7@FFШEuEP @FhEMRE]U졬F08VN y3uEj]PEMEe%W} EGth EME<\NtUF8tKEjPTYYPEPj[M>EMEEj]EEPMB}~?trGtEPEPuM@MWEPj(MUEMEEj)E,EMEEEEPEEEEEPEP!EUYYMP_E 8t`PEPj(MXEMEEhEE]EMEEjEEMEEj]E|E$Ej]PE؍MjPj[PuEYY^]UjEYPM2 FtMA F0t/Htu=MjjM:UFШt5 < uKEPEPEPYPMU < uEPYPMcUt(EPEPhEME̋UЉEUt(EPEPhEME̋UЉEUEt"EMhEEԉUEԋU؉EUEt"EMhEEԉUEԋU؉EUu 39t]~uBE9t;PEPj MsEԍM̉E̋Ej EVEPM6Ft VE/VE9t%PEPj MEPM5U ׀}t EMPEM}unu >t[FuBE8t:PEPjM_(EčM̉E̋Ej EVuM%Vju E8tPjME_^[]U3ɸ!E!EEQPhZFEMPuME]UMu 4F?tIXtEPuYY@}FuMhEEEEEhE hEhEMe!]t EEEEEPYEPMEMMHI FMhqEE^[]UuOEY]UFeeЃ$s@h$Eh,E h4EhM]uFUMU8$Mu@F!MMj^UUMFUM8t@FjMMUE@HjE @E$9]tjME\EMj>kF59]u)M 8&u @EF8*u `EFBFEX`_^[]UFVjj@t&Ff3VuCEPEM EEEj u EPMHEN^]U F8uu juY E<6|<9~<_t MjS؃6A F)u/t؃=A F| u ju x~uMj-E]eeVu WEFE9@EPEPh(EMEEEEF8tCEPLYPEPj MtEMEEEEPEEE"EPEPjMo8EEE FEA F<@FA` F<`EPtmY@MEFШEPtwqYPEPj M1EMEEEEP?EEEEDYPMjEPuMjWYPMFШt&EPEPEPnY@MEEPPYPM39t;EPEPj(MbEMEEj)EEEEESjFt^fEVP!EPQ MPEPj(mEMEEj)EDEPM F`<`ttEPM FEPt YPM YPMFШEPtYPMYPMStEEFEM؉M܉H jME_^[]UjuEYY]W9u2_ËVp蘵^_Ãy$ ÊAËI2SVW{p_քu{pH_^[ËQtAD2UEjPnYYPEPj`MXj'uME]UVu} WtV7ѴYcuj^GS;sE;w8jhFt 3tO tG+މG _ 3+ƉGGG [_^] Fu3<0|<9/A F3 tu j Mj>MEt5F8uEMMy]F5FWEWP  PMU5Ft+~1u%EPEPj~MXMUMUtEPMUMEPN5FjMHEB)Z_F5FOD9ft@t/6~8F4EMF4E FM4EoUM2?t9@,BSCjhEEPjU F5F0WhXEƃTSPFM4E?FujuM70pg4t j M Fh4EAEF  FEEPEPuaNA<$t/Mj0u  FQ}+tmAtSt7u!UEWPhZFE}AVP FmPujVuA FVuA FVRt_tNtHuA FA F98tPhdEuSMhtEGA FhXEM)9>t j M FhhEu jub E_^]U졬F}tPXu3@FE 8uMhE5PhPEu_u8HuxZuF8Yuu @uFYYvVu EVP-F@YYt$EPEPhEMMUF tEPEPhEыUME^Pu ju^ E]UQQFVW<6|<9~<_uPuMAE 3}90t97t Gu PM97t WMEPutYYEuEju VuP3>*PEPub jMuMd} 397t WMZS]93t97t j MSM;EM[MH_^]Uuuu uE]UQQFVW_@F8A@Fw|F3ҋMЉUMt}hEMj YPMtKF#ƃt u)hEhEMe#thEMRċMjԾE+j)MMUEHE @`_^]U졬Fu 8@uM@F uYYE]USVuWE&FF%FI]F7<@/=Ft =Fx>tUVEPh(E|辽}EĉEȉFt(VEPj[tEEFEF8?@F$ZYHtVlPdP-Y>3F}]jEjPM؃ uAt6EԉMMh(EEEMEEEEPq}]}ԋ 3]}uRF8@uEPEPj[\}EM܉E܋Ej]ETE܉EFF~f&FkFTVPj]LPjDjP /EFH9_uMx?uGV< FPj4jP ȋAFF8@G,PYPEPj`$}EM̉E̋Ej'ETVPMvj@hFMVEPhXE,/EEF F9 tFEPS; F VPEEVPEjjPz ȋAF~Ft<@tPf&F@>u jF0VEPh(EEPjM貺t@F_^[]USVu3WS^F#lj%FEjPȃ AFFuBt<@t>VEPh(EEPEPYTȋAFF@u@FXtF#lj%FF?9u jK0VEPh(EEPjM跹yHN_^[]UQQFu Mj|0j?u@FEPPj-u轾 uYYE]Uu3EY]UW9uEVu pu^_]USVuW;t6uVFxWt} GPVt_^[]UyujhlEu u:E]UE;E sI@]UIt]2E]USVWu {upA;E s{u Pr%_^[]Uqqu u]UMu 賷 FA F<@unA F<_uaEAjP F EjPFt,@t @Fu8tM@FEMHHFjjMbE]UE U+‹M;~ȅtSVW}+ي7Fu_^[ ]U졬F8?u'@8$ujuYY"jjuF jjuE E]U|F3ʼnESW}'Gg=FVV5F}A<@9e2e2ȃ0 w)Q FEFP5F ȋEAEu<$u"8FuF$tE1t0t6t$t,u j M賶j>M詶} tF8t@FMEFE=F5F_M^H[ Mj襯E]Ue!E!EEejPhZFEPuFE]U졬FtLZuM@FE HVEPYPEPhEMޮj)uM!j)uEjPhEM赮@ӴE]UQFSVWj3ۿ@^:_u BωF 7h/p'x<9uBF 3Ʉ_^[]ÍIK@R@Y@]@i@a@p@x@@U졬FtAMtj@hEFF MjtE]Uu u]EYY]UQQM VuhEAΉF課EPYP蠱j}ڱ F9@uA F^]UM SVu3CAȉF:8F8EPEYEMEj EnVEPMtȋAF:F8@hEF8^tj@teEPYPEPj`M葩 EMEEj'EEP薰F8@u@F8^/8@thE{8^8uS蹱j}蚰F8@u,@F$: VEPSM蹩肯MMN^[]U<F3ʼnESV5FW}Ã0 w FFPW5Fee?uLEjPNYY@M FEA F<@I3 F8M@P耬j,EjPVE u@Ej PVEz  Eԉ5FP F@Y=Ft}jEPMEPj5FYPwYMt P讫hPE蟫EPEPuM E̍M܉E܋EhTEE薯EChPEMZEPEPuMŧȭE̍MԉEԋEhTEEQEPMM:}t@uEȃe%F5Fj@hFM @ME} t F9 t EP萯EEGM_^3[蔄]áF%@ËA ËA3939 ËA ËA ËA39t At@39t At@ËA3yW9u3_ËV0Ő^_ËA3@ËI3UQEx }4SXVWx0腐֋2tEx _^[@ ]ËAU Fua3FAF F3ң FPEFFFFFFFFFEw k F]øF]ÁIÁI@ÁIÁI Ã9tIÁIÁIAUUtMVu +Au^]UM38t@A9u]UEu]ËM UStt:uBA +[]jdhF+}u3k3uV؜Yu=FEF5F5F5FEPVuu uMUM讨}FJE 3}V諜YjdhF薎}u3k3uVCYu=FEF5F5F5Fu uuu uMM}F赬E a3}VYUuuuu u&p0+y]UEPjuu u]USVWUjjh@u m]_^[]ËL$At2D$H3袀UhP(RP$R]D$T$SVWD$UPjh@d5F3PD$dD$(Xp t:|$,t;t$,v-4v L$ H |uhDID_뷋L$d _^[3d y@uQ R 9QuSQ0F SQ0FL$ KCk UQPXY]Y[UF3E]UU ME]UE M]UM33]3ɺF3 F3FVt Uu/иFYFȃ3]̋L$ W|$VStt9u~Ѓ3ƒtGt!tt uσ t$u u\"t=t)uu8˃ttu[^D$_ÈD$[^_ÉtȺ~Ѓ3‹t܄t΄t*tuĉD$[^_f3ҋD$W[^_fD$[^_ËUVuuO5j^0$huu ^ u #53^]ËUVuu5j^0ɿ$huu u 43^]jhF3uu4t3s3} t38tӀ>u 4эEP3Y}u e4봃eeuuWVuE 轉Ëuu u>YuYjh FP3uu3賾3s3} t33f9tf9u 3΍EPoY9]u 3벉]]uuWVuE Ëuu u}Yu YËUE0E0E 0E0]ËUE0E0E 0E0w]Ë1Y39ËU]Uj@u u ]ËUVuu2j^0脽$huu u 203^]ËU]qUj@u u ]ËUVuuZ2j^0$huu k u 0203^]ËUuY]UE]UE]V6̴&Y^ËË!ËV6豴&Y^áFVj^u;}ƣFjP$jFx =Fu+jV5FjFR =Fu^W3@FjhF PRF4ǃ?k0FDt tuF8GFu_3^ËUkE8@F]ËVW3F44FY PE u5F葳%FY^ËUMu0QjX]ËU tAEtUtA3]ËUE PE]ËUE PE]ËUE]ËUE]Ë@ Ë@ Ë@ ËUVuu/謺QF W t9V7V"VpPy~t vfYV谻Y_^]jh@FƄuu3uf/&;F VtgYeYeV1YuE 覄ËuuYËUuY]j h`F4ej _Yeu uuYYuE EËuj rYj hFej Yeu uYYuE Ëuj $YËU=Fu=Fu]Vuu1.Eu VZYYt)jP!YYu9Fu3u VYYujİY^]ËU=Fu=Fu]Vuu-pEu VYYt)jPYYu9Fu3u VYYujCY^]ËUVW3WWjuWWhEu5-*39} tWWju WWhEt_^]ËUVW3WWWWjuWWرEu,*39} tWWWWju WWرEt_^]ËUQQSVW} tzVuVWE;r,G3;sjPEYYtwuuVE@=WPCP`}j=W蒃YYtȾ+;}@VPnYY;wύQAu+jYSoYYu3 WSV蝯 j豮Y_^[]ËU S] VWVu&VS}E;r+C3;sjPE3YYuuVMj=XSfNE@PAFPcz]j=SgYYt,+˃vVPwYY;]3Qff;u+jAPEFYYu SuV W臭Y_^[]ËUE 0E0YY]ËUE 0E0YY]ËUSVW3PPjuPPhE] j*^u >*30t3PPjSPPhEtjW蜮YYt"WVjujjhEȅu)*2VʬY_^[]Åtj=Z+NWPjSjjfPhEt‹3VPYY븋USVW3PPPPjuPPرE] j*^u w)30t3PPPPjSPPرEtjWӭYYt$3PPWVjuPPرEȅu()*2VY_^[]Åt3ҍ1RR+@=WPjSRRرEtË3VPYY빋UE PE0-YY]ËUE fPE0geYY]ËUE0E 0E0O ]ËUE0E 0E01 ]ËUE0E 0E0 ]ËUE0E 0E0j ]ËUEP@u+]ËUEPffu+]ËUE 0E0@YY]ËUE 0E0OYY]ËUE 0E0YY]ËUE 0E0YY]ËUE]V6\&Y^39ËU3PPju PuhE]ËU3PPPPju PuرE]ËUuuju juhE]ËU3PPuuju PuرE]Ë!Ë!Ë33939F39FËV6蝩&Y^ËËËUjuYY]ËU} u&IjX]u uxYYu]a&]ËUjuYY]ËU} u:&jX]u uwYYu]&]ËU]0UWMG t GAFuFGFGDVWRwHL HHP+V7PP^u PG _]y t PÍAjYËUSVWuMJE33MzBuL+׍yAu+σMFrЍC]P Ytq3ۋEM:AF4+PV袨 ul΍QAuE+MA:Ft+PVo u9΍QAu+Crjg}Yt M胡P_^[]3PPPPPTjYËUSVWuM9E3j _hENЍQAu+ʋBEBu+U ؃uύCP Yt{eE:FpЋ+@PV莧 uw΍QAuE+:F0+@PV` uI΍QAuE+MAEM rjH}Yt M胡P_^[]3PPPPP5fUjuuuu u]ËUSVuME3ۋHEMtu t 9]t9]u"蘭SSjuSQhEEuHEPp"YWP趥YuWjuSuhEuHEP3"^6P}YtHuuuWu VEt+SSu ujVSuرEuHEP!Y]VYWY_}t M胡P^[]Ë F3ËU}u]uuuuu 豬̋Uujuuu u]ËUjjuuu ug]ËUVuuuu uO^]UVuuuu u,FX\ `^]UEV0E0E0E p0uKP^]UVuuuu uO^]UVuuuu u,FX\ `^]UEV0E0E0E p0uxKP^]UVuuuu uO^]UVuuuu u,FX\ `^]UEV0E0E0E p0uJP^]UVuuuu uO^]UVuuuu u,FX\ `^]UEV0E0E0E p0utJP^]j h F7teE0YeM OuE Jt uE0bYj h@FseE02YeM QuE s uE0Yj hFseE0YeM RuE s uE0Yj hFDseE0YeM MuE Ws uE0oYj hFreE0?YeM IOuE s uE0Yj hFreE0YeM OuE r uE0YËU EMEEEPu EP]ËU EMEEEPu EP]ËU EMEEEPu EP]ËU EMEEEPu EP]ËU EMEEEPu EP]ËU EMEEEPu EP]ËU}uЦ2}tEEEEEEEEEEEPuYY]ËU}uw2}tEEEEEEEEEEEPudYY]ËU}u^2}tEEEEEEEEEEEPu3YY]ËU}uť2}tEEEEEEEEEEEPuRYY]ËU}ul2}tEEEEEEEEEEEPuYY]ËU}uS2}tEEEEEEEEEEEPuPYY]ËUQ}u輤SVuW}uu9u3]u$u u;v-GPVu uuM8"ulzcSVu EucDuuM8"u5CM)y(u+" ޣ_^[]ËUQ}u踣SVuW}uu9u3]u$u u;v-GPVu uuO8"upvgSVu Eu3ɃfL^uuG8"u7=M+y*3fu#" ֢_^[]ËUF3ʼnE}ES]u蔢ttVWu|M33ҫ ‰u uƅu Puu QPsC`tKE3Ƀ tuuo;u*x);v%[ tMty ;tM nFt |P_^M3[_]ÅuË;uj^L밋UF3ʼnE}ES]uXttVWu|*M33ҫ ‰u uƅu Puu QP)CftQEtuuv;u.x0;v,btSty3f;tP3f GDt |P_^M3[]]ÅuË;uj^3fD_뭋U F3ʼnEES]VuHu葟OttWuM833ҫH4 ‰8<@u DuƅD8 (LE H,E $HP,0P0P P(PLX^tKE3Ƀ tuuo@;u*x);v%[4 tMty @;tM ,C_t PƋM^3[[]ÅuË@;uj^L밋U F3ʼnEES]VuHuԝUttWuM833ҫH4 ‰8<@u DuƅD8 (LE H,E $HP,0P0P P(P8LX`dtQEtuuv@;u.x0;v,b4tSty3f@;tP3f GiA_t PƋM^3[ Z]ÅuË@;uj^3fD_뭋UF3ʼnE}ES]uPttVWu|"M33ҫ ‰u uƅu Puu QPS=\tKE3Ƀ tuuo;u*x);v%[ tMty ;tM ?t |P_^M3[X]ÅuË;uj^L밋UF3ʼnE}ES]u蔚ttVWu|M33ҫ ‰u uƅu Puu QP =btQEtuuv;u.x0;v,btSty3f;tP3f Gh>t |P_^M3[ W]ÅuË;uj^3fD_뭋U}ul,]Vut:}v4u uuuVu u5yu "" ՘^]ËU}u 贘]Vut<}v6u uuuVu u9y3fu " [^]ÃuËËuËuËUQ3VuWs7  2SS39uv;w1V%EYtEP<EPÏY[_^]U샹\uAIAMQU x9d}4Xuq,A1PdjP ҋld $2]U샹\uAIAMQU x9d}4Xuq,A1PdjP ҋl 襖2]U샹\uAIAMQU x9d}4Xuq,A2PdjPZ ҋlf &2]U샹\uAIAMQU x9d}4Xuq,A2PdjP( ҋl 觕2]UAAM@Q]UAAM@Q]UAAM@Q]UAAM@Q]U샹\uAIAMQU x9d}4Xuq,A1PdjPJ ҋl 謔2]U샹\uAIAMQU x9d}4Xuq,A1PdjP ҋlm -2]U샹\uAIAMQU x9d}4Xuq,A2PdjP ҋl讓2]U샹\uAIAMQU x9d}4Xuq,A2PdjP ҋlo/2]UAAM@Q]UAAM@Q]UAAM@Q]UAAM@Q]U샹\uAIAMQU x9d}4Xuq,A1PdjP ҋlt42]U샹\uAIAMQU x9d}4Xuq,A1PdjP ҋl赑2]U샹\uAIAMQU x9d}4Xuq,A2PdjPj ҋlv62]U샹\uAIAMQU x9d}4Xuq,A2PdjP8 ҋl跐2]UAAM@Q]UAAM@Q]UAAM@Q]UAAM@Q]U샹\uAIQMY x=d}8Xuq,A1PdjP_$ҋlE轏2]U샹\uAIQMY x=d}8Xuq,A1PdjP,$ҋlE?2]UAAHE]UAAHE]U샹\uAIAMQU x9d}4Xuq,A1PdjP* ҋl茎2]U샹\uAIAMQU x9d}4Xuq,A1PdjP ҋlM 2]U샹\uAIAMQU x9d}4Xuq,A2PdjP ҋl莍2]U샹\uAIAMQU x9d}4Xuq,A2PdjP ҋlO2]UAAM@Q]UAAM@Q]UAAM@Q]UAAM@Q]U샹\uAA@MQT x8d}3Xuq,A1PdjPҋlV2]U샹\uAA@MQT x8d}3Xuq,A1PdjPҋl虋2]U샹\uAA@MQT x8d}3Xuq,A2PdjPOҋl\2]U샹\uAA@MQT x8d}3Xuq,A2PdjPҋl蟊2]UAAM@Q]UAAM@Q]UAAM@Q]UAAM@Q]U샹\uAIUIb ] xAd}YYM_3^)]1VYËU F3ʼnEVW8WI FY$0sNHFD(@F <4AL8DP@P8uu.:u*uSw7v uw7 : 23:_^[]UQQS]VuWNpMƀp„3stESuEstSuctЀCuctCu}urukQSEYYMu uu3;M t:uh3Ƀ~ 3} ;uRv SuS+YCY>8uu.:u*uSw7v uw7 : 23:_^[]UQQS]VuWjpX~f;Mf;W?SE6WESEMut8MMulWuYYu u|3;M {:uo3Ƀ~ 3} ;uYv RuR+YCYE:Mu5M:u.uESp0v ؋EWp0 : 23:_^[]UQQS]VuWjpX~f;Mf;W8SE/WESEMut8MMulW)uYYu u|3;M {:uo3Ƀ~ 3} ;uYv QuQ+YCYE:Mu5M:u.uESp0v ؋EWp0 : 23:_^[]4Eø4Eø4Eø4Eø4Eø4Eø4Eø4Eø4Eø4Eø4Eø4EËUQSVMWj Q~ 'FeHPM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FeHPWM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FeHPM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FeHPM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FeHPCM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FeHPM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FePM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FeP3M F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FePM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FePwM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FePM F 8"tE;FrF2?ut_^[]UQSVMWj Q~ 'FePM F 8"tE;FrF2?ut_^[]VH讔u^S39^轹}D^8^F9^vF1PFtw$gxA~EN(^$^0^ ^,^<8'UI^(!?d-hFF1kFyFPP;F[^wAwAwAwAxA xAxAxAVH膓u^S39^u虸YCW*^8^F9^vF1PΉF輔F$yALD^$^0^ ~(^,^<4q'0H^(}.tDFF1VF赘t&U.F_[^蕷UBI'yA0yADyAMyAVyA[yAdyAmyAVH*u^S39^9A^8^F9^vF1PFtw$zAJEN(^$^0^ ^,^<8z'I|A|A|A|A|A|A}A }AVHƎu^S39^虳Y>^8^F9^vF1PFtw$~AEN(^$^0^ ^,^<8 '2D^(!M2hFF1kFPPJF[^ÍI}A~A~A!~A*~A/~A8~AA~AVH菍u^S39^}==^8^F9^vF2PFtw$A EN(^$^0^ ^,^<8 '@C^(!3gFfF2fgFxAPP6F[^ÍIA A5A>AGALAUA^AVH_u^S39^uQ<Wz^8^F9^vF2PΉFcF$A D^$^0^ ~(^,^<4 'B^(4tHFfF2fRFht&)F_[^H;pAyAAAAAAAVHu^S39^:^8^F9^vF2PFtw$/A EN(^$^0^ ^,^<8'A^(!5gFfF2fgFPPEF[^ËAAŁA΁AׁA܁AAAVHu^S39^ͮ9^8^F9^vF2PFtw$_A EN(^$^0^ ^,^<8')@^(!]7gFfF2fgFAPP6F[^ÍIǂAЂAAAAAAAVHu^S39^u衭a8W^8^F9^vF2PΉF赌F$AD^$^0^ ~(^,^<4'>^(#8tHFfF2fRF8t&<)F_[^蘬X7 A)A=AFAOATA]AfAVH腇u^S39^=6^8^F9^vF2PFtw$߅AEN(^$^0^ ^,^<8'>^(!W9gFfF2fgFPPEF[^ËWA`AuA~AAAAAUE A ]UE A ]UE A ]UE A ]UE A ]UE A ]UE A ]UE A ]UE A ]UE A ]UE A ]UE A ]3@9Xu 9\t33@9Xu 9\t33@9Xu 9\t33@9Xu 9\t3ððððËXu \uÃu \t2ËXu \uÃu \t2ËXu \uÃu \t2ËXu \uÃu \t22222Ã\u 3@9Xt3Ã\u 3@9Xt3Ã\u 3@9Xt3Ã\u 3@9Xt32222Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(Ãa(A1 t-t"tHt uI I I  I I A1 t-t"tHt uI I I  I I A1 t-t"tHt uI I I  I I A1 t-t"tHt uI I I  I I A1 t-t"tHt uI I I  I I A1 t-t"tHt uI I I  I I A2 t-t"tHt uI I I  I I A2 t-t"tHt uI I I  I I A2 t-t"tHt uI I I  I I A2 t-t"tHt uI I I  I I A2 t-t"tHt uI I I  I I A2 t-t"tHt uI I I  I I uݥ02ðËVuu讥n02^ð^u荥M02ðun.02ðËVLuu?/2^ð^u/2ðu/2ðËVuuФ/2^ð^u诤o/2ðu萤P/2ðËVuua!/2^ð^u@/2ðËVju^ÍFPF1HP;^ËVju^ÍFPF1HP^ËVju^ÍFPF1HP^ËVj7u^ÍFPF1HP:^ËVjnu^ÍFPF1HP^ËVju^ÍFPF1HP^ÍQA<RQ2HR芈ÍQA<RQ2HRoÍQA<RQ2HRTÍQA<RQ2HR軈ÍQA<RQ2HR蠈ÍQA<RQ2HR腈ËVWFN1F<ыfTt-hA8hu@A,AA,A, A,Q<3uz2uBA, A<6uz4uBA, AuTt-hA8hu@A,AA,A, A,Q<3uz2uBA, A<6uz4uBA, AuTt-hA8hu@A,AA,A, A,Q<3uz2uBA, A<6uz4uBA, AuTt-hA8hu@A,AA,A, A,Q<3uz2uBA, A<6uz4uBA, AuTt-hA8hu@A,AA,A, A,Q<3uz2uBA, A<6uz4uBA, AuTt-hA8hu@A,AA,A, A,Q<3uz2uBA, A<6uz4uBA, Aut7ACt>D~GSuoV2SjWZttVHuQ=5ҋ|ɃpMt?g~1itntouS륋uM뜃N Qj =댋J#냋TwsgHtЃgQi~0t(V 3WfEEt'tE-tE+ tE N1xtXu u2ۀat At2ut'D=0Xt At2$xD=^$+^8+ uFPSHj PVv FPWEHPvN ~tuWSHj0Pjo?|F tWSHj P_^[]ËUQSV3C3F1dlX>t7ACt>D~GSuT2SjWZttVHuQ3ҋɃpMt?g~1itntourQ륋K뜃N Qj 8<댋u"냋RwsgHtЃgQit.~0uV 3WfEEt'tE-tE+ tE N1xtXu u2ۀat At2ut'D=0Xt At2$xD=^$+^8+ uFPSHj Pv FPWEHPtN ~tuWSHj0Pۮjn?|F tWSHj P谮_^[]ËUQSV3C3F1dlX>t7ACt>D~GSuR2SjWZttVHuQ$2ҋɃpMt?g~1itntouWO륋J뜃N Qj |;댋!냋PwsgHtЃgQi~0t(V 3WfEEt'tE-tE+ tE N1xtXu u2ۀat At2ut'D=0Xt At2$xD=^$+^8+ uFPSHj Pv FPWEHPrN ~tuWSHj0P謬jl?|F tWSHj P聬_^[]ËUQSV3C3F1dlX>t7ACt>D~GSu9Q2SjWZttVHuQ0ҋ)ɃpMt?g~1itntouGM륋^H뜃N Qj :댋 냋{NwsgHtЃgQi~0t(V 3WfEEt'tE-tE+ tE N1xtXu u2ۀat At2ut'D=0Xt At2$xD=^$+^8+ uFPSHj Pv FPWEHPyqN ~tuWSHj0Pڪjj?|F tWSHj P诪_^[]ËUQSV3C3F1dlX>t7ACt>D~GSu}O2SjWZttVHuQ.ҋ]ɃpMt?g~1itntou7K륋F뜃N Qj 9댋 냋dLwsgHtЃgQi;t.~0uV 3WfEEt'tE-tE+ tE N1xtXu u2ۀat At2ut'D=0Xt At2$xD=^$+^8+ uFPSHj Pv FPWEHP?oN ~tuWSHj0P蠨jei?|F tWSHj Pu_^[]ËUQSV3C3F1dlX>t7ACt>D~GSuM2SjWZttVHuQl-ҋɃpMt?g~1itntouI륋E뜃N Qj 8댋I냋BJwsgHtЃgQi~0t(V 3WfEEt'tE-tE+ tE N1xtXu u2ۀat At2ut'D=0Xt At2$xD=^$+^8+ uFPSHj P貦v FPWEHPmN ~tuWSHj0Pqjg?|F tWSHj PF_^[]ËU F3ʼnESV3jAZjXF2Ydk;>t6;Ct?D~GSuK2jjWZttVHuS+ыȃpMt?g~1itntouF뤋9C뛃N Sj 8닋f낋HvsfHtЃfSi8^0@V 3W‰]Af]j _t(t j-XfEtj+tf}N2xtjXXf;u t2at jA_f;t2j0_ut0jXXf|]f;t jAXf;t2$xffD]~$+~8+ uFPWHj P.v FPSEHP0jN ^tuSWHj0Pj1f;|F tSWHj P£_M^3[L]ËU F3ʼnESV3jAZjXF2Ydk;>t6;Ct?D~GSu J2jjWZttVHuS)ыȃpMt?g~1itntouD뤋PA뛃N Sj 6닋{낋EvsfHtЃfSi~I8^0@V 3W‰]Af]j _t(t j-XfEtj+tf}N2xtjXXf;u t2at jA_f;t2j0_ut0jXXf|]f;t jAXf;t2$xffD]~$+~8+ uFPWHj P¡v FPSEHPgN ^tuSWHj0P聡jPd;|F tSWHj PV_M^3[]ËU F3ʼnESV3jAZjXF2Ydk;>t6;Ct?D~GSuH2jjWZttVHuS=(ыȃpMt?g~1itntousB뤋}?뛃N Sj 6닋낋CvsfHtЃfSi8^0@V 3W‰]Af]j _t(t j-XfEtj+tf}N2xtjXXf;u t2at jA_f;t2j0_ut0jXXf|]f;t jAXf;t2$xffD]~$+~8+ uFPWHj Pev FPSEHPgeN ^tuSWHj0P$j~b;|F tSWHj P_M^3[胿]ËU F3ʼnESV3jAZjXF2Ydk;>t6;Ct?D~GSu6F2jjWZttVHuSx&ы ȃpMt?g~1itntou5@뤋=뛃N Sj 4닋낋?AvsfHtЃfSi8^0@V 3W‰]Af]j _t(t j-XfEtj+tf}N2xtjXXf;u t2at jA_f;t2j0_ut0jXXf|]f;t jAXf;t2$xffD]~$+~8+ uFPWHj Pev FPSEHP*dN ^tuSWHj0P$j`;|F tSWHj P_M^3[&]ËU F3ʼnESV3jAZjXF2Ydk;>t6;Ct?D~GSuMD2jjWZttVHuS$ы ȃpMt?g~1itntou=뤋;뛃N Sj 3닋낋>vsfHtЃfSioI8^0@V 3W‰]Af]j _t(t j-XfEtj+tf}N2xtjXXf;u t2at jA_f;t2j0_ut0jXXf|]f;t jAXf;t2$xffD]~$+~8+ uFPWHj Pv FPSEHPaN ^tuSWHj0P踚j^;|F tSWHj P荚_M^3[躺]ËU F3ʼnESV3jAZjXF2Ydk;>t6;Ct?D~GSu_B2jjWZttVHuS"ы ȃpMt?g~1itntou;뤋9뛃N Sj 2닋낋<vsfHtЃfSi8^0@V 3W‰]Af]j _t(t j-XfEtj+tf}N2xtjXXf;u t2at jA_f;t2j0_ut0jXXf|]f;t jAXf;t2$xffD]~$+~8+ uFPWHj P蜘v FPSEHPa_N ^tuSWHj0P[j\;|F tSWHj P0_M^3[]]Ày1*t A$P蛱ÃAA@A$yI Y$ËV~1*t F$PDZ^JDu^ËtF$y N ؉F$^Ày1*t A$PÃAA@A$yI Y$Ày1*t A$PÃAA@A$yI Y$ËV~1*t F$PE^jDu^ËtF$y N ؉F$^Ày1*t A$PfÃAA@A$yI Y$fy2*t A$P薲ÃAA@A$yI Y$ËVf~2*t F$Pò^Du^ËtF$y N ؉F$^fy2*t A$PÃAA@A$yI Y$fy2*t A$PÃAA@A$yI Y$ËVf~2*t F$PD^Du^ËtF$y N ؉F$^fy2*t A$PfÃAA@A$yI Y$j Xj Xj Xj XjXjXjXjXøEøEøEøEøxEøxEøxEøxEËUE w$3AjX]3@]jj3]ËA A%AA)A)AAA-AAA)AjjMjj jj"jjA#jj$jj%jj5'jju(jj)jj)+jji,jj-ËSVWFFxt6_t/v,F1Pv6^4t F8F<F8F44EF8F<_^[ËUQeEVPqt`TtSSW}t6_t/v,F1Pv6裃^4t F8F<F8F44EF8F<_[^]ËSVWFFxt6_t/v,F1Pv6=^4t F8F<F8F44EF8F<_^[ËSVWFFxt6_t/v,F1Pv6ڂ^4t F8F<F8F44EF8F<_^[ËUQeEVP-qt`%tSSW}t6_t/v,F1Pv6^^4t F8F<F8F44EF8F<_[^]ËSVWFFxt6_t/v,F1Pv6^4t F8F<F8F44EF8F<_^[ËSVWFFxt6_t/v,F2Pv6Ձ^4t F8F<F8F44EF8F<_^[ËUQeEVPpt`tSSW}t6_t/v,F2Pv6Y^4t F8F<F8F44EF8F<_[^]ËSVWFFxt6_t/v,F2Pv6^4t F8F<F8F44EF8F<_^[ËSVWFFxt6_t/v,F2Pv6萀^4t F8F<F8F44EF8F<_^[ËUQeEVP;pt`ǽtSSW}t6_t/v,F2Pv6^4t F8F<F8F44EF8F<_[^]ËSVWFFxt6_t/v,F2Pv6^4t F8F<F8F44EF8F<_^[ËUQQVWN F(yF1#A{۠UMW~ t|s كڃ@~ ~(_} F(f 9F(~F( uf u uu RQlQ0gF t~8tF480t N4F40F8^[]USVv,uY؋˃txtVIt3tJU2F FFHPXF FFt@?H3;F FFt@!@F FFt@@W~ t|s كڃ@~ ~(_} F(f 9F(~F( uf u uu RQlQYfF t~8tF480t N4N40F8^[]USVv,+Y؋˃txtVIt3tKI 2F FFHPXF FFt@?H3;F FFt@!@F FFt@@W~ t|s كڃ@~ ~(_} F(f 9F(~F( uf u uu RQCkQeF t~8tF480t N4N40F8^[]UQQSVv,e؃eY˃t^It:tG2&F EPt2F FFHPXF FFt@?H3;F FFt@!@F FFt@@W~ t|s كڃ@~ ~(_} F(f 9F(~F( uf u uu RQdQ@^F t~8tF480t N4N40F8^[]VWFFx8u'=2Dv,Yt+tHtu΋FWFfFfFF0_^ËUQeEVPEu2vti8u<Zv,FYt4t#HtuЋFMQENEfNfENF0^]ËVWFFx7u<2Dv,Yt+tHtu΋FWFfFfFF0_^ËVWFFx 7u;f2Dv,PYt+tHtu΋FWFfFfFF0_^ËUQeEVPDu2v讐ti6u;v,Yt4t#HtuЋFMQENEfNfENF0^]ËVWFFx6u:Y2Dv,CYt+tHtu΋FWFfFfFF0_^ËVWFFx5u%:2Dv,Yt+tHtu΋FWFfFfFF0_^ËUQeEVPCu2vCti5u9Xv,DYt4t#HtuЋFMQENEfNfENF0^]ËVWFFx4u92Dv,Yt+tHtu΋FWFfFfFF0_^ËVWFFx4u8d2Dv,NYt+tHtu΋FWFfFfFF0_^ËUQeEVP|Bu2v؍ti3u8v,Yt4t#HtuЋFMQENEfNfENF0^]ËVWFFx3u7W2Dv,AYt+tHtu΋FWFfFfFF0_^ËQ t ʀQ jjËQ t ʀQ jjËQ t ʀQ jj ËQ t ʀQ jjKËQ t ʀQ jjvËQ t ʀQ jjËQ t ʀQ jjËQ t ʀQ jj+ËQ t ʀQ jjËQ t ʀQ jjËQ t ʀQ jjËQ t ʀQ jj?jjA(A, )jjA(A, [jjA(A, jjA(A, jjA(A, %jjA(A, jjA(A, jjA(A, jjA(A, UjjA(A, jjA(A, jjA(A, ËSVWFF~(X^4uv,F1Pv6\LtuF4 ~4Ej$Yf9u)9Xuh@dWPi~ dž\\\uQj E}Pv>U HB F9Xu#x(j$Xf9u d} ;ȉ _^[]b2ðððÃytytv62ðÃytytT2ðÃytyt22ðÃytytЩ2ðËVnu2^Ã\uOXuF td)FAtt t uFF;uӰ^L뎋Vu2^Ã\uOXuF td)FAtt t uFF;uӰ^ ̨뎋Vu2^Ã\uOXuF td)FAtt t uFF;uӰ^L뎋VTu2^Ã\uOXuF td)FAtt t uFF;uӰ^ ̧뎰ðððÃ\uGXu> x!d}q,A1PdjPq2ðÃ\uGXu> x!d}q,A1PdjP^2ðÃ\uGXu> x!d}q,A2PdjP ˦2ðÃ\uGXu> x!d}q,A2PdjPx2ðððððËUMVA ujQ8оFYtt?k0Fƀx)u"ttƒ?k04FF-t-2^]ðø*uPj?fEG;}uԋM>ut_^[]UQQSً@ txu ME ^E VuW}&GME;t4EPP/E8u>*uPj?E;}uҋM>ut_^[]UQQVW}E'Mp9pux t ME JEE+pS] ;rVu0NM 0px Et ;t0[M?ut_^]UQQS]WE #Mz9zuz t ME QEL+zE ;rV4?Vu2NM 0^xx EtM  ;} t8M;ut _[]UE MH%]ËU,EUMEEEEEE MUEu ʚ.tEEԍEE؍EE܍EEEEEPR3YY]ËU,EUMEEEEEE MUEuS.tEEԍEE؍EE܍EEEEEPRlYY]ËU,EUMEEEEEE MUEuܙ.tEEԍEE؍EE܍EEEEEPRYY]ËU,EUMEEEEEE MUEue.tEEԍEE؍EE܍EEEEEPRYY]ËU,EUMEEEEEE MUEu..tEEԍEE؍EE܍EEEEEPRYY]ËU,EUMEEEEEE MUEu w.tEEԍEE؍EE܍EEEEEPRhYY]ËUu$u uuuuu uF ]ËUu$u uuuuu u# ]ËUu uuuuu u]ËUu uuuuu u]ËUu uuuuu uD]ËUu uuuuu u]ËUu uuuuu u5]ËUu uuuuu uP]̋UQF3ʼnEMS] ;vlEVW;w(IMWVвEU~E;vM;t!t+RLDJuEM+؍;w_^M3[ T]̋UE W};t&Vut+@TLPu^_]̋UF3ʼnEMU VuW}u$t $ _^M3yS]Åt܅tDžJSщ3+XwVWQ}SQΉвEփ~WS вEփ~W SвEփ~WS ;v7;s%SVвE~;w=;wSVвE׋~ۋ+;vSWвEփዕ;r^;t3ދ׋+ߊRLDJu답;މ;s2$+;v%SWвEt;r/+;vSWвE֋t݋Nj++;|9;s |@;sL΋j;s T@;s׋+x T[M_3^ u]ËUQjuQQu uP u]ËUQjuQQu uP u]ËUQjuQQu uP uz]ËUQjuQQu uP jN]ËUQjuQQu uP^ u!]ËUQjuQQu uP1 ui]ËUQjuQQu uP u]ËUQjuQQu uP u]ËUQjuQQu uP j]ËUQjuQQu uPc j]ËUQjuQQu uP7 jp]ËUQjuQQu uP j7]ËUQjuQQu uP j]ËUQjuQQu uP j]ËUQjuQQu uP jf]ËUQjuQQu uPv j]ËUQjuQQu uPJ j]ËUQjuQQu uP jW]ËUQjuQQu uP j]ËUQjuQQu uP j]ËUQQeEjP^YYtEMt]ËU3W}jEPYY_tUEMtQ]ËUQQVuuj3S} ueEeSP`ME>jhޱPQa][| =wkd3@N^]ËUQQVuuBj3W} ueEeSPME>jhޱPQ][| =o@wkd3V@N^]ËUQQeEjPYYtEMt]ËU3W}jEP2YY_tUEMtQ]ËU]U]UV)tuV4YY#^]ËUVtuVYY#^]ËUVuu*j^0hWj Y} uj^0h?|?~j^0\S3ۍEP]]]YwEPYeEP YS=~_=}X+EEEPV}YY9]VYE)EEPVKYYF WV.YY>9]tVYtEE+F +}j<[yJ<+Ǚ~ǙVyJ<+NǙj~Ǚ[VyJ+NǙȅ~Fj_N VN3[_^]yFN j_F V׃F F mFNSSSSS,g̋UVuuj^0fSWj Y} uj^0f-S39_|9rjX9G|?o@vj^0[_^]E]P]]YEPYEPY_|vujX;n|{x|Ml}Puxu uP _Mt^t hPM3_]ËU|W}uAY}tSVu3ۃuNff;u+uMu w}EME}PuEu uP^MKuЋPY]8]t M䃡P^[_]ËUQQE EEPuEtYY]ËUQQE EEPuEsYY]ËUQQE EEPuE~YY]ËUQQE EEPuE[YY]ËUEPqY]ËUEjPYY]ËUuMuuu E\E]ËUuMuuu X\E]ËUuMuuu k\E]ËUuMuuu ~\E]ËUF3ʼnEEVu,tuGW3@"QM QPVQP.2U$^t M M u M3e]ËUF3ʼnEEVu,tuV3@"QM QPVQP2U$^t M M u M3]ËUF3ʼnEEVu,tuQV3@"QM QPVQP81U$^t M M u M3o]ËUF3ʼnEEVu,tuU3@"QM QPVQP1U$^t M M u M3]ËUF3ʼnEEVu,tu[U3@"QM QP7VQPB0U$^t M M u M3y]ËUF3ʼnEEVu,tuT3@"QM QPVQP0U$^t M M u M3]ËUF3ʼnEEVu,tue%T3@"QM QPVQPL/U$^t M M u M3]ËUF3ʼnEEVu,tuS3@"QM QP-VQP/U$^t M M u M3]ËU$Vu WоujXAFΉEFSE艒]MMMu܉MnSEjP uMU--t+u 5ȈMIiNn3ۈ]0uCF΋~EE fn4 3j0YE}f;uSw] ˋ蟍xtXtPfU3EsfЉ}܋fU}3u؋uMj0EXMf;uP^;ffUf;tuj0X3E:DžHDž``EjIEE DžLf @Ep Džx E DžXf Ep Džp E DžDf Ep Džhf Ep DžP E Ef Ep EPEZEEE E*E@EJEDž|DžtDžlDždDž\ADžTZEaEf; f;Us ƒ0f;Hf;`f;Us -`f;Uf;Us -f;Lf;Us -f f;xf;Us - kf;Xcf;Us -f Kf;pCf;Us - +f;D#f;Us -f f;hf;Us -f f;Pf;Us - f;Uf;Us -f f;Uf;Us -Pf;Uf;Us -wf;Urvf;Us - af;Ur`f;Us -@Kf;UrJf;|s -2f;tr.f;ls%-f;ds -u:f9\w f;Tv ff+Ef;Ewff+Ef;Ew ;w.M;tAMEl@fj0fUXE;5UfȋEuj0;fMXu*f;u%uN fj0XfMf;tUuu䋽@f; f;Ms 0f;Hf;`f;Ms -`f;Mf;Ms -f;Lf;Ms -f f;xf;Ms - kf;Xcf;Ms -f Kf;pCf;Ms - +f;D#f;Ms -f f;hf;Ms -f f;Pf;Ms - f;Mf;Ms -f f;Mf;Ms -Pf;Mf;Ms -wf;Mrvf;Ms - af;Mr`f;Ms -@Kf;MrJf;|s -2f;tr.f;ls%-f;ds -u:f9\w f;Tv ff+Ef;Ewff+Ef;Ew ;w&;tBUM 腆Ufj0fMXu&4P3Huu 衰FΉE؋FE)fE3˃EtPt et pu M8]Pfj-Xf;fMj+Zf;tf;uDžffMj03Xf;u諅fj0XfMf;t3f; f;Ms 0f;Hf;`f;Ms -`f;Mf;Ms -f;Lf;Ms -f f;xf;Ms - kf;Xcf;Ms -f Kf;pCf;Ms - +f;D#f;Ms -f f;hf;Ms -f f;Pf;Ms - f;Mf;Ms -f f;Mf;Ms -Pf;Mf;Ms -wf;Mrvf;Ms - af;Mr`f;Ms -@Kf;MrJf;|s -2f;tr.f;ls%-f;ds -u:f9\w f;Tv ff+Ef;Ewff+Ef;Ew  s.k ЉU;2Ufj0fMXEQj0Zf;f;Ms +yHf;Z`f;`f;MrҋUf;Nf;MrLf;9f;Mrxf;$f;MrXf;f;Mrpf;f;MhDf;f;MOhf;f;M6Pf;f;MUf;f;MUf;f;MUf;rqf;MUf;r_f;MUf;rMf;MUf;r;f;|tf;r#f;lsf;du$f9\w f;Tv*Uff+f;Ev s-OffM*Uff+f;Ew ΄t]u4IKt`fE]u\uMV;tXyuI;u;tI;$;|'38EH@E؁P~j j;}j3+8EN*jX%u܍EuWPu܍EuWP!^_[]ËU$Vu W}ujXAFΉEFSEf]MMMu܉MKSEjP] uMU--t+u ȈMIiNn3ۈ]0uCF΋~EE fn4 3j0YE}f;uSw] ˋ}{xtXtPޥfU3EQ{fЉ}܋fU}3u؋uMj0EXMf;uP^{ffUf;tuj0X3E:DžHDž``EjIEE DžLf @Ep Džx E DžXf Ep Džp E DžDf Ep Džhf Ep DžP E Ef Ep EPEZEEE E*E@EJEDž|DžtDžlDždDž\ADžTZEaEf; f;Us ƒ0f;Hf;`f;Us -`f;Uf;Us -f;Lf;Us -f f;xf;Us - kf;Xcf;Us -f Kf;pCf;Us - +f;D#f;Us -f f;hf;Us -f f;Pf;Us - f;Uf;Us -f f;Uf;Us -Pf;Uf;Us -wf;Urvf;Us - af;Ur`f;Us -@Kf;UrJf;|s -2f;tr.f;ls%-f;ds -u:f9\w f;Tv ff+Ef;Ewff+Ef;Ew ;w.M;tAMEJw@fj0fUXE;wUfȋEuj0;fMXu*f;u%uNvfj0XfMf;tUuu䋽@f; f;Ms 0f;Hf;`f;Ms -`f;Mf;Ms -f;Lf;Ms -f f;xf;Ms - kf;Xcf;Ms -f Kf;pCf;Ms - +f;D#f;Ms -f f;hf;Ms -f f;Pf;Ms - f;Mf;Ms -f f;Mf;Ms -Pf;Mf;Ms -wf;Mrvf;Ms - af;Mr`f;Ms -@Kf;MrJf;|s -2f;tr.f;ls%-f;ds -u:f9\w f;Tv ff+Ef;Ewff+Ef;Ew ;w&;tBUM ctUfj0fMXu&4$?3Huu 蒞FΉE؋FEtfE3˃EtPt et pu M8]Psfj-Xf;fMj+Zf;tf;usffMj03Xf;usfj0XfMf;t3f; f;Ms 0f;Hf;`f;Ms -`f;Mf;Ms -f;Lf;Ms -f f;xf;Ms - kf;Xcf;Ms -f Kf;pCf;Ms - +f;D#f;Ms -f f;hf;Ms -f f;Pf;Ms - f;Mf;Ms -f f;Mf;Ms -Pf;Mf;Ms -wf;Mrvf;Ms - af;Mr`f;Ms -@Kf;MrJf;|s -2f;tr.f;ls%-f;ds -u:f9\w f;Tv ff+Ef;Ewff+Ef;Ew  s.k ЉU;qUfj0fMXEQj0Zf;f;Ms +yHf;Z`f;`f;MrҋUf;Nf;MrLf;9f;Mrxf;$f;MrXf;f;Mrpf;f;MhDf;f;MOhf;f;M6Pf;f;MUf;f;MUf;f;MUf;rqf;MUf;r_f;MUf;rMf;MUf;r;f;|tf;r#f;lsf;du$f9\w f;Tv*Uff+f;Ev s--offM*Uff+f;Ew ΄t]u49t`nfE]uMuMV;tXyuI;u;tI;$;|'38EH@E؁P~j j;}j3+8EN*jX%u܍EuWPu܍EuWP[^_[]ËUS]EV3EW} Ɖ}]u :XEt:\EugVmȋE@ EuQ蛗GωEGE+m:`Et:hEu-mFuP]jX_^[]ÍM8jM83ɄՋUS]EV3EW} Ɖ}]u :Et:EugmȋE@ EuQ`GωEGEl:Et:Eu-lFuP"jX_^[]ÍM5jM53ɄՋUS]EV3EW} Ɖ}]u f;xEt f;Eur lfȋEf EuQSGωEGEkff;Et f;Eu0kf uPjX_^[]ÍMT7jMH73ɄՋUS]EV3EW} Ɖ}]u f;Et f;EurkfȋEf EuQ GωEGEkff;Et f;Eu0`kf uPŕjX_^[]ÍM~4jMr43ɄՋU SVuEW} 3ۉ}uE:pEt:tEuJ;jCuP舔GωEGEj<(t)M%4M 4jiWVYYtjWVYYtj[RH>)t@t1ȍAЃ vAvAv _ozi<)uɀ>)YjX_^[]ËU SVuEW} 3ۉ}uE:Et:EuJiCuPGωEGExi<(t)M=3M#3jBiWVYYtjWVYYtj[R腓H>)t@t1ȍAЃ vAvAv _oh<)uɀ>)YjX_^[]ËUSVuEW} 3ۉ}uEEf;Et f;EuPFhfuP蘒GωEGE hff(t)M4Mi4jgWVfYYt E WV YYtRENj)[f9tCft2ȍAЃ vAvAv _gwgff;uf9OjX_^[]ËUSVuEW} 3ۉ}uEEf;Et f;EuPgfuPGωEGEggff(t)ME1M+1j.gWVf)YYt E WVYYtRuENj)[f9tCft2ȍAЃ vAvAv _gfff;uf9OjX_^[]ËUSV3W}:Et:EuM eFu޳_^[]ËUSV3W}:XEt:\EuM fFu޳_^[]ËUSV3W}f;8Et f;@EuM efuس_^[]ËUSV3W}f;xEt f;EuM efuس_^[]ËUSV3W}:Et:EuM dFu޳_^[]ËUSV3W}:HEt:PEuM eFu޳_^[]ËUSV3W}f; Et f;,EuM df uس_^[]ËUSV3W}f;`Et f;lEuM df uس_^[]ËUE $DBuu YY]uu WE 38E3]ËE 38ދE 38ŋE 38묋E릋E 3@]ËE 3j8EX]ËE 3j8ݍItBBBB×BܗBBB B&BUE $HBuu 3YY]uu jE uPYY3]ËE uPE uPЋE uP`uRuj4YY3@]ËE uPYYjX]ËE uP^YYjBBBBΘBBBBB-BU@M VWt!},t%|$~誗j"3ЋTSuMq3M EEEЋE Ea؍EPjQM |a؍EPjP] u8E0E-uE+u M >a؈]Mtu{,0< wÃ",a<wÃ,A<wÃt uAj _Y؍EPjP]K u8E0E-uE+u M Y؈]Mtu{,0< wÃ",a<wÃ,A<wÃt uAj _P`PhVacu3P\`PhVX33ۋ$C;Xu苝Pss L73P\`PhV=;`us`0tЉX {牕Xu<33,0+@0,u;!0O,33ҋL49<st_;u0@lj,40,L04,@LF4;PYYju3 t@3su3 \t@3QЋ+;j#_3҃j Y+ȉ3@{HɉЉtA3j X+9ssut2rr jrZʉ;+;rl;s3F;sB3##苍㋍ ÉIN;t됋t3Zuډ<3PPhPb<+Љt+;v!jP+;w9r0K;t0;`uI;u;t;`wF3j Y+ʉ@3҉yHɉЉtA3j Y+ȍ9ssut2rr jrZʉ;+;rl;s3F;sB3##苍㋍ ÉIN;t됋t3t B2*3PPhP=:\PPsYYʉ‰u;wtp3tp3 ;vI+t%33@wƅ## tƅыËw3;@#0;3#4ƃHwȋtx+PWRQ-PPQ,PM_^3[6]ËUQQE 3ɋUSV3W3r8HHIJEBȉM;t5M I;w#r;wMڃmF;uMU tFt2E;uu uPuSW_^[]̋UMt +]ø ]ËËUQV>u%jh cYYE΍EPu諽Y^]Àyt ø3̋US]u3[]W} u _33[]VpAu-OM؃u/sKPPhQF73^_[]ÅuIsjP{DžhW 73ҋu؃3;ʉ^3_ []3EE}tDEF@E4d$jQ3 WPRqUv3҉]ЋMUmMMu΋]jDžPshVh6EU3;ȉ>CE^A_ [];wG֍H+ЉMȋ;|2F+4<;u I;}u +‹D;DsBu ^_33[]Ë}ȋE 4DEƉut + M+Eąt)EMMe ũvu MċD E3EU,K M:KE M;EwA3}Q EEEMvI‹M3UMsM Ƌu}EurEEMċD EujuPRo]3؉u؋‰]E]Euv*jũPS p3u؉]]EEwPrwIPS3ɋ MjuMo;r)w;Ev"E]}̉EUEu vE]uM33tUE ]EME؋Ee؋ȋEe3;s+EmEu]M3;wGr9}s@t5u U؍$ v3RNˉJ؃u]UEHEu3UËMEmJ]H}UME3UB;sH I@;rt <u u֋^_[]ËA ËA 38AH%ËÃAQƒQVq t 9qrw9Qw164YtF^2^ÃAQƒQVq t 9qrw9Qw f;u3^ÃAQƒQVq t9qr w9Qv2^Ë }ȃ^"ÃAQƒQVq t 9qrw9Qw ]f;u3^ËV63YtF^ËV62Yf;tF^ËыJ;JuAJËыJ;JuJÍQ V3+;#tAF;u^ËVr3 +;#t@F;u^ËUU u21Et'tuR<' BvՃ ]UU u21Et'tuRDv' BvՃ ]UU f;u23Et)tuRD\' Bfvf ]UU f;u23Et)tuRL' Bfvf ]UMAЃ w]ÍAvAv_]ÊAËUkU 3M 8 E]339ËAËAËA(x~+~t t t 3q &q &Y38A$@ËA0x~+~t t t 3q(Q&q(j&Y38A,@ÊAfAÊA̋UE3ҋM HMɉHB]38AH38AH%38AH%ËA(ËA0̋UF3ʼnEM S]V WyuW0,PhC;PS3$3ɋ؋$ƃ$A;u拝 sst_^[M3xy]j0Dž,PhR-2_^[M3>y]Ë3{sPA(PhV-uW0,Ph;V  $(33ɋ$ljA;$u苝 ss|_^[M3x]j0Dž,PhV,2_^[M3Ex];Ct $yA$3҉(3ۉ,0+$0u;S0,339stJ;uCDŽ0lj,$ƃ0GA,;ut9s;uADŽ0,30,AuǃstPC;( P0Phv+_^[M3v]Ë jDž@DPh1+M32_^[}v]̋UW} u+E,WQh8P(*_]ÃtMtSQ3VU3ȍ$ÃڋUF;uMt ss\^[_]j,Dž(PhR\*2^[_]̋UE eȋEe]̋UF3ʼnEe SVHDW}X'&$&GىP E4E<1W,0jPӊPEEP0Pi,0u1\`XjPhGP,)Bu X2Xu3P3ɍNj0$ƃXA;u݋Xss tj0Dž,PhR(2XwLP0PhVK(u#S0,PhV)(?6T&33ɋ$ljA;TuXss |j0Dž,PhV'2;t@00L@3҉T3ۉ\ `+8I`jj jjjjj?2C'C/C9C?CECICOC+CTCVNtt2^Ë^^8VNtt2^Ë^^pVNtt2^Ë^P^騝VNtt2^Ë^鈟^UQQVu EEu Pv,Fv(PQTv`,}u2~&t jRPr^]UQQVu EEu Pv4Fv0PQTvh9,}u2~.t jRP^]UQQVu EEu Pv4Fv0PQ:TvHԋ,}u2~(t jRP^]UQQV>u EEu PvTt,hP:huA A^A @A A^@A A^Íp3ux2uAA ^À6ux4uA A^Àdtitotut xtXu\q@A A^Ãlt$ttzu;@A A^@A A^ÍP:luA A^A Q^ËAVjItVLtBTt.jh^;Pf92uA(A^A(A( A^ÃA(A^Íp3ufx2uAA( ^Ã6ufx4uA( A^Ãdtitotut xtXudq빃A(A^jl^;t(ttzu?A(A^ÃA(A^ÍPf92uA(A^A(Q^ËVVf Pt6Fu&3F *FfFFFFF F$F(2 @NF^QPj][f;t2Hf;vˋCEf;tVFf;uuQFFUj]Yf9u]Ff8u j2tF[_^]ÍA,ÍA4Ë3A#u3ɊË3A#u3ɊË3A#u3ɊË3A#u3ɊËUVu yNF ^]UVuyNF^]A uA$t tuA$ËA(uA,t tuA,̋US] 3Vþ ΉE+ˉ] WFM+IUHEЉEE: t@3M+;Í]sǃsut2ۄr;Buރt_+z@<E;rG ;s3ҍF;sG3#EKMN#UM M ‹UMMuutz3}tF_2^[]jDžPBhP1 2_^[]ËUE F(tOjY3}jEP3@Puُt3FPEPY YYxt't"u 2[HEPY3H#fF3@fFE Ft3ۍESPSSSWEt EFV3@M_^3[7]ËUPF3ʼnEESVuW}WE}E3@;fF3ۋEt M]QP YYEHFj Y3}j(EPSu貎EPuo SSufFulF(#‰V,Rv(uuIF #‰V$tpv,v(uu(F0#‰V4tOjY3}jEP3@Put3FPEPYYxt't"u3 2[HEPY3H#fF3@fFE Ft3ۍESPSSSWEt EFV3@M_^3[-6]ËUPF3ʼnEESVuW}WE}E3@;fF3ۋEt M]QPbYYEHFj Y3}j(EPSuEPuSSufFuF #‰V$Rv uuF#‰Vtpv$v uulF(#‰V,tOjY3}jEP3@Puat3FPEPYYtt't"uw 2WHEP+Y3H#fF3@fFE Ft3ۍESPSSSWEtMN3@M_^3[u4]ËU(F3ʼnE}u } uEpEPEPEtNEPEPjEt:MEPEPEPEPEPEPEPu HEP@YM33]ËU(F3ʼnE}u} uEUvEPEPEtREPEPjEt>MEPEPEPEPEPEPEPwȃ#ʃu HEPY ЋM3*3]ËUE 0EPEPEPEPE PEP!]ËUE 0EPEPEPEPE PEP[!]ËUE 0E0E0E0E0E 0E0!]ËUE 0E0E0E0E0E 0E0 ]ËUE]UEE A]UEE A]UEE A]UE]UE]UE]UEE A]UE]UE]UE]UE]UE]UE]V>t 6t 6"u ɰ"FM5tGFEP(,Yt tGFEtMu< t< utGNE>< t< uF>M t9M E3B3F@>\t>"u1uMtN9"u M3҄E Ht\Gut;}u< t1< t-t#tGPO+Yt FtGFwtG5M _^[t!E]ËUEMUSVu 3W}tu E E j"Xf9u Ãt ffftuf;Et f;Ej"Xuąt 3fB]3Ef9f;Etf;Eu3f9tu 3j\^E@f91tj"^f91j\^u8u 8]tj"^f9qj\^u 8]]E} Htf2uft*8]u f;Etf;Et9]t tfsu ]t3f3t_^[]ËUE0F]ËUE4F]ËUE]UE]UE]UE]V6X&Y^ËV6X&Y^Ë3ҋ9t IB9uË3ҋ9t IB9uË!Ë!Ë!"ËU]U]ËËËø Fø$Fá(Fá,FËV6X&Y^ËV6W&Y^ËUEPT(Y]2ËUVu?r3=WM 3ҋu;s M+;w31jP+YjW _^]ËU]U]UE0F]ËUE4F]áFu FáFu 5FáFu%9Fu3Eu#FáFu%9Fu3ou#FÃ=Ft3VW`!(u*VYuPFFl3jsVYVlVY_^Ã=Ft3VW(u*V|YuPFFI3jVYVVY_^ËUVu3ҊtW<=tB΍yAu+Fu_^]ËUSVu3ۋft+Wf=tB΍yff;u+4Nfu_^[]ËUQQSVW}3ҋ<=tB΍YAu+FuBjPVYYtm]RύQAu+ʀ?=AEt7jPVYYt0WuVU uAEj0EUEY?uS#jTYY3jTY_^[]3PPPPP\̋UQQS]3EVWft/j=[f;tB΍yff;Eu+4Nfu׋]BjPV3YYty}]ˍQff;u+j=AYEf9 t8jPUYYt2SuVz uCE03VE TEYCf93uWX3VSYYVSY_^[]3PPPPP[̋UVutW PSYuVSY_^]ËUVutW PSYuVsSY_^]J%%W=Fu_SV3QSSSSj7SSرE؅tLjSTYYt5jjSVj73SSرEtSV9SS 9u3^[_VRYW=Fu_SV3KSSj7SShE؅tHjSQTYYt1SVj73SShEtSVˏSR 9u3^[_VrRYUE0E 0E05S ]ËUE0E 0E0} ]ËUEP@u+]ËUEPffu+]ËUQF3ʼnEVW~MVвEUY;uM_3^G]UQF3ʼnEVW~MVвEUY;uM_3^]UE;FtPY]ËUE;FtPY]3939øFøFøFøFøFøFËUA+уV3;#t UFI;u^]UA+уV3;#t UFI;u^]3939MvhbCFhbCF5F5FYYøFøFáFu FáFu ;F_SV5(FuF2ۊ< t*t <"uPY YtFF< Fu^[á,FuFVj 2^f;w ft#t"uƒf;w fu^/á(Fá,FËUEPY]2ËSV5(FuF2ۊ< t*t <"uPYtFF< Fu^[á,FuFVj 2^f;w ft#t"uƒf;w fu^ËUQQF3ʼnEE SVu+ƃW39u #tEt вEUG;uM_^3[]ËUQF3ʼnEVuW>tвEׅu ;u u3M_3^]áFj Y+33FËUF3E]ËUFj Y+ȋE3F]ËUu uE]ËUE]V>t 6E&^ËU3}csm]ËV>t 6E&^ËUuE]j hFuuKt uYjYe=F3@FE} u<FӃj Y+33Ë F;t33PPPˋвEhF u hF!YeuhEhEYYhEhEYYuFE'u,u*E0ËeM#uj$YËUqt d0@huuEPEusYuE̋Ë3jEȅu2øMZf9uA<8PEu f9HuۃxtvՃzpud0@h$ËUQQF3ʼnEeEPh$FjEt#Vh<FuEt uвE^}t uEM3]ËUjju ]ËUEF]jjj jjj ËUjju ]áFËUFj Y+33F9F!uYF]ËUjju, ]ËUjju ]ËUE]ËUMua!RjX]áF3]ËUE=@t#=t=t$QjX]ùF3]jhFG} @t0t(t ttuu ;5FMƃ?k0U܋FD(t^VY]eEFMD(u H WV>YY؉]E !u]V=Y PËUQESVW?k04FD(\)ȁMM @tPt@t$tuB D(FD). D(FD)$D( D( FD)}uu@3H%_^[]3ËUuGY]UuGY]UuGY]jhPF/eM EX EPjhFE0 |YeE 0 .YE  E06|YjhpFE0{YeM E E0{Yjh0FgE0{YeE @E E0{YËU EMEEEPu EP]ËU EMEEEPu EPl]ËU EMEEEPu EP]ËUQu EuMP`]ËUE]UE]UEE AEAEA EA]UE]UE]UE]UE]UE]UEE AEAEA EA]UE]UE]UE]UE]UE]V6 E&Y^ËV6D&Y^ËV6D&Y^3939391yYË0N+YËUVWhj9Fj0D t*EGEGEG EGEEPjYY_^]1xY1'yYË@1xY1xYËVFpL0-F0F 00 NFt?FWf83Af;:uftfxf;zufu3 _tF0FLPn-0m,F PuO4FuFpLhF>-FYY^ 0F F@Cu43f9~u,hFuVi t;b3ҍOff;u+sv,ff;uftfPf;Qufu3 ff;uftfPf;Qufu3Ma3ۄ0VPUYY0ۋ(PSPtm8/ tj0Ph,$ PQff; u+APPPuS3PPPPPV(V\jPh VGZt u E_SVh, uSVu$vSVjU\3f9t+;s"GPVQ tSSSSS 3ft (,SuVg $3ˍQff;u+APSjU&VVVVVWWWWWCjhȢF1ujUpYeNtu~Ft v;YER>t=jpYE6P$Ytx u=@FtPj"YEV?;Y ËujpYËujpYËUQQVRjj<EYYu3G[$ENLENHHEEEPj EEEPj uej:Y^]ËUQ}} SW3jCS<}YYu艷3 VhS;YYuc3 h S;YYu > Xh@FV.u uVt*WvYYuEΉ3؉3H3EV"V3 YY3W9}YV9Y^W9Y_[3]ËUS3V9]~"W}7u ug u F;u|_^[]SSSSSoA̋U(ee}v[A3Rk}E"EMPEEEE؍EE܍EEEEE EEPEPEP E]ËU SV3Fhu83YW{f3uF00EhF5\FjhQW\FEhFhQW\ EHM ff;uftfPf;Qufu3M ЉM!EEE0hF1jhQW`E=Fn}uJN(tu v(7YF$t8Ou v$7Yf$Cf^(F _^[]S7YN(tu v(z7YF$t8Ou v$c7Y3F$FF(F F@3PPPPPV?̋UF3ʼnEE SVuW}8t!tVPW v3Dž@4؉DMf>Laf~CVf~_KhFVQ؉0YY'+@j;Xf9 @\FDž<WV3 u Qff;4u+;t< F~Ë0hFS 8YYu j;Xf9<_VShPj6=W3fPDuf>u3ɋ3Ʌt,PVWnD tC3 3ɋ@C@FD^uuWYM_^3[]%3PPPPPq<̋UF3ʼnES] VuW}pxx,@PjUHPhPVu3M_^3[u]Ís8>f0Df;18u5f8t'fpf;qf>8uf>uDu끍Qff;Du+A4EP3(Y> >0$O Q4ufuDHPYD,ы@ΉG8 8=1($Q$1 YYGFtJD(u9t(0t$008 D 88(8L(DPPPPP8̡F 0F F@} t9uv蝥]0^]A=juu u^]ËU}SVWuMN}t] tM;v2/NE􃸨uQSW< 3+MQP[MQPLCmtt;t+}t MP_^[3]ËUuY]UQQeESVWPu} YYt] KCu+3ۋMQAu+jA PEm<YYuuVK uYth8FuV`K u_} tu uVGK uF΍QAu+ʋ+ESPQV_t33V W&YY_^[]3PPPPP.̋U SVWE3Puuu}YY9u t] Kff;u+ދMQff;u+jA PES;YYu3ufV u Yth<FuV uo} tu uV uV΍Qff;Eu+ʋUS N++RQVt3ދ3VWo%YY_^[]3PPPPPk-j hF3ۈ]j YY]E9Fs @FF=@F10 @FA @F+=wMj uu QoAu.SuJYYt8 tݡ0]SSSSS,š0E @Ê]j mYYj hF3ۈ]j YY]E9Fs @FF=@Fb0 @FA @F+=wMj uu Q@u..SuHYYt8 t0]SSSSS+0E qÊ]j XYËUQSVW3ۍEhPFSP]5G t NutESV;IYYu E 8gWYtSWIYYuE S8D#Y?W;#Y}tSWHYYuE 8S@FWHYE YtDFV"Y_^[]SSSSS*̋UQSVW3ۍEhTFSP]F t NutESVGYYu E 8gW[YtSWnGYYuE S8r"Y?Wi"Y}tSWEGYYuE 8SHFW,GYE YtLFV*"Y_^[]SSSSS)*̋UQV3EhPFVPuE t t 3E^]VVVVV)̋UQV3EhTFVPusE t t 3E^]VVVVV)̋UVu33WtG"uA@Gut5+@jP#YYt <"tAF>ujA!Y3_^]ËUQSVu3WˋË>fteE"f;}uA@:futG+@jP"YYu%f9tUf;tff9u3fS Y3_^[]ËUE 0u]FYY]ËUE 0uoEYY]ËUE 0E0/FYY]ËUE 0E0?EYY]ËUE 0E0EYY]ËUE 0E0EYY]ËUE0E 0E0qD ]ËUE u0E0UD ]ËUE0E 0E07D ]ËUE0E 0E0 ]ËUE u0E0 ]ËUE0E 0E0d ]ËUEP@u+]ËUEPffu+]ËUEP@u+]ËUEPffu+]ËUE u0E0B ]ËUE u0E0B ]ËUE0E0E 0E0/;]ËUE0E0E 0E0H;]ËUE]UE]UE]V6J&Y^ËV68&Y^ËV6&Y^3939ËUUVqAu+΍4;t"F<\uj\RCYYN3;+t5+t,+t$@tT39~jjX3@3fF Fyu@uEPYuz9}ttF#ExF@tNNN t N tN t N tN_^[]3PPPPPh̋UEjY+tB+t9+t0+t(@tJ ]3} ]jjX]3@]3]ËUQVut2^]E@tEPzYu9u3PPPPP̋UQVuƃ?k0FD(Ht33ySWjjjV!Aڋσ#˃un8uN3_[^]3fEEjPVW uf}uSWV: t3PPPV@#ƒu&뫋Uuu u ]ËUQVjEPuuuu uVuu^]ËU]:UQeEPuYYu,VuWu uuuVu uVi _^]ËUjuuuuu ]ËUuu u ]ËUQVjEPuuuu uYuu^]ËU]=UDSVWuEuuP}ԋjY9uu跍 E 0轍] ;u萍 3虍ϋEuԃe3AE E#jYEEPuu }ukM؋#;u5Et/EuԉMjYPu0 }u+ ?k0Fd(HEP諌YWEuGHEV茌Y ?k0WFd( FT8*.} u U ;u Fjjju:} t FU EM;0M FD9(@u D9( F+_^[]ËUEM?SVuWk0Mj F[T8UU t f9uL8(d8(rډE;WB MM"j Zf9UU tMf;Es3j Zf9U uj Yfj ZfjEEPjEPu(E}Mj FD8(HXt:fUf;ufgj XfFj T8*Ft8+FZT8,;f9EuU ;u fE)jjju*9j Xf9Et j XfEU ;] FD9(@u D9( f f+_^[]ËUEȃ?k0E FD*]ËUEfM V?k0FL*Fl+F^D, ]ËUQQSu] Surȃ 'EU?Wk0UFE|8)uVsxF3Bw;rNBFtFuV*@;uSED8(Ht5FL8*rMF FD9+uE FFD9,+ڋjRPu}7u+uVSjhhEЅuHEP萅YE;֋ F2D9-$0D9-^_[]ËUEVW} G;s^OSt7 u ;sj _f99} uj [f f;rEȃ?k0 FL([+_^]jhFXuu ;5Fƃ?k0MFD(;Eu莄 虄|VY}eFMD(uj L uu VG }E )u}VQY  ËU(S]Wu݃ b;FVE?k0}FUL(M%Mvu 考E} tVtD)Eu3tuШtE MEUЄu!0 jXE;rMP jj uû 讂vujjS44 F}D ƉT$׋M]3E܋F]D(H]]\*] ]]}@]I}EEMFD* EFD+E< totkE]j_@]IEEMFD+ E:Eu>EFD,E< t)t%E]j_@]IEEMFD, S3YtqEMFD(t]EPu EtL}uJjEPEPuuEuHEP YVY^EMGtu_u A|j"3ՋUUVtM t uu|j^0^]W+>Gtu_u {j"3ӋUU FҋM##M щF]DtjYFt!jtjY)jh@jc j~̋UVut j3X;E r4u uFt VHYtVj5FEt ){ 3^]ËUEMU Ht]ËUEMU Ht]ËUQjuQQu uP u |]ËUQjuQQu uP u~]ËUQjuQQu uPU u]ËUQjuQQu uPC u9]ËUQjj QQjuP ji]ËUQjj QQjuP u >]ËUQjj QQjuP u {]ËUQjj QQjuP} u z]ËUQjj QQjuPR u 轃]ËUQjj QQjuPB j|]ËUQjj QQjuP j]ËUQjj QQjuP u ]ËUQjj QQjuP u .|]ËUQjj QQjuP j|]ËUQjj QQjuPn u {]ËUQjj QQjuPC j:]ËUQjj QQjuP u ]ËUQjj QQjuP j2y]ËUQjj QQjuP jy]ËUQjj QQjuP j]ËUF3E]ËUFj Y+ȋE3F]ËUA+уV3;#t UFI;u^]ËU(F3ʼnE}Wt uYjPjP8h0jP%0ffffffEEDž0@E EEEj|EPxEuu}t uYM3_X]ËUuF]áF3Fd=uË\ËUQF3ʼnEVB=t5\t+uuuu uвE֋M3^ѽ]u5Fu35Fuu uu.3PPPPPyËV3VVVVVfVVVVVjktjY)VjVj VEPE^ËUV5FWu3=FBYFϋ_^]ËU;MЋ\\]ËUu`Y]UE]UE]!ËV6)&Y^j hF|3u>j+Y}EPYtxx8xHE |Ëuj+YËUE3ɉEHEHEHEHEHEHE ]Ë3҃ Ë!ËUQSFVW=F ]A7tSF u.VBYV   u] ШuVBY;uE _^[]ËE0j8jj tуHjh P7 F VxBY1nBYËV6&Y^ËV   u Ѓ^ËU3S]VW}u𫫋Fu CF> t3 tu>CjhtFVl uj XF8t>=umF8tjhxFV u  ?jhFV u   jhFV u F> t[wp7_^[]ËU3S]VW}ujYj Fu C_f9>t3҃at!rtwC  KU2UUmfSpt\+ tBt4t' tumu 4 Ssm2sEPSY]mu ;UTTt@t3t" tS}&EPS뺍EPSSSUYȊm34Fmtf9>tu3f9CjhFV f9>tf>=urf9>tjhFV  u AjhFV  u  "jhFV  u f9>tO3n_^[]ËUVWu EPt}YY}_^u3UhuEuuPcuދEF M E3ɉHEHEHEMEAE]ËUVWu EP!}YY}_^u3UhuEuuPuދEF M E3ɉHEHEHEMEAE]ËUE0Eu 0h ]ËUE0Eu 0 ]ËUE0Eu 0 ]ËUE0Eu 0 ]ËUE0Eu 0 ]ËUE0Eu 0 ]ËUE0Eu 0 ]ËUE0Eu 0 ]ËUE0E0E0E 0E0]ËUE0E0E0E 0E0]ËUM@t2]Ã@]ËUE]ËUE 8t2]ËM ]ËUE 8t2]ËM ]ËUMt2] ‰]ËUMt2] ]ËUE 8t2]ËMI]ËUE 8t2]ËMa]ËUE 8t2]ËUuJJ]ËUMt2] @]ËU]zU]UQF3ʼnEV5F35Fjju΋вE֋M3^躲]Fj Y+33Fj hFneE0!YeE 0YFjhC8EFj Y+33FFuE N uM1v!YËU EMEEEPu EPX]ËUF3E]ËUFj Y+ȋE3F]ËUE]UE]UE]C1 YË0YjhCF8EFj Y+33FF1 YËUuMYjhCF8EFj Y+33FF]Ãhl Fhh Fhl FjNh Fh| Fh Fj4h Fh Fh Fjh Fh FhXEjh Fh FhlEjh Fh Fh|Ejh Fh FhEjh Fh Fh Fjh Fh Fh Fj~h Fh Fh Fj dh$ Fh Fh$ Fj JhH Fh@ FhH Fj 0hp Fhh Fhp Fj h Fh Fh Fj h Fh Fh Fjh Fh Fh Fjh Fh Fh Fjh Fh Fh Fjh$ Fh Fh$ FjzhH Fh@ FhH Fj`hh Fh` FhEjFhp Fhh Fhp Fj,h Fh Fh Fjh Fh Fh Fjh Fh Fh Fjh Fh Fh Fjh Fh Fh Fjh Fh Fh Fjh Fh Fh Fjvh0 Fh, Fh0 Fj\hH Fh@ FhH FjBhh Fh` Fhh Fj(ËUVu6Yu ;u u3^]ËUESVW FFʋ3;titcu;ut6YYu/;uuF3t)u PEtV@Y빋FًFj Y+3;3_^[]ËUEWt>t6E& Fu^]jh0FȬejYej^u;5FtXFtI@ tF4'YtEF PEF4YF$FE E脬jYËUEHE`]ËU@ #E+E@]UVu ֋# u#E^]UMVq $<t3KtAW9+a~0WPQYPT\ ;t jX tjX!3_^]ËUVuu V=Y.V~YtF tVP YYu3^]jYjhpFeej@ Ye5FFEԋ]u;tt>}؅tVW5%YEG t2uWIYt!EuG tW+Yu E܃eEԃ땋]uu$YEEtE蠪Ë]j Yj hPFAuu VY)eV$YeVY}EIËu}Vd$YË@ ËUVuW~  t$tv\Y!3FF_^]ËUEttjjjX]ËUHEPEf}ESV0X3E ;|VЂFY;~W3tVEt@t;t4u QEt!Njσ?k0EFBB(EGCE;u_^[]ËSVW3Njσ?k04F~t ~tN({F(ttjjjXPE؃t t SE3t%^uN(@)u$N(N(@FFt @GU_^[j hFj? Y3ۈ]]S舁Yuh]E Ê]jF YËV3FtP FYrݰ^Ë@ËUEu9R]Ë@]ËUUVtM t uu3fQj^0^]W+>fftu3_ufQj"NjUUVtM t uu3fQj^0`^]W+>fftu_u3fhQj"3ˋUFVW|zuփj X+#ЋE ;sЍ<2;t 9tA;u+;u>+ǃ+Wtu ;uE 9tA;u+w|xuփjX+#ЋE ;sЍ<2;t 9tA;u+;u+fɋǃ+(ftfu;uE 9tA;u+|MU ;t 8t@;u+_^]ËUQFMVWt#E эA;t3f9:t;u+j X+#E ;sq3U;Mt f9:t;Uu+;uHQ+΋+Wɍ Juu ;uEM Hf9:t;u+wt'E эA;K3f9:@;u4jX+#E ;sq3U;Mt f9:t;Uu+;uQfɋ+΋+ȍ J(fufu;uEM Hf9:t;u+E A;t3f98t;u+_^]ËUMU ;t 8t@;u+]ËUME A;t f8t;u+]ËUVuW} j X+#;s׍ 2;t 8t@;u+;u?+ 0ǃ+Wtu ;uE 9tA;u+w_^]ËUMWt#E A;t3f98t;u+Vj X+#E ;sq3;t f98t;u+;uKAM +΋+Wɍ Juu ;uEM Hf9:t;u+w^_]ËUVuW} jX+#;s׍ 2;t 8t@;u+;u?+ 0fɃ+(ftfu;uE 9tA;u+΋_^]ËUMWt#E A;t3f98t;u+VjX+#E ;sq3;t f98t;u+;uKAfɋM +΋+ȍ J(fufu;uEM Hf9:t;u+^_]wtuftfufWfËUFVW||uփj X+#ЋE ;sЍ<2;t 9tA;u+;+ǃ+Wtu ;uE 9tA;u+w|uuփjX+#ЋE ;sЍ<2;t 9tA;u+;uZ+fɋǃ+(ftfu;uE 9tA;u+UʋE ;t 9tA;u+_^]ËUQFMVWt'E эA;}3f9:r;ufj X+#E ;sq3U;Mt f9:t;Uu+;'Q+΋+Wɍ Juu ;uEM Hf9:t;u+wt'E эA;3f9:;ujX+#E ;sq3U;Mt f9:t;Uu+;ufQfɋ+΋+ȍ J(fufu;uEM Hf9:t;u+E эA;t3f9:t;u+_^]ËVWF3jhWtF8r۰ jY2_^ËUkEFPE]ËV5Ft kWFWE Fu_^ËUkEFPE]jYjYËU S]uG|VWj=SMEYYtN;tJx5FE;5FuV!EY5F3ۅ9] t/9Ft'yunGW]Y_^[]Ät3jjSF75F t9Fu%jjSF 9Ft5FtE+PQEYYxH9tD4YM8]uEDA9ujQVSDžtXP8].؉EH;?jQVdSdME\5F9] ȍQAu+jAPEYYtGuuV u@M+EAEЈY#PVu+_^[]+USVW=F?t-] S6u uX=tft>u+_^[]+ssUE 0E0uEu2 EHxuEu`2 2EH |ރـ} $ fPuujQDuuh F|wbtpHtZHtDuEHwnu fuujY} $0fPuujuuh Fuu VF}]WSujIuWSh Fu VWSujMu(WSh Fu VWSujSu(_WSh Fu VWSujpuuujXuE@ja ELPuuPx4ME3Pu?YE9p t EuP?YMMMM3+™j<^ɹ Fx FuuQj0uujVj0uujW4QEHui} $0fPulujNu3u8E uuPubx{MDC%tQEH} $0fPulujjdYEH }uEu:EHZQuEuuuh Fu uu}VWujmuVW FSu uVWujdu(VWSu uVWujy FtvtJE@j Yuр} $0fPuujqEHTK} $0mEx+xj0uujppp lu uu}VWujYuVW FSu uVWujmu(VVWSu uVWujdEH~;%jR_;x$Du uuuujHuIuuh F6u uuuujMdE wq[fff ;r +ȉ&_^]ËUM9t"UVu W:ftf8)u_^]ËU0F3ʼnEEUEЋES]E܋E Uԉ]VuuWtt\XT} lfBfEfBf@MfEfB fEfBfEfBfEffE3fEEt3QQWPQ`I3QQQWPQ`@؅kJ;tXJ;#J=w#;#cu$;#PuY3ut~}EtSVWPEj`jSVWPEj`ЋJ~#]u܃;vff JuVBYe_^[M3o]j$uYn>tE3ɉ}ƒAf9t‰]]؃d/'AtHtXMt"ah| FWQYYuSO Mbt!t tjBjbEjmt t EjHh FW[QYYuGEjpx%yH@hj'Xf;YffuBt!t tjAjaEjdht'ItIjYjyEԃx LPu>v}ff f]܃>v}f fuftt&EjS6ttEjM"ttM܃f%EjIXuSVuuPut}f[$2KUEH;#]ËUEtM ]ËUSVW3ۍMS]wEj_EVJff;Eu+ыAEff;Eu+M؃u]P73Yuj:EEYfp΋++@PV ΍Qff;Eu+j:X4NfE+0+@PV uY΍Qff;EuE+j:E4NMAMYg3fP>}Yt M䃡P_^[]3PPPPP+̋USVW3ۍMS]Ej _EVЍJff;Eu+ыAEff;Eu+M؃u]P֥3Yuj:EEYfpЋ΋++@PV ΍Qff;Eu+j:X4NfE+0+@PVz uY΍Qff;EuE+j:E4NMAM Yg3fPݤ}Yt M䃡P_^[]3PPPPPʬ̋U(VW3MVE܋։udUSƉMEu+W豤EYWVPE M}d։E)MىU}u% 8E 3E+PQ ZU AEAu+MGEBUr]։U}u'EMω 3E+PQ认 U AEAu+MGBUr]։U8}u'EMω 3E+PQU U AEAu+MGBU r]։Uh}u'EMω 3E+PQ LU AEAu+MGBU r]։UØ}u'EMω 3E+PQ蠣 U AEAu+MGBUr}]u)E ;E+PQJ EQAu+G}u)E ;E+PQ SEQAu+G}u)E ;E+PQ輢  EQAu+ʋUYM߃uE}uǴCuu( AE E7+PQ Qff;uE+ʋUKM@Er}uCu}u+M AE E7+PQB Qff;uE+K@Er}uCu}u+M AE E7+PQ Qff;uE+K@E r}uCu}u+M AE E7+PQf AQff;uE+K@E r}uLCu}u+M AE E7+PQ Qff;uE+K@ErCu}}u/ GETTE+PQ jETQff;u+KCu}u/ GEXXE+PQ1  EXQff;u+KCu}u/ GE\\E+PQ E\Qff;u+KCu}u+ GE``E+PQu uTE`Qff;u+ʋUBUy<{} EM]u}[t M؃P_^]VVVVV̥̋Ujuuuu u]ËU$W}u^3U} tVu3fut43*uMTUu EUE S3ۉME>}}}f%}tEfMEHMEX9]]f>#uEEtOuuERPEPuPEPGEt"MUbt] 3f+]4t3fuu c"V}t M܃P[^_]ËUEt8uPY]ËUujuuu uD]ËUjjuuu u%]ËUQHLMMQP7EYY]ËUMSu]sKEPSkYYt$}E苀 t E䃠P}t M䃡P3fEEEx~.ÍMEQPtYYtEE3j]EY3*3]AEfEUEEjpjRQMQu EP$u8EgE䃠PXu}Et+M䃡PUE Ѐ}t M䃡P[]ËUMSuK]sKEPS>YYt$}E苀 t E䃠P}t M䃡P3fEEEx~.ÍMEQP*YYtEE3j]EY3*3]AEfEUEEjpjRQMQu EP$u8EgE䃠PXu}Et+M䃡PUE Ѐ}t M䃡P[]ËUu ju/ ]ËUu ju/ ]ËUE E]ËUE E]ËUE ]ËUu hu( ]ËUE]ËUu hu ]ËU졨FtjuYYMAw ]ËU졨FtjuYYMAw]ËUSVu t]t>uEt3f3^[]WuME􃸨uMtf3GEPPYYt@}~';_|%39EPuwVj whE}u ;_r.~t(139E3PuEGWVj phEu%*}t MP_1Ujuu u]ËUuMeEPEu pEuP#tE}t M샡P]ËUS] W}utEt 3zEtVvYj^0SuM?E39u]fEf;v6tt WVSaq j*^0}t M샡P^_[]Ått_Et΍MuQVWSjMQVpرEȅt9uuEtHEzutt WVSp j"^0FlUQeju iPuEPtE]ËUjuuu u]ËUESV3ҋp#W;uC;u?Á u@0΋ t ;u ;ujX# tjj3_^[]ËUE3ҋH tB]ËU0SVW}3ۅyu Mu(rG 9Ewhj"_8)UJE%=uR;uNSu$SWuuuVR$tbjeViYYt8] ɀpX: t-FJ38] j0EK3' ]XuFB % u!M E1FFMuEԋB%Ew :ej0XEM~SR#E#ыMBKj0Yf9vËMUFEEEOMEfyfxWR#E#ыMJfv6j0F[ftFuH];Et9u: @~Wj0XPVm E8u} 4U$pRrJ3ہ+Mxr F+F-كۋj0X|?;rjPSQG0UF;u |drjjdSQG0UF;u | rjj SQpG0UFj0X3F}t MЃP_^[]ËU EVuWuu~PEWp0v9MtM3}-+3+ȍEPW} Q3Ƀ}-3Ptu(EjPu$u VuW _^]ËUVW}~3 9E w j"^0蚘_^]Su$MU ]t%M3P39-Pu SU E8-u-s~FFE􋀈39E t+E hFPV [uvN8EtEUB80t/RyF-jd_;|™Fj _;|™FV}u90ujAPQ賀 }t EP33PPPPP諗̋U 3VWu}uE}PEWp09MtM3}-+ȋu EPEP3}-QPtu EjPWuV _^]ËUMSVWu U}]JI}t;u3:-f0:-u-sBjVu S:0F~RjVu SEFEHy)}u;}WVu SWj0Vi}_^[t EP3]ËUSVWu3}uE}PEWp0&E3ɋ] }-HE49EtE+MQWPV]tUEH9E|*;}&t FuFu(EjPWuSu(EjPu$u WuS _^[]ËUHF3ʼnEUMS] Ã;sj XM3[R]Ät-AJlFE|FE38]EpFEÉEKxFEFEԃE؉EEEVtFEFWF4FEFu+uF3u3;vj"XF4QRls _[^]ËUusrY]UEVWH+jd__+^]ËUVtuV4YY#^]ËUVtuV'YY#^]ËUQQVuuj^0yS] Wj Yuj^0y'E=@W|jY;|=&Avj^0EEPEP}FYYQFi}LFuLFV3A9P}A9|INj+QV Yf ǹVj_[^]ËU Vuuj^0x"Wj Y} uj^0kx3OEM |=@WrjZ;|=&Avpj^0SEEPEP=]YYjFQPuS&FQ鹸LF+؋E€}EuLFV3@9Q}@9|HFj+QPV w7r&j}YjVPWST&Fj+j<WS;&f Fk<+3[_^]ËUE]V6co&Y^ËUVW}7ƙiȀF+3Ɖ7;|+B;|B=| B{M _^]ËUQS]3VWjs;PVW%3HFAMQ+;sMQY)SK2|s,u3‰NVKzYt";E SuV^YtM _^[]Ë!ËV6Dn&Y^ËVt!F8u'j$\njF8nF8YYu % 3^ËUVtuVYY#^]ËU]UVtuVYY#^]ËU]UQSE3P]Y9]nVuW3GN; Fu ; F'9FFPFPFPFPf9FuFSPFPFPQWFPFSSPQSShjF,PhFPfFPdFPf9\Fu`FSPbFP^FPvWbFP^FSSPvSW,OjXjZ3j C_k} jXj _3jB[jjjjjjRPQjj3PPPjPPSWvjjXF=FN;};|&;";~";}3@_^[];|;;~;}3kF<Fk<i3;u ;5F;5FSSSSSs̋UM]ËUM]ËUM]ËUQQe} VW}uySWY]EYtLFLFWFYimj6YMk+;UE}tLFLF[u*;~&!WEYt 4LF4LFu kE$<E(k<E,iE0}u5FF=F_^]ãFEP5FYuDiE Fȉ Fy\& F\&;|+F F=FjjjjjFr̋UQQWFEWhuP uE@"t37Vu/jYtWuEVP֍u33ViY^_]ËU SVe؃eEP]>YEPY Fut4ʋƊ:utX:Yuu3D]R;iY΍QAu+ʍAP]ij Fi FYYWyAu+VAPRi j_WVj@3 >tFu>-_ÄtFVmYiM<+t<0|<9F>:uBFVmk:uFVmYMȉM<9F<0}tىM38EEtjVj@p t @uI0u30^[]3PPPPPp̋USV!3ۍE]P]]iY"EPYEPY5 Fg F$FlEk F<lFW3G=FMf9^Ftk<ȉMf9FtFt +‰}kGt%u>Gt tuҋUu_[uu E jPDXJj"둋U]DUMftfy:uarzw ]3]ËU F3ʼnEE|:5@fEj:XfE3fEEPhEuHEPY3 jdM3!]ËUF3ʼnEW33hfWP7 Ph`E=wPYBSVXjS]YYt VS`Eu VYV[Y^[M3_O!]ËUE t38t.}tuPu~ ]uuuuP{]ËE;rPuYY]ËUE t4f8t.}tuPu ]uuuuP]ËE;rPuYY]ËUW3WWWu EuHEPY3JS] V;wjS pYYu SuV t΋V Y^[_]ËUW3WWWuEuHEPZY3JS] V;wjSoYYu k SuVz t΋VY^[_]ËUVuu,a3;v "juVu  E;suHEPYċE^]ËUVuua3;v "juVu E;suHEPSYċE^]ËUE 0E0YY]ËUE 0E0YY]ËUjuuu  E]ËUjuuu E]ËUE t08t+}tuPu ]jjjuP]ËE;rPuYY]ËUE t/3f9t(9MtuPu ]QQjuP]ËE;rPuYY]ËUE3SVWf9t,u >ftf;tfu3f9u3_^[]ËU졨FuuUu_]ËM tSVWjA_jZ+[ f;r f;w f;r f;w ftf;t_^+[]ju u ]ËUMSVu聮]tu uq1_EWuBjAYjZ+Z3f;r f;w f;r f;w ft:f;t3MQPM[QPvftf;t+_}^[t MP‹]ËUQ}uh^3Vu uI^3SWo3WWjuC>WShEEuHEP3GPXVYt0uVjuWShEuHEPY M Ƌ3GVUY_[^]ËUQ}u]3Vu u]3jWou&GWMEYYuHEPQ38PUYt!uVuWSuHEP Y3V2UY_^]ËM 3ƋGUuUY]UE]V6T&Y^39Ë!Ë39ËV6T&Y^ËUQQSWj0j@JV3ۉ}YYuH ;t>Vw ShFPsNv0^ԍFF F f^;ű}^SKTY_[]ËUVut%S W;tWE0;uVTY_[^]jhFf&} u j ^0[&3ujlYuF}9E|94Fu1Fuj ^uE묡F@FG뻋ujZYËUEȃ?k0FPE]ËUQSVuxi;5FsaƋރ?k0FM|uCWg} u"tt uWjWjWj|EFM|3_ ^[]ËUEȃ?k0FPE]jhF$j#Y}3ۉ]]ԁ}MFE؅uSFt/F@WYǃ?k0FD(}E$Í Mj0Xu;t`F(uVEF(tVEMj0X+u؋ƙj0Y4΃?k0FD(F|tC}jnYËUSVuWxg;5Fs_Ƌ?k0FD(tD|t=u#3+tt uPjPjPj|EFL3) _^[]ËUMu Cx'; Fs?k0FD(tD] yX]jhxF"2E t E @tˀE tuEuHEP.Yu@uuu5 EeuVYYƃ?k0F\(FD)Fd-EEW"ËuEuƃ?k0Fd(VYËU<F3ʼnES] VulWF+C uCPVE }};};fft,u%>fft tuҋUu3f_[ruE 3jPfTAX3fj"zU](USVnEuttVEtjXluE؃tQE W3EEWWEEPhlDWWu}EtWjVEu}tVuSPuMVUjBY^[_]3PPPPPJ̋UQMSW3ۍQff;u}+A+ljM;vj XWV_jSDYYtWu SVu5u+ߍ~uSPtuMVj*BY^_[]3PPPPP'J̋UPF3ʼnEM S]VuWt 6E^ËVW7 6=Y;wu7t 6E^ËUuE]ËAËAËVW~9~t3r>u+jjW=j; uj XMFF+>wSj?S6r8 uj ^ NF3jW;Y[_^ËVW~9~t3r>u+jjwSj?S67 uj ^ NF3j:Y[_^ËÃËU]霱UE ]ËA+ËA+ËU]2U]*U]U]XjhF E0nYeM E E0oYËU EMEEEPu EP]ËUE]UE]UE]1nY1XnYËVj @H@F@H@F@HF@H Pj hF*Q@HPQhFQ@HPQhFF0uF=FtP9Y@HF@H^ËUE-t(t tt3]áF]áF]áF]áF]ËUMj迏%FEuFE,uFEuEF@}t MP]ËUS]VWh3sWV{3{ { F+7Fu9Au_^[]ËU F3ʼnESVuWPvܰE3ۿÈ@;rƅ Q ;s Ƅ @;vuSvPWPjSSvWPWPWSdt@SvWPWPhS]ËU} uj@X]jj@uj]ËU} uj@X]jj@uu ]ËUjhuj]ËUjhuu ]ËUjjuj]ËUjjuu ]ËUjuYY]ËUu M>Etxujjuu E3ɀ}t EP]ËUjjuj]ËUjjuu ]ËUjjuj]ËUjjuu ]ËUjjuj]ËUjjuu ]ËUjhWuj}]ËUjhWuu a]ËUjjujI]ËUjjuu 0]ËUjjuj]ËUjjuu ]ËUE]V>t 6԰E&^39ËV>t 6԰E&^ËUu԰E]ËUUW3f9:t!Vʍqff;u+Jf9:u^B_]Ë339ËUQSVWذE3tVVYWWWW+SVWWرEEt4P.Yt3PPuWSVPPرEt33W-Y߅tV԰E_^[]ËVWذEu37SV+S-YYt SVW jZ-YV԰E[_^øFËUu9-Y]Uu'-Y]UE]UE]V6,&Y^ËV6,&Y^Ë!Ë!ËV6,&Y^ËV6,&Y^ËUQpHLMMQP-rEYY@]ËUQpHLMMQPrEYY@]ËUQpHLMMQPqEYY]ËUQkpHLMMQPqEYY@]ËUEu]@]ËUHF3ʼnESVu3Wuĉ]䋎]]܉]Љu]F]9uPhQESP2jj+-SE+jW-SEl+jW-SE[+jW,SEJ+jh,S}3+<9]N9]E=9]49]+È8@=|EPvܰE ESvOEԺERPRQhSg$EܹSvQPQGPhSg$}~+8]t&MtQ: B;~8Yu݋ESvPhWjSE5U3ɍfMEE܈Y逃}XMM̈~@8]t;Mt/q; E(PjWEjP'P E)PjWEjP E*PjTWEjP E+PjUWEjPߝ E,PjVWEjPȝP E-PjWWEjP讝 E.PjRWEjP藝 E/PjSWEjP耝 E8PjWjEPiP E$EP5$rU<0|<9 ,0B:u"<;uFv>u}FjY󥋃3ɋuA}@F@F@0F0@4F4EttK|tux#s|p#YYEC|3_^[]ËUU:tV<0|<9 ,0B:u^]<;uFv>uUVutY;FtP"YF;FtP"YF;FtP"YF0;FtP"YF4;FtP"Y^]ËUS]3VW]E9u9uEFV3FjPVu $EYYu~jYj"3Wu<"YYuu."3Y@F>9TjJ"Wu"YYu>E苻jWjPuMEQjWjP^ EPjWEEjPD E0PjWEjP-P E4PjWEjP t%uXMYud!MQ[!EYYuU<0|o<9k,0B:u}uM3@ttK|tus|! YYEC|3_^[]<;uFv>u녋uFFFFFFF0FF4aUU:tV<0|<9 ,0B:u^]<;uFv>uUuM Y]UjuYY]ËUjuYY]ËUj umYY]ËUjuZYY]ËUjuGYY]ËUj u4YY]ËUE]V6&Y^39Ë!ËUE SVuW3+΃;#t6xGvY;u_^[]ËËUW}uF5Vhdj YYtWV,YYuVY3VY^_]dž3UE eSVWVuEuftfzf;~ufuދ҃t_+Ff:f;>uftfzf;~u fuu"jEPE h PP-t+E7Q.Y.jEPE h PP,u3 EuE_^]ËUF3ʼnEVuEj PjYV,tj EVP @M3^]ËUuYu/9E t*EVVffu+QY;^u3]3@]ËUQVu 3WB3xNStH7+‹؋Ek M4E0賶YYuEMȋE ys{;~[3_^]ËUQQSVWR]3ɉMpPPNf~Ef9tWjh*FI 3ɋVf9tGf9tw3Y9Fu2Vj@h'F t3Vf9t EY39~ VP_YYPEE t0}M 3fQff;Eu+APujUSj@WhS~*thj@Sh P`*tJj_SYYuj.SYYtj@Sj P/*tj jPV'3@3_^[]3PPPPP̋UF3ʼnESVuWPPVL/YKdٍ jxɁPQV,Eu!@3 PsTuftfzf;~ufuދ҃t]+Ff:f;>uftfzf;~u fuu jEPE h p,Et)E5Q Y,jEPE h p,Eu3 EuE_^]ËUM3f;+Ft r3@]3]ËUQVW9JujEPh Q,Eu30;ut(} t"wPNffuwP+Y;t3@_^]ËUSVu 3Wx13+‹Ek 4E0VYYtyw_;~2_^[]ËMk M̋UF3ʼnEE S]VuWERIP}E3?IM3҉LE0xtf9t+FWHPh*F3E 3҉Utnf9titf9t EP EP}Y*FuHPh'F tN3tf98t EP EP:Y,tf9t EPYE4EEE3}u3M_^3[]3EP#VYYt́tŁtPEtju0EtEt0EWjUPPu#t^WjU Put#j@Shu,ETj@Phu,E5j jQV3@UQfGHLMMQPHEYY]ËU]UVu tj3X;Es 3BS]Wt S>}Y3uVS?YYt;s+;VjP _[^]áFаEFÃ%FáFËUQF3ʼnEW};} uWVStвEӄt;u u;u u,;t&~tt jвEYF;u2[^M3_q]ËUQF3ʼnEVu 9ut#W>t jвEYF;Eu_M3^$]áFj Y+33FËUF3E]ËUFj Y+ȋE3F]áFj Y+33FPYËUA+уV3;#t UFI;u^]ËUuF]ËUQF3ʼnEV.tuвEYt3@3M3^,]j h8Fej%5Ye5F΃35FΉuE Ëuj45Yj hXFej4Ye5F΃35FΉuuYFE Ëuj4YáFj Y+33Fj hبF0eE0X4Ye5F΃35 FΉuE : uM1b4YËU EMEEEPu EP]ËUF3E]ËUFj Y+ȋE3F]ËUE]UE]13YáF3 F13YjhF 3uujW3YuF‹ȃ}uF35Fj F35FjΉu_}܅tt j Y+33‰Eu3#u}j*3YÃt WвEY3@ʶUEHt-t ttt3]ø F]øF]øF]øF]ËUA+уV3;#t UFI;u^]Uk (F E ;tU9Pt ;u3]ËUEtt t~~ z]ËËUQEPjYY]ËUuFJuF=u F0uF#]BA9Aj,hF?3ۉ]!]̱Muj_;t5Ft"Ht'HuL tt ~;6VxEZA؉]ԅu3VYY3ɅuyGу2ɈME؃et j0YMeEeE؄tFʃ3ʊM‰E3҃‰UȈUutj0Yj;t tu#CEЃc;u;E;u"k0F k 4F ȉE;t%` Fj Y+33FM؉E1}uk;u6?pWMвEUY+j_u]ԊEEȀ}tj 0YVMвEUY;t tuEЉC;u ;?M̉H3荳jhxFG] }tt tW@F?t>Fu&5,FYt5,FhFP EPWYYtP M؃t"k5(F u;t9zu  J;uM؋3ۈ]u؉uj.Y]tu:=Fu1jhTD̰Et FvHE]uW|E؅t&5F΃30ΉuE t P]؃ vW0FGut;}r;}}rE^fj"^0NNG;r3_^[]ËUM3U S]VEW8Etj-Xfs3@ىEڋ}ujuRQ藝MȋE] vW0fGut;}r;}}rE3fej"^0m 3ffff;r3_^[]ËUM Vueej^0&33PPPPP̋UQVW}u^j^0]u 3Et9EtSuYtVˍQff;Eu+jAPEYYuo^j Y[_^]Ë}SWP u t>33PPPPP1jhFv3uu^3@WV_YY;tփej iYeVYuE UËuj YjhF3uu]Y3@WVYY;tփej YeVYuE ղËuj YËUQVWxtN}tHuNFu+2ʍAEAu+M;v<2=uVuR t?u3_^]Ë@UQQVW td}t^u3҉UNff;u+9t@ʍAEff;Eu+M;vfyYËU EMEEEPu EPD]ËUE]UE]UE]1"xYËV0ƃ?k0FD(t%VwzYPEt3^bHHEfH^ 1{xYËUQVuu >H Kx7;5Fs/Ƌփ?k0FD(tEEEPVYYG ^]ËUQFVWUuGM tߋ};vGUmSjA[jZ^+щujZ^ f;r f;w f;r f;Ew t ftf;t+[juu u _^]ËUS]u3}uFW} uFV;vFkuM E􋀤u\E+jAE^8jZZf;r f;w f;r f;w Ѓt ftEf;t+(SWSuhPPu Fp}t MP^_[]ËU졨Fu]juu u]ËUMSVWuEu3MtU uEFh;vfE&M}􋟤uuVPRQϟ-wPRPQhESPR u Ep}t MP_^[]ËUhuQYYu f}_t]3@]ËUhuQYYu f}_t]3@]ËUu MEMH%}t MP]ËUhuqQYY]ËUhu[QYY]ËUf} j@uX]u>QYY]ËUj u+QYY]ËUhuQYYu f}_t]3@]ËUhuPYYu f}_t]3@]ËUjuPYY]ËUhuPYY]ËUjuPYY]ËUhWuPYY]ËUjuzPYY]ËUjugPYY]ËUjuTPYY]ËUhu>PYY]ËUjuoYY]ËUhuPYY]ËUhuOYY]ËU츀f9E]ËUf} j@uX]uOYY]ËUj uOYY]ËUjuOYY]ËUhuOYY]ËUjuOYY]ËUhWuiOYY]ËUjuVOYY]ËUjuCOYY]ËUju0OYY]ËUhuOYY]39ËUQQF3ʼnESVuW~VuOY;Yp|}$u Ex}$39E(jjVuPWhEEJ;tRJ;#J=w;#|܅L;#PcY-3ۅuSVujWhE}3PPPPPWSuu 1Et8E ;3QQQPuWSuu 6J;tJJ;#J=w;#|td;#PYtI3t8jjjVWuSuu qt3PP9E u:PPVWPu$رEu.W&Y3S&Yƍe_^[M3]]u uW&YҋUuMu(Eu$u uuuuu P$}t MP]ËUUVu?j^0@} vM~3@9E w M?j"̋utSZW~0~tG0@IZx?5| 0H89t:1uFˍqAu+΍APSR蹲 _3[^]ËUP F3ʼnEMESVW} ω%u3 2Ҿ3]E3@jMQQ$pNYY9z=t=u303ۅ4C,j^Dž; 3ɋ ; 0u䋍3҃j ^Ɖ+3@xHωЉtA3+9PsŃsut2ɄjrY;rщʉ0+;rm;s83F;s @3##苍狍 lj0INt,돋t ȍ03󫀽t B,3,+3P,P0SP$3jXA\PP`SP|$c3Aj _lj+3@v,HɉЉtA3+9ōssut2jrY;rщʉ+0;rg;s3G;sB3##苍㋍ É0IOt,땋j^t ȍ03󫀽t B,3,+3P,P0SP"3@\jjYDž;3ҋ;0u䃥tP3j X+‹;8;s F;sW3ҋ3ЋNt,38+,VjPB3@5G@,tH3j X+ssut2jrY;s˃ti0<;s F;sW3ҋ3ЋNt,뮋t A,3,+,jP0hPr 3G+VjP3@5C\PP`SP 3j Yc񉅜ʉq&vj&X E4EW1jPMPEEPPStwzu3\\\3ɉ3``G;u`\Z\`P\P`SPu3\P\\3ɉ3``F;u\s=3\P;\`u\t \33+u%;!V`33Ή9stW;u@Ɖǃ@A;ut4s;uA3AȃsF;‰\PP`SPtl+<\Eu]3\P:3\PP`SP(2됃\jP`\33``F;ub\sK`\A񉅜ʉL&vj&X E4EW1jPPEEPPou3,Prz,m,3ɉ300G;u5,s0,,w|0P,P0SP<=,,3ɉ300F;uR;,0u,t ,33+u%;!V033Ή9stW;u@Ɖǃ@A;ut4s ;uA3AȃsF;‰,PP0SPZ+\E,330Ɖ0G;ut,ssN0,e3P,P0SP27,j3P,P0SPW,to330j Zlj0F;uድt@,ss0,&3P,P0SP\P,PrYYj Z;w\13ɋ3`j `GZ;uድt\\ss`\B3P\P`SP!u H0wMx wȋEH;r;,3ɋ30ʚ;0G;uߋt@,ss0,&3P,P0SPI\P,PYYj_+30;r7Ou vj Y񉵴;-M_3^[t]ËVVN:Y<uF V:YF^ÀytQ@:Y̋UM VW}7;1t_2^]3҅tA+ ;uB;u_^]̋UM VW}1;7t 23_^]3҅tA+I; uB;u3_^]̋UM39]̋UQS] VuW<EWFjPf ˺ƋMT7A_^[]ËUd F3ʼnES]lVW}u 3΁ -uΉ3_ }u"΋ǁ uh`LF`EPGYt AzE|@}u Eݕω%u3 2Ҿ33@8QQ$9YYe=t=u303ۅ4C,j^Dž;3ɋ ; 0u䋅3҃j Y+ȉ3@cHωЉtA3j X+V9ssut2jrY;rщʉ0+;rm;s83F;s @3##苍狍 lj0INt,돋t ΍03󫀽t B,3,+3P,P0SP)3jXA\PP`SP\3@j Y+ȉ3@b,HɉЉtA3j X+;9ssut2jrY;rщ‰0+ ;rg;s93F;sA3##狍苍 0HNt,땋j^t 30󫀽t B,3,+3P,P0SPE3@\jjYDž;3ҋ;0u䃥tP3j X+‹;8;s F;sW3ҋ3ЋNt,38+,VjP迂3@5G@,tH3j X+ssut2jrY;s˃ti0<;s F;sW3ҋ3ЋNt,뮋t A,3,+,jP0hP 3G+VjPv3@5C\PP`SP 3j Yc񉅐ʉq&vj&X E4EW1jPʀPEEPP_wzu3\\\3ɉ3``F;u`\Z\`P\P`SP7 u3\P\\3ɉ3``F;u\s=3\P;\`u\t \33+|u%;!V`33Ή9stW;u@Ɖǃ@A;ut4s;uA3Aȃs|F;‰\PP`SPtl+<\Eu]3\P:3\PP`SP2됃\jP`\33ɋ`Ɖ`A;ub\sK`\A񉅬ʉL&vj&X E4EW1jPe|PEEPPk[u3,Prz,m,3ɉ300F;u5,s0,,w|0P,P0SP=,,3ɉ300F;uR;,0u,t ,33+|u%;!V033Ή9stW;u@Ɖǃ@A;ut4s ;uA3Aȃs|F;‰,PP0SP+\E,330lj0F;ut,ssN0,e3P,P0SP27,j3P,P0SP,tw330j ZƉ0G;uትtB,ss‰0,&3P,P0SPG\P,PYYj Z;w\133ɋ`j lj`AZ;uድt\\ss`\B3P\P`SPu H0wAx wȋEH;r;,33ɋ0ʚ;lj0A;uߋt@,ss0,&3P,P0SP\P,P\YYj_+30;r7Ou vj Y񉵴;-*h|LFhtLF hlLFhdLFuS` u't_^[t lP%YM3_]3PPPPPW̋UVuu3mEuAj^0SW}t9u rVWPT 36u jPVu u j 9u sj"^0賡jX_^]ËUEVu苡Y@ S3 CCE@ 2E@ ËEtjY  E@ u uYEHuvvVYP$F EP@ u]uYt5uYt'uWVV?k0YYF_F@($E8ME UË]j 迷YjhF3U3uj ]YuEuu }WN ؉]tM9!uEtp,>E8ME UË]j /YËUVW}W Yuj X>u WgYS3&hVYYujhVYYt7SV谧YYtUt.} t"΍YAu+;rtj"UjQ3VWR:pt?x(t8ujh0S舁 tVhPU u j X[_^]SSSSSk̋UQVW}WSYuj XS3ۉ]f9uWYjhV#YYtSVYYtUt4} t(΍Yff;Eu+;r t3fj"Q3VWR:t?x,t8ujhAS虀 tVhP۫ u j X[_^]SSSSSz̋UVuj.V VYYȅu .2-;r+9E vSWj$3ۍySW_  u2_[^]j$+u VWRPuSSSSS̋UQj.u?YYȅu 跇2?;Mr+EW} ;w 蜇2#Sj$YjS ȉE u2[_]Ë+Ej$+WSRu趛u3PPPPPp̋UE 0E0YY]ËUE 0E00E]ËUVu<Fujh讀jF F^]ËUVu<(Fujhtj(F~ (F^]ËUSW}W|Yt{Shm YYtg=w`V4tt uutsF+ށEj$SV3SPNu&΍QAu+f.0\^2_[]SSSSS*̋USW}WYSh0E=wzV4Ctt ujxjwjvXfƿ++Ej$WV3SPޙu:΍Qff;u+j.NYfj0YfH3fH^3f2_[]SSSSSd̋UE 0E0YY]ËUE 0E0YY]ËUE0E 0E0} ]ËUE0E 0E0@ ]ËUE EQ0RYY]ËUE fȋEQ0<YY]ËUE0E 0E0 ]ËUE0E 0E0 ]ËUE0E0E 0Ep0O]ËUE0E0E 0Ep0k]ËUE0E0E 0Ej0]ËUE0E0E 0Ej0!]ËUEE AEA] UEE AEA] AQ +ËAQV0+2+^j hFM3uuzj^0;MÃ&ej گYeu V,YYut<0E뼋uj YjhF^MjYuj X?ujYujhW]YEP蔃Y}uj3u܉u0uhu hBWEPiu܃uhWYYut8uj}t[uWlYFE39PuuxYj ^3PEPE FE MEAMEuE LËu܋ExuPYuYËUEF]ËUE(F]WuÃ(IuÃ,ËU]{9DFËSVWj_F6Uy&vYu(F6=y&vYu_^[ËUQeEPjhu6E]ËUQ}uЀjXEPju u]ËUQeEj@P:EYY]ËUju"YY]ËUQeEPjhuE]ËUQ}u?jXEPju u]ËUVu~ VuɪYYE~ Pu赪YYtt3QQQPuVuu u軑+ujX3E^]ËU,F3ʼnEESVuE؋E EԋEEW}}~"VWYEY] ~SPYY}32|E$u E؋@E$t;ujX~3@~jMQPܰEt~/jX9Er}Mt؊Qtъ:r:Ȁ9u뺅~5jX9Er}Mtu܊Qt:r:~Ȁ9ut3WWVuj u$hEE؅J;tYJ;#J=w ;#/ĉE;#PvEYElj}uPVuu$jVhEWWSuj VhEEJ;tJJ;#J=w;#s.t`;#PuYtEt4uVSuju$hEt]WWWuVuSuu']V8Y]S,YǍe_^[M3:]ËUuM1u$Eu uuuuu P' }t MP]ËUM38t ;E t@<u]ËUVuIF3^]ËUQQeeVu6vGEP ;Eu F;Eu33@^]ËUQQeEePYt3@)MUEAEPUxYu誂3]̃=tF\$D$%=u<$f$ffd$uUy=tFt2\$D$%=u<$f$ffd$u% $B ÍT$ R<$tLD$ f<$t-(OFt^uA=4F MF uԩu|$u%t-NF"X uŃ|$u-NF=4F MF ZÃ=tF \$D$%=u<$f$ffd$ ~D$f(0MFf(f(fs4f~fTPMFffʩtL= |}f=2  fL$D$f.{$T$ ԃT$T$$ D$~D$ff(f=|%=2fT MFXfL$D$`MFf@MFfT MFf\$D$3PPjPjh@hhMFE`Fá`Ft tPYYtAt VdYu6XYM_3^'][ËUQQE]E]ËUE tjt3@]ètjtjX]]ËSQQUkl$F3ʼnEVs CWVPs u&ePCPCPs C sPEPs s^YWt)t%CV\$\$C$s W$WQ$VFCYYM_3^&][ËSQQUkl$F3ʼnEVs(C WVPsC u4EEC jPCPs C(s]PEPs(s}Yvt*t&C V\$C\$C$s W$Wo$VdC YYM_3^%][ËUM39 XFt @|3]ËXF]ËUS]VtEtj.Y#EtjYwEjEY #tT=t7=t;ubM YF{LHM {,YF2M zYFM zYFYFEW3tGM DEPQQ$E EU=}3GY3AuBEfEE;}++ȋEEtuGEEt EmuEtE 3G_tjYtE t j Y3^[]ËUEE]ËUjuuuuu u]ËUE3S3CHEW HEH Mt E Xt EHt EHt EHt EHMVu 3A1AM3A1AM3A1AM3A1AM3A#1AtMI tEH tEH tEH  tE X  #t5=t"=t ;u)E!MM E #t =t ;u"E M MEM31E X } t,E` EEXE X`E]``EXP:MA A EEXE X`M]A`A`EXPEPjjWdEMAt&At&At&At&At&ߋt5t"t u( % % !tt u!#  # } ^tAPAP_[]ËUjuuuuu u]ËUEtw"]!]ËUU 3ɋ9XFt@| XFMtUEEEEEEEVuEE hu(EE$uEmEPb uVUYE^hu(Cu9E ]ËUMEEPQQ$ ]ËUEWDz 3VfuƩu|M UutjٿAu3@3EuɉM yM OEtfuUf#fut f fuEjQQ$s #jQQ$` ^E8_]ËUE%-]ËUQQMEE%] fME]ËUQQMEE%] fME]ËU} Euu@]Á} u ujX]fMf#f;ujf;uE utj3]ËUQQE]EE 3Ё3ȉME]ËUQE3Ё3ȉME]ËUQQE]EE3E %3EEE]ËUQE 3E%3E EE]ËU3f#Mf;]ËUfMff#f;u3EQQ$YYttt3@]jjX]ø]ɁfuE u}tɃᐍ]EDz ɃA@]Ɂ]ËUfEf#Jf;uE u }uf;u3@]3]ËU VWWh?EYYM#f;uLQQ$YY~ ~)t-EPFV\$$j%jk\WV[YYENDzYFV\$$j%jčEPQQ$ EHEEWV] E_^]ËUE\$E$]ËUuEQQ$ ]ËU VWWh?EYYM#f;uiQQ$YY~-~au#E]E\$E$sEPFV\$E]E\$$jj?DzWVEYY)EPQQ$M Uy +;|Z+; = =~-PQQ$ V\$E]E\$=}%V\$E]E\$E$jj|=}&PQQ$g V\$E]EPQQ$FWV](E:V\$YF$\$E]E$QQE$jj$_^]ËUE\$E$]ËUSVEWPQYj_f;EPEYf;ED3Af;u$fEf#E Kf عfuz3fEfMz {zFzAfEurfE ukfE udfEf@fE%;uNjYDfEffEf;u+fE ffE f;ufE ffE f;u fM]f]_^[ujYE]ËUQVuV#ȉMf;u&u3f9Fuf9Fu f9u@jXu3f9Fuf9Fu f9u33++E fMf~Wj5_f;3FffV_fMYF ZFN#3‰UfNfʃttuf N3fFf N3fFf 3f3fH_^]ËUMVA#f;^uu3f9Auf9Auf9u@]jX]éu3f9Au f9Auf9u]3f]ËUQVuN#ЉUf;uuf>u3@jXu f>u3{++E WfEf3]jZf;3ffNAfEZFNj 8ZFN#3‰UfN3ff;}f f3fH_^]ËUMVA#f;^uu f9u3@]jX]éu f9u3]3f]ËUQEjPuu]ËU]JU]FUS]3t t3@tttVtPK E E jPY ^t d!t R"[]ËUW} uE!8V詾WYM#^3_]ËUE u3]VW}u ĺM# # W膿W 3;_^]ËUQueEPkEYY]%xE%|E%E%E%E%E%E%E%E%E%E%E%E%E%E%E%E%E%E%ıE%ȱE%̱E%бE%ԱE%رE%ܱE%E%E%E%E%E%E%E%E%E%E%E% E%E%E%E%E% E%$E%(E%,E%0E%4E%8E%~B+t3Ʌ MNB+t3 E3ɅF;BB+t3Ʌ M~B+t3Ʌ M~B+t3Ʌ MNB+t3 E3Ʌ_F;BB+t3Ʌ M2~B+t3Ʌ M~B+t3Ʌ MNB+t3 E3ɅF;BB+t3Ʌ M~B+t3Ʌ My~B+t3Ʌ MWNB+t3 E3Ʌ1F;BB~+t3Ʌ M~B+t3Ʌ M~B+t3Ʌ MNB+t3 E3ɅF;BB+t3Ʌ Ml~B+t3Ʌ MJ~B+t3Ʌ M(NB+t3 E3ɅF;BB+t3Ʌ M~B+t3Ʌ M~B+t3Ʌ MNB+t3 E3Ʌk~B+t3Ʌ MIB~+S3Ʌ M8M1+t3EqB+t3EqB+t3EIB+t3 EUu  +t3EujJF+t3EuLJF띋Uu  +t3Eu JFnEE ]3^[]Ë~EE]EEy~EEƆEE}EE.EeEJ}EREE͉E|EEE6E|E$EiEE{EE҃EEzEE;EpEUQM USVW}3ۃ ;+t3E< rA+t3E rA+t3ErA+ut3EEÅB;AA+t3ErA+t3E{rA+t3EYrA+ut3EEÅ+B;AA+t3Er A +t3Er A +t3Er A +ut3EEÅB ;A A +t3E_r A +t3E=rA+t3ErA+ut3EEÅB;AA+t3ErA+t3ErA+t3E|rA+ut3EEÅNB;AA+t3E!rA+t3ErA+t3ErA+ut3EEÅB;AA+t3ErA+t3E`rA+t3E>rA+ut3EEÅB;AA+t3ErA+t3ErA+t3ErA+ut3EEÅqj ^+;σQ$EB;AAr+t3ErA+t3ErA+t3ErA+ut3EEÅB;AA+t3ErA+t3E]rA+t3E;rA+ut3EEÅ B;AA+t3ErA+t3ErA+t3ErA+ut3EEÅnB;AA+t3EArA+t3ErA+t3ErA+ut3EEÅB;AA+t3ErA+t3ErA+t3E^rA+ut3EEÅ0B;AA+t3ErA+t3ErA+t3ErA+ut3EEÅB;AtA+t3ۅÍ]rA+t3ۅÍ]wrA+t3ۅÍ]UZA+t3E33_^[]ËB;At}A+t3EurA+t3EurA+t3EurA+ut3EEÅjB;AAr+t3E<rA+t3ErA+t3ErA+ut3EEÅB;AA+t3ErA+t3E{rA+t3EYrA+ut3EEÅ+B;AA+t3ErA+t3ErA+t3ErA+ut3EEÅB;AA+t3E_rA+t3E=rA+t3ErA+ut3EEÅB;AA+t3ErA+t3ErA+t3E|rA+ut3EEÅNB;AtsA+t3ۅÍ]uZrA+t3ۅÍ]u<rA+t3ۅÍ]uZA+t3EtRA+t3EB;AA+t3EzrA+t3EXrA+t3E6rA+ut3EEÅB;AAr+t3ErA+t3ErA+t3ErA+ut3EEÅhB;AA+t3E;rA+t3ErA+t3ErA+ut3EEÅB;AA+t3ErA+t3EzrA+t3EXrA+ut3EEÅ*B;AA+t3ErA+t3ErA+t3ErA+ut3EEÅB;AA+t3E^rA+t3E<rA+t3ErA+ut3EEÅB;AA+t3ErA+t3ErA+t3E{rA+ut3EEÅMfBf;ApA+t3ۅÍ]OZA+?3E,B;AAr+t3ErA+t3ErA+t3ErA+ut3EEÅ[B;AA+t3E.rA+t3E rA+t3ErA+ut3EEÅB;AA+t3ErA+t3EmrA+t3EKrA+ut3EEÅB;AA+t3ErA+t3ErA+t3ErA+ut3EEÅ~B;AA+t3EQrA+t3E/rA+t3E rA+ut3EEÅB;AA+t3ErA+t3ErA+t3EnrA+ut3EEÅ@B;AtA+t3ۅÍ]HrA+t3ۅÍ]&rA+t3ۅÍ]ZA+t3ErA+t3ErA+3EiIE+EEBEbEEEEÕEEhEE$EgEɝEuEEȘE*E֡EE)EE7EGEEEEEELEEWVt$L$|$ ;v; s%F% Fs D$ ^_Ë3Ʃu%F% Fs vs~vftefoNvfo^0foF fon0v00fof: ffof: fGfof: fo 0}v foNvIfo^0foF fon0v00fof:ffof:fGfof:fo 0}vVfoNvfo^0foF fon0v00fof:ffof:fGfof:fo 0}v|ovfs vs~vfEtIuу $E$EEEEED$ ^_ÐD$ ^_ÐFGD$ ^_ÍIFGFGD$ ^_Ð41<9 Q%Ft׃+ʊFGNOu $0E@EHEXElED$ ^_ÐFGD$ ^_ÍIFGFGD$ ^_ÐFGFGFGD$ ^_tINOurhooNoV o^0of@onPov`o~pOW _0g@oPw`pu r# ooNO ututuD$ ^_̋ƃуtf$fofoNfoV fo^0ffOfW f_0fof@fonPfov`fo~pfg@foPfw`fpJut_t!ooNOv  Jut0tuȃtFGIu$ID$ ^_Í$++Q‹ȃt FGIut vHuY`P<*Գ~rbN:N`pΰܰ ,:L^r0|$̺z`F:. Թȹt`LگįfXJ4$ 4@ش&B\r̵޵&2JbzʶԶ .>L\~Ʒз .@PbrҸ|α.ز̲~lXB0 ڱ@}@|@|}@@%@D+ECEqCDBEXA+dWnOA AlGRWpO6a'wj5ObFÅm]rLwx,aOMG  ķ]v+qAO pO]և+DW^ Oor;owLf[MEĀv*cMjVDEs"@0(9A8L7ʸ!A9mG-*+$%|QOz)(BF\G aUFEzfCNItwׄtxM NI{@ >K]TKFad4Cz "zOy|I)sO>BqB 7 EC)t0ō*M^2mFT }jL^6CTv]=D%OcgP0 V A H FFPB,ɨ=$HܨEye64Bl OUᏢWU]O ɊFiyŜ?Oɝa3K@~OqK M;rG¸E\\GNˇbo-XCMtY&h~vIsB U[6J[CS[bHNAF"JL G:7՝5F3+zFO${aύtA^?UX&I}!<OGFV;&OF}P($IZ^9&M[OrWG 35w~s5i+.bi;'~.gC\[bGEրEv+0PoSi)!@'QL.JifrtgHU;aއ-+ o.Eцf@"nO :i+00.PRO—-2NfHyu M7?eEd9Ē^F{w@=TR%9O'HKlqt} {ҜJ3F̉.|-!CQ7o֩Cmy4[ _eOkmM]`g.H iVFO#A,\V׉#G`` E%6QM\vWNVM.^R FHsp^QmOpNr-O&oORO%e{HqC,㟽$\E9 Ot<&KA>=a-kQG^),=Nk.4qa޼^Ol^\`U;MW.I|Kg+*U6F:(Y;J\FЗ4mc/4*&{-@`ެ)F#Ϋ>/ICVJNztI6FOEг@wiKw^ Ҩ\I;%Sjc(=O'>OСFVe\Kz~|Tn9{ŞC $&;ل.CZ0YctXT9bq^F*O !:i+00iI~+.ͩ _@^A% xSiMEQ 3߷;`[}N8úGˢ)w]+.DJQ3(9O>ܥ>G2A`tpZdfapHUeі[/tAxC(DW@Xzvi>VMYFDAtKpȞ&Aõ*.7V`Ɔ'":i+00hXt_vJ)v ؂تI'9Y:Oh7 e.{ JOe/+dWnOF]K $Lb`wG:J'Ws5i+.b!\_[CP2nD\HC*v CBg (#4DLe+.b1 ъ*Bp2r%9Y:Oh7ա΋!  Hl?<W>OrAGQ`{FL>!OL'`g$$/4EjfqJ1B*)l6ٿMp.лչL@mIh.6]PO,1Dl4L~ɋ@J7<}iFs5i+.b1IkLIC'+I~vph}OUEK}4@ VqzeG'{-F4plTI?rF֔hJuAtXJQ x;>VfNr@"=3uw-NFEH/дtF5K@~OqF9tRNNgɆ󝚫N_3haO1FIFS2IEt$c^NIe2$53QB`ϝk(ԺCy&|=HF5ꥂG)]/qNnwmjKDWw? jY>4'r`F$<;{dFP0 F:̿,LB)隇AxWObDcq# ۅ>eL:er=mG)fR IC0hxU*TK Ix5i+.b^5N$̈cpH|t$ HNOiNㄐi3O < zO1I( W0\"F-V ևA)F Wt חb@Z|KJAVgq@L\J7.jxO`OK #@;>VFhP}N<)ѪF $aOBd-@y#uLKdqkPCU .4z]bM I]Ft Ox_xrd_w~LNdL֬F4Ku@ +К#FlHi"k1%B T #8ƪd_NM&uf4Lc'wj5Obx8WFTpj7BWGCQl2FiM^eQI+Idʏ[FFFFF F F!FFF0:s *Dw= F`k;Yi+-z1OY ȿ4<OV% X$5I?#3:O4j;Yi+-zj;Yi+-zi;Yi+-zv nr=F>FDF[F"FFF0F1F2F3F%F)F*F0:s*Dw=IF y.Y+FGFHF:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/OFFFFU 8r+C+n4@FacH&8FvCj?e~ҦFFF&FF F FFk!Pi)? F F F F FFFFFPF%FQFFFF@Fʙ^AiXשFh Mm8gh z0Gd<O8m xO4yOԒMm8gh &FEFǝv\Wސy(_FF4F Z'B>âRX0eu{ڮP9Vu{0ne0E Kvne yOܦϫ|x O jIOQnO09$-1.E^*onePone |~|?ne? PE^#1$-?W2$-?W2$-pw~?neg@ne˳j@ne˳j@ne?W2$-~{S^BEy|KDphKΔӳOհrIOC'zO{TxhO{lhO6ǀ_`\`OOrOh7y) Oh7BTyI6 EZ{ْ?i]?9A!8ҏFs%E~2]r?jdN&6u^gO!B> 9}Nr*GݓkFN]ͷghhϓgAc*^Z%Ȕ2AeqKW';?B@ J$SQ`Ɔ(œO>1s-O(hHjxOi QD(ߥl+ rˆLmCBUa{Ӱ~C.`1 y/DĊY F;aAdƼ403bpc(Jg Дէ{E] E)ПS-oEH?syYz(y K@AXGA'qQU AJ s Y!WOZ{*lg(M2(TfC'>|a.  O;O.K[K8H]҇26 -&{-r: %wCjW'tVamy!@iaWBVm`ɠI-`:Bn5OC(K鞟^ﯘ=ѕK0:ښL%2J4{[kYs=BMQ!B\[/B{NsASÖ.̆I#t9JDf?kјH"tŻ-Gs?zZAe!`[ǽ6NXX$  KiiőԞ(LqmjK H(.~,-Y@o3\.Q Cpg{LKI s<_z\ LKo(t;sM|@)^vJYӞ~+IzÊChsxDpWJ?,CP0DOAoZ\q"tDk׾ TLrTIkE a`NNe76_I|kHrYM>s: .jxOˡd:aDX7iii9P5}+EutX(T6QB~ۜC]_#ͼ_Ld=xr|խhG2`?uIp4Bf6חKt3OtaG'"v0 SNwL1"(iv@ YGح+ObC4`[ԄLr?RJ{,AsEOWL"O7v8yOhKKt&1Zs~:6 B}Ftr⋪GMv2̤ pDʹfD.b[GvtH; zr\GڙYkH?FA&OA;,Ui6 IJ"x9J4ܵ;EfDװqmrE.1!YuY&HxHϣ'GVBeUNOخ|)IE@0lyדسDg,ݠeL3"5/QqCAwSk5 X;-3B{_41lxpOh6ǾƱLb VBPoz5zD #D@Fgm[M/BT|\?@zpDF[0 49Z I}AaB}KX䌠%D|DZ#`ڽWvGE>ςZ#@k{X8&oI Qd5CvSdn0@DH&'E4VwҁnB*O&-bfMlV!j hFXapf_:qJ?򥸿2cpF^W5}3ƔHjiOY<0G== 6eFpqFwHҶe_K#q}kdO-pV+UN;;z5Og5е.Í}DwMm3sG%`4n.8E40yvF'6я]A.VGމJ=PpZd1FOЊ ĽFK6eJ7`, :i+00Fh3MnMܙS{5)xKt O3CKsw`$D&l;0MHֿRUBu(dT&arrCuƋ.|uU:WPHw[ێ Z܊M`* !sG3^F0MJSkyZ 8y M3,/KqI\M;TQ'CHCh4-6C$/`zLbeLWwR"F)JȬ պFD-ʀr33yHȅF/_~_INK R(N伽I@܏Uo#RH kM?'kaIõ}EFVxCEg{Sl"vM`3)/#RW$ZI/Փg3wB$hŨ"IΕL?vk΄e}IƼ8-F"DDm'Cb**+C ,R[09|)J=AxB:RC%jAyiȳO^7q2hK_Lrz=*Fŗ5WIZgnMI/~o& IFk"t% 0H Ng4f/`CU7%(Lx#h>5qM?w;E9eZJ 57BxsCU3FFXElEEEadvapi32api-ms-win-core-fibers-l1-1-1api-ms-win-core-synch-l1-2-0kernel32EventRegisterEventSetInformationEventUnregisterEventWriteTransferFlsAllocFlsFreeFlsGetValueFlsSetValueInitializeCriticalSectionExPE\EdEpE|EEEEEEEEEZFEEEEEEEE EEE E$E(E,E0E4E8E><<!==!=[]operator->*++---+&->*/%<<=>>=,()~^|&&||*=+=-=/=%=>>=<<=&=|=^=`vftable'`vbtable'`vcall'`typeof'`local static guard'`string'`vbase destructor'`vector deleting destructor'`default constructor closure'`scalar deleting destructor'`vector constructor iterator'`vector destructor iterator'`vector vbase constructor iterator'`virtual displacement map'`eh vector constructor iterator'`eh vector destructor iterator'`eh vector vbase constructor iterator'`copy constructor closure'`udt returning'`EH`RTTI`local vftable'`local vftable constructor closure' new[] delete[]`omni callsig'`placement delete closure'`placement delete[] closure'`managed vector constructor iterator'`managed vector destructor iterator'`eh vector copy constructor iterator'`eh vector vbase copy constructor iterator'`dynamic initializer for '`dynamic atexit destructor for '`vector copy constructor iterator'`vector vbase copy constructor iterator'`managed vector copy constructor iterator'`local static thread guard'operator "" Type Descriptor' Base Class Descriptor at ( Base Class Array' Class Hierarchy Descriptor' Complete Object Locator'CV: ::template-parameter-generic-type-`'`anonymous namespace'''`non-type-template-parametervoid`template-parameter...NULL%d`template-type-parameter-`generic-class-parameter-`generic-method-parameter-}' }' `vtordispex{`vtordisp{`adjustor{`local static destructor helper'`template static data member constructor helper'`template static data member destructor helper'static virtual private: protected: public: [thunk]:extern "C" ) char short int long unsigned void volatilestd::nullptr_t std::nullptr_t,..., throw(cpuamp, charshortintlongfloatdoublebool__int8__int16__int32__int64__int128char16_tchar32_twchar_t__w64 UNKNOWNsigned const volatile`unknown ecsu'union struct class coclass cointerface enum volatile const & && cli::array<cli::pin_ptr<)[{flat}{for s Fi@i@i@\F@@@F$@B@h@F@@ @@F@@@F@@$@ ?? EEE50P( 8PX700WP `h````xpxxxxEEE00P('8PW700PP (`h`hhhxwpwpp(null)(null)        ! 5A CPR S WY l m pr   )    Tc-^k@tFМ, a\)cd4҇f;lDِe,BbE"&'O@V$gmsmrd'c%{pk>_nj f29.EZ%qVJ.C|!@Ί Ą' |Ô%I@T̿aYܫ\ DgR)`*! VG6K]_܀ @َЀk#cd8L2WBJa"=UD~ $s%rс@b;zO]3AOmm!3VV%(w;I-G 8NhU]i<$qE}A'JnWb쪉"f37>,ެdNj5jVg@;*xh2kůid&_U JW {,Ji)Ǫv6 UړǚK%v t:H孎cY˗i&>r䴆["93uzKG-wn@  _l%Bɝ s|-Ciu+-,W@zbjUUYԾX1EL9MLy;-"m^8{yrvxyN\lo};obwQ4Y+XW߯_w[R/=OB R E]B.4o?nz(wKgg;ɭVl H[=J6RMq! EJjت|Lu<@rd 6x)Q9%0+L ;<(wXC=sF|bt!ۮ.P9B4Ҁy7P,=87MsgmQĢR:#שsDp:RRN/M׫ Ob{!@fu)/wdq=v/}fL3. iLs&`@< q!-7ڊ1BALlȸ|Rabڇ3ah𔽚j-6zƞ) ?IϦw#[/r5D¨N2Lɭ3v2!L.2>p6\BF8҇i>o@@w,=q/ cQrFZ**F΍$'#+GK ŎQ1VÎX/4Bycg6fvPbag ;s?.❲ac*&pa%¹u !,`j;҉s}`+i7$fnIoۍut^6n16B(Ȏy$dAՙ,C瀢.=k=yICyJ"pפldNnEtTWtøBncW[5laQۺNPqc+/ޝ"^̯p?m- }oi^,dH94X<H'W&|.ڋu;-Hm~$P  %-5 > H R ] i u -C Y p        %  d'@Bʚ;minkernel\crts\ucrt\inc\corecrt_internal_strtox.h__crt_strtox::floating_point_value::as_double_is_double__crt_strtox::floating_point_value::as_float!_is_doubleINFinfINITYinityNANnanINFinfINITYinityNANnanINFinfINITYinityNANnanINFinfINITYinityNANnanSNAN)snan)IND)ind)SNAN)snan)IND)ind)SNAN)snan)IND)ind)SNAN)snan)IND)ind)Visual C++ CRT: Not enough memory to complete call to strerror.Visual C++ CRT: Not enough memory to complete call to strerror..exe.cmd.bat.com./\?*   Runtime Error! Program: <program name unknown>... Microsoft Visual C++ Runtime LibraryF\F\/ F/mscoree.dllCorExitProcessFlCFFlCFF4DFFDFF{DFFDLC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~=;;=C_.,_. CLC3CCFCICCCDDCsCCtCC*B*B~D CC;C>CC8C\\\.\.TMPTMPmsvcrt.dllccsUTF-8UTF-16LEUNICODEccsUTF-8UTF-16LEUNICODEF`FlEFF FFFEFHFFFFhFF FXEEX Fapi-ms-win-appmodel-runtime-l1-1-1api-ms-win-core-datetime-l1-1-1api-ms-win-core-file-l2-1-1api-ms-win-core-localization-l1-2-1api-ms-win-core-localization-obsolete-l1-2-0api-ms-win-core-processthreads-l1-1-2api-ms-win-core-string-l1-1-0api-ms-win-core-sysinfo-l1-2-1api-ms-win-core-winrt-l1-1-0api-ms-win-core-xstate-l2-1-0api-ms-win-rtcore-ntuser-window-l1-1-0api-ms-win-security-systemfunctions-l1-1-0ext-ms-win-kernel32-package-current-l1-1-0ext-ms-win-ntuser-dialogbox-l1-1-0ext-ms-win-ntuser-windowstation-l1-1-0user32AreFileApisANSICompareStringExEnumSystemLocalesEx GetActiveWindowGetCurrentPackageIdGetDateFormatEx GetEnabledXStateFeaturesGetFileInformationByHandleExGetLastActivePopupGetLocaleInfoExGetProcessWindowStation GetSystemTimePreciseAsFileTimeGetTimeFormatExGetUserDefaultLocaleNameGetUserObjectInformationW GetXStateFeaturesMaskIsValidLocaleNameLCMapStringExLCIDToLocaleNameLocaleNameToLCID LocateXStateFeatureMessageBoxAMessageBoxW RoInitialize RoUninitializeSetThreadStackGuarantee SystemFunction036am/pma/p - : +%SunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecemberAMPMMM/dd/yydddd, MMMM dd, yyyyHH:mm:ssSunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilJuneJulyAugustSeptemberOctoberNovemberDecemberAMPMMM/dd/yydddd, MMMM dd, yyyyHH:mm:ssen-US F F F F F F F F F F F F F F F F F F F F$ F( F, F0 F4 F8 F< FD FP FX F F` Fh Fp Fx F F F F F F F F F F F F F FFFF F0F@FTFhFxFFFFFFFFFFFFFFFFFF(F4F@FPFdFtFFFFFFFFINFinfNANnanNAN(SNAN)nan(snan)NAN(IND)nan(ind)e+000 ((((( H ( 0 ((((( H   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecTZFFFFF$F8FTFhF|FFFFFFF FF(F8FHFXFhF|FFFFFFF F$F4F@FPFFdFFFFFFFFNo errorOperation not permittedNo such file or directoryNo such processInterrupted function callInput/output errorNo such device or addressArg list too longExec format errorBad file descriptorNo child processesResource temporarily unavailableNot enough spacePermission deniedBad addressUnknown errorResource deviceFile existsImproper linkNo such deviceNot a directoryIs a directoryInvalid argumentToo many open files in systemToo many open filesInappropriate I/O control operationFile too largeNo space left on deviceInvalid seekRead-only file systemToo many linksBroken pipeDomain errorResult too largeResource deadlock avoidedFilename too longNo locks availableFunction not implementedDirectory not emptyIllegal byte sequence+FFF(Fja-JPzh-CNko-KRzh-TWamericanamerican englishamerican-englishaustralianbelgiancanadianchhchichinesechinese-hongkongchinese-simplifiedchinese-singaporechinese-traditionaldutch-belgianenglish-americanenglish-ausenglish-belizeenglish-canenglish-caribbeanenglish-ireenglish-jamaicaenglish-nzenglish-south africaenglish-trinidad y tobagoenglish-ukenglish-usenglish-usafrench-belgianfrench-canadianfrench-luxembourgfrench-swissgerman-austriangerman-lichtensteingerman-luxembourggerman-swissirish-englishitalian-swissnorwegiannorwegian-bokmalnorwegian-nynorskportuguese-brazilianspanish-argentinaspanish-boliviaspanish-chilespanish-colombiaspanish-costa ricaspanish-dominican republicspanish-ecuadorspanish-el salvadorspanish-guatemalaspanish-hondurasspanish-mexicanspanish-modernspanish-nicaraguaspanish-panamaspanish-paraguayspanish-peruspanish-puerto ricospanish-uruguayspanish-venezuelaswedish-finlandswissukususaamericabritainchinaczechenglandgreat britainhollandhong-kongnew-zealandnzpr chinapr-chinapuerto-ricoslovaksouth africasouth koreasouth-africasouth-koreatrinidad & tobagounited-kingdomunited-states4FENUHFENUlFENUFENAFNLBFENCFZHHFZHIFCHSFZHHFCHS8FZHI\FCHTFNLBFENUFENAFENLFENC FENB8 FENIP FENJp FENZ FENS FENT FENG!FENU!FENU0!FFRBP!FFRCp!FFRL!FFRS!FDEA!FDEC!FDEL"FDES8"FENIT"FITSp"FNOR"FNOR"FNON"FPTB"FESS#FESB<#FESLX#FESO|#FESC#FESD#FESF#FESE$$FESGH$FESHl$FESM$FESN$FESI$FESA$FESZ%FESR0%FESUX%FESYx%FESV%FSVF%FDES%FENG%FENU%FENUA%FUSA%FGBR&FCHN &FCZE&FGBR(&FGBRD&FNLDT&FHKGh&FNZL&FNZL&FCHN&FCHN&FPRI&FSVK&FZAF&FKOR 'FZAF('FKOR@'FTTO%FGBRd'FGBR'FUSA%FUSAACPOCP  6 - 3F3F 3F(3F83F@3FH3FP3F X3F `3F h3F p3F x3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F4F 4F!4F"%F#4F$ 4F%(4F&04F'84F)@4F*H4F+P4F,X4F-`4F/h4F6p4F7x4F84F94F>4F?4F@4FA4FC4FD4FF4FG4FI4FJ4FK4FN4FO4FP4FV5FW5FZ5Fe5F 5F$5F05F<5F(FH5FT5F`5Fl5F F x5F 5F 5F5F5F5FFF5F5F5F5F5F5F6F6F 6F,6F86FD6F P6F!\6F"h6F#t6F$6F%6F&6F'6F)6F*6F+6F,6F-6F/6F27F47F57F6(7F747F8@7F9L7F:X7F;d7F>p7F?|7F@7FA7FC7FD7FE7FF7FG7FI7FJ7FK8FL 8FN8FO$8FP08FR<8FVH8FWT8FZd8Fet8Fk8Fl8F8F8FF8F 8F 8F 8F8F8F9F 9F9F09F,<9F;T9F>`9FCl9Fk9F 9F 9F 9F 9F 9F 9F 9F; 9Fk :F:F:F(:F 4:F @:F L:FX:F;d:Ft:F:F:F :F :F :F:F;:F:F :F :F ;F;F;,;F<;F H;F T;F`;F;x;F ;F ;F ;F; ;F$;F $;F $;F;$;F(;F (;F (GF4F7HFx3F HFN4F/HFt3F$HF0HFZ3F @@ IqI`B `BYnYnloglog10exppowasinacossqrt?? |?Q-8>=޶W?0 k8=ޮp? x9=>.ښ?pn5=Yح? Q*=c??b6=Y?T?=>?W!=@-32?Dz=p(?vP(=`?US?>=e?g7=`ŀ'?bͬ/=^s?}#=Jwk?zn=N ָ?LN9=@$"3?5Wg4p6=T?Nv$^)=&?.)<lB?M%=`j?w*= <śm?E2=ެ> ?E=t?? =OQ?w(@ <0?Ac 0=Pyp?dry?=St)?4K >=$?QhBC .=0 ub?-0=?a>-?=?Й,<(lX ?T@b ==P?3h,%=f??# =V ?ߠϡ6=Y?z $=G? $l35=@n?[+3=Rŷ?sdLi==p|?rx"#2=@.?|U2=lԝ?rF=a? 4=Y?sl׼#{ =`~R=?.i1=,? =vX?=p?h}s"= E[ ?%S#[k=7H?j=!V1?}a2=jq?20J5=?5=x¾/@?"B <1=iz?\-!y!=X0z?~b>==:? #.X'=HBO&?(~=xbb? .=Cq?y7i9+= v?:=0 ?2ض8=xPD?X1=??Q?Q?????????]?]?P?P? ? ?U?U?(?(?`?`?_?_?????z?z?1?1?p?p???(e?(e?@#?@#???`?`?hk?hk?,?,?x?x?????N?N?x?x?p?p???~?~?HN?HN???????p?p?Xi?Xi???????????8?8?s?s?pI?pI?&?&?????o?o? *? *???`?`?Z?Z???0?0???PY?PY???`?`???pm?pm?/?/??????tanhatanatan2sincostanceilfloorfabsmodfldexp_cabs_hypotfmodfrexp_y0_y1_yn_logb_nextafterOFOFOFOFYFYF!8XFOF OF@XFHXFOFPXFTXF XXF \XF dXFlXFtXF|XFXFXFXFXF"XF#XF$XF%XF&XFsinhcosh????؛FiECreateDirectory (%s)CreateFile (%s)CreateFileMapping (%s)MapViewOfFile (%s)1.2.8inflateInit2 returns %dinflate returns %dinflateEnd returns %d\-32PURELIBPLATLIBHEADERSSCRIPTSScripts\DATALib\site-packages\Installation failed.import py_compile; py_compile.compile (r'%s')%s%cPy_InitializePy_SetProgramNamePy_FinalizePyRun_SimpleStringPySys_GetObjectPy_OptimizeFlagCSIDL_COMMON_STARTMENUCSIDL_STARTMENUCSIDL_APPDATACSIDL_COMMON_DESKTOPDIRECTORYCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_STARTUPCSIDL_STARTUPCSIDL_COMMON_PROGRAMSCSIDL_PROGRAMSCSIDL_FONTSsshell32.dllfunction not availableSHGetSpecialFolderPathAno such folder (%s)unknown CSIDL (%s)CoInitialize failed, error 0x%xsss|sssiCoCreateInstance failed, error 0x%xQueryInterface(IPersistFile) error 0x%xSetPath() failed, error 0x%xSetDescription() failed, error 0x%xSetArguments() error 0x%xSetIconLocation() error 0x%xSetWorkingDirectory() error 0x%xFailed to create shortcut '%s' - error 0x%xssiicreate_shortcutget_special_folder_pathget_root_hkeyfile_createddirectory_createdmessage_boxPYTHONHOME=%sSOFTWARE\Python\PythonCore\%d.%d%s\InstallPathPyImport_ImportModulePyObject_SetAttrStringPyObject_GetAttrStringPyCFunction_NewPy_BuildValuePyArg_ParseTuplePyErr_FormatPyLong_FromVoidPtrbuiltinsValueErrorOSErrorPySys_SetArgvCould not open postinstall-script %s Running Script...*** Could not load Python ***PyErr_PrintCan't load Python for pre-install script (%d)Running the pre-installation script failed Out of memory!Runtime Error100 Made Dir: %s 200 File Copy: %s 200 File Overwrite: %s .pyErrorInvalid cfgdata magic number (see bdist_wininst.py)~duCould not create temporary fileTimes RomanSetupWindowClassSetup.exeCould not register window classSetup %sThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Software\Python\PythonCorePython Version %s (found in registry)Software\Python\PythonCore\%s\InstallPathStrangeDon't know Python's installation typePython %s is required for this package. Select installation to use:Python version %s required, which was not found in the registry.No Python installation found in the registry.Cannot installPython Version %d.%dpython%d%d.dllHKEY_LOCAL_MACHINEHKEY_CURRENT_USERYou do not seem to have sufficient access rights on this machine to install this softwareCould not open key%s\%s-wininst.logaCan't create "%s" (%s). Try to execute the installer as administrator.*** Installation started %Y/%m/%d %H:%M *** Source: %s 999 Root Key: %s %s-py%d.%dCould not create key020 Reg DB Key: [%s]%s Python %d.%d %sDisplayNameCould not set key value040 Reg DB Value: [%s\%s]%s=%s %s\Remove%s.exewb"%s\Remove%s.exe" -u "%s\%s-wininst.log"UninstallString*** Installation finished %Y/%m/%d %H:%M *** Click Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Ready to installRunning pre-installation scriptInstalling files...Failed to unzip installation filesCompiling files to .pyc...Loading python...Compiling files to .pyo...-installPlease wait while running postinstall script...\Scripts\300 Run Script: [%s]%s *** run_installscript: internal error 0x%X *** Postinstall script finished. Click the Finish button to exit the Setup wizard.IsUserAnAdminrunasFailed to start elevated process (ShellExecute returned %d)Setuptitleinfobuild_infotarget_compiletarget_optimizetarget_versionnamemetadatainstall_scriptuser_access_controlforceautononeoopsBad user_access_control value%s.batw:Repeat del "%s" if exist "%s" goto Repeat Could not delete keyCould not delete value-remove*** Could not run installation script ***uninstall-scriptWrong number of args-u2. arg is not -urcould not open logfileOut of memoryPlease confirmAre you sure you want to remove this package from your computer?%d Root Key: %sYou do not seem to have sufficient access rights on this machine to uninstall this software%d Made Dir: %s%d File Copy: %s%d File Overwrite: %s%d Reg DB Key: %s%d Reg DB Value: %s%d Run Script: %s%d files and %d directories removed %d files or directories could not be removed%d files and %d directories removedUninstall Finished!Could not open archiveRemoveThis program is normally started by windowsSetup program invalid or damagedZFFFZFFFF$F8FHFZF0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfa`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     @@HN #+3;CScs !1Aa  0@` inflate 1.2.8 Copyright 1995-2013 Mark Adler invalid distance too far backinvalid distance codeinvalid literal/length codeincorrect header checkunknown compression methodinvalid window sizeunknown header flags setheader crc mismatchinvalid block typeinvalid stored block lengthstoo many length or distance symbolsinvalid code lengths setinvalid bit length repeatinvalid code -- missing end-of-blockinvalid literal/lengths setinvalid distances setincorrect data checkincorrect length checkneed dictionarystream endfile errorstream errordata errorinsufficient memorybuffer errorincompatible version*PXT,,*PX *PX \F FвEF(F8F@FF@(FFpFFF@FF@pF0FF̚FؚF@F0F@FHFFF$F@FHF@FdFTFdFpF@FdF@TFFFFF@FF@FFFFFF@F`RSDS7H~H,E:\CPython\cpython35\lib\distutils\command\wininst-14.0.pdbGCTL.text$mn.idata$5в.00cfgԲ.CRT$XCAز.CRT$XCAAܲ.CRT$XCZ.CRT$XIA.CRT$XIAA.CRT$XIAC.CRT$XIC.CRT$XIZ.CRT$XPA .CRT$XPX.CRT$XPXA.CRT$XPZ.CRT$XTA.CRT$XTZ .rdata .rdata$r  .rdata$sxdata,D.rdata$zzzdbgp.rtc$IAAt.rtc$IZZx.rtc$TAA|.rtc$TZZ .xdata$x<.idata$2ȫ.idata$3ܫ.idata$4 .idata$6 .data.data$r0.bss.gfids$x.gfids$y0.rsrc$010(.rsrc$02~@~@2@E@|@|v@@@1AAA$AA1AAAA,B,B-B^B^BB2C2C2C53CgCgCgC$kCxCxC?rClCYmClCmCfCCUCYCCfC̘C|CPCCCgC[CCSCC7C CC&C2CCC*+D,D/DM1D8DCODODNDQDESDdDbD`DDyDDгD0DκDD׵DDDDQDDTDDDfD DDD"DE/E/ES:E9EE1E1EyhEhEڮ(4X0BTʳ4ܫn(Lδ`P<*Գ~rbN:N`pΰܰ ,:L^r0|$̺z`F:. Թȹt`LگįfXJ4$ 4@ش&B\r̵޵&2JbzʶԶ .>L\~Ʒз .@PbrҸ|α.ز̲~lXB0 ڱPropertySheetACreatePropertySheetPageACOMCTL32.dll SetLastErrorSetFileTime lstrlenAUnmapViewOfFilePGetLastError0GetFileAttributesACreateFileACloseHandleCreateFileMappingACreateDirectoryADosDateTimeToFileTimeMapViewOfFilePReadFilebGetModuleFileNameASetPriorityClass GetCurrentProcessGetStdHandleLoadLibraryExAcGetModuleFileNameW5SetThreadPrioritySetFilePointerResumeThreaddGetModuleHandleAMultiByteToWideCharGetTempPathA GetCurrentThreadLoadLibraryADeleteFileA"SetStdHandleGetProcAddressLocalFree;GetFileSizeRemoveDirectoryAFreeLibraryCreateProcessAFormatMessageAGetTempFileNameAGetPrivateProfileIntAGetPrivateProfileStringAKERNEL32.dllEndPaintBeginPaintReleaseDCWUpdateWindowzGetParentkPeekMessageA<GetDlgItemSetCursorSendMessageASetDlgItemTextASendDlgItemMessageA?TranslateMessagepCreateWindowExADefWindowProcARegisterClassASMoveWindowFMessageBoxA ShowWindowzwsprintfAGetSystemMetricsoPostMessageA4GetDCLoadCursorABGetFocusGetWindowRectDispatchMessageAUSER32.dllVCreateSolidBrushDeleteObjectSetBkModeTextOutASetTextColor7CreateDIBitmapSelectObject=CreateFontAGDI32.dllrRegEnumKeyExAkRegDeleteValueARegOpenKeyExARegSetValueExARegQueryValueA\RegCreateKeyExARegQueryValueExAaRegDeleteKeyATRegCloseKeyADVAPI32.dll3ShellExecuteASHELL32.dllOCoInitializeCoUninitializeCoCreateInstanceole32.dllUnhandledExceptionFilterCSetUnhandledExceptionFilteraTerminateProcessmIsProcessorFeaturePresent-QueryPerformanceCounter GetCurrentProcessIdGetCurrentThreadIdGetSystemTimeAsFileTimeKInitializeSListHeadgIsDebuggerPresentGetStartupInfoWgGetModuleHandleWWInterlockedPushEntrySListTInterlockedFlushSListRtlUnwind%EnterCriticalSectionLeaveCriticalSectionDeleteCriticalSectionHInitializeCriticalSectionAndSpinCountsTlsAllocuTlsGetValuevTlsSetValuetTlsFreeLoadLibraryExWWideCharToMultiByteGetCommandLineAGetCommandLineWCreateFileWGetDriveTypeW>GetFileTypePeekNamedPipe^SystemTimeToTzSpecificLocalTime]FileTimeToSystemTimeWriteFileQExitProcessfGetModuleHandleExWGetACPGetConsoleModeNReadConsoleW3HeapFree/HeapAllocGetDateFormatWGetTimeFormatWCompareStringWLCMapStringWTGetLocaleInfoWtIsValidLocaleGetUserDefaultLCIDGEnumSystemLocalesWSetEnvironmentVariableASetEnvironmentVariableW6HeapReAllocGetConsoleCPGetStringTypeWGetTimeZoneInformationSetCurrentDirectoryWGetCurrentDirectoryWIGetFullPathNameWFGetFullPathNameAOutputDebugStringAOutputDebugStringWWaitForSingleObjectExCreateThreadhFindClosemFindFirstFileExAnFindFirstFileExW}FindNextFileAFindNextFileWrIsValidCodePageGetOEMCPGetCPInfo'GetEnvironmentStringsWFreeEnvironmentStringsWGetProcessHeapSetConsoleCtrlHandler2GetFileAttributesExWSetEndOfFileSetFilePointerExFlushFileBuffersWriteConsoleW8HeapSizeGetTempPathW!EncodePointerDecodePointer@RaiseExceptionDN@     F FFFFFFF@FFF@FFCFFPSTPDTFPF`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZF..FFFFFFFFFFFFFFFFFFFuZF([FZF([F[FZF [F[F [FZF[F \F\F(\FH\F`\Fx\F\F\F\FSoftware\Microsoft\Windows\CurrentVersion\UninstallSoftware\Microsoft\Windows\CurrentVersion\Uninstallt^F@^Fc@^FL@^F@^F*@^F@ZFZFZFZF[FZF [F[F [FZFDZF.?AVDNameNode@@DZF.?AVcharNode@@DZF.?AVpcharNode@@DZF.?AVpDNameNode@@DZF.?AVDNameStatusNode@@DZF.?AVpairNode@@DZF.?AVtype_info@@bb{4ll8>; ~**tsIF3L XllWmomWmomq jT%@+&UBC Er4 Yhgflkjponutsyxw 8nhklmn 0 8Z@!(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:Phn@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}(@D0U0c000001B1W1111111111:2^2r222222333x4|555L7f7m7t7}7777777 88=8D8g8n888888#9G9R9Z9d9o9z99999:::3:<:R:X:m:x:::::::::::::::;";(;3;B;T;c;i;o;;;;;;<$<>>/>6><>B>N>T>d>q>|>>>>>>>>>*?f?????????? 0+03090C0H0k0s0{00000000000111111'2222"3)3P3b33333333333#4]4g44444445B5j5555555!6C6Y6{66666 77-7>7L7e7r7y77777788.8>8D8[8h8w8888888888889:9O9x99999999-:7:F:Z:{::::::::::;;$;+;6;];i;;;;;;;;;;;<<<7<>6>L>W>>>>>>?%?D?p???????0000$0.080>0E0[00001(1-161A1H1^1c1u1111111111111222,232G2U2Z2k2w22222222222333P333333444)40464<4N4a4f4p4u44444 5(52575=5H5N5Y5e5j5o5555555556 686D6N6f6r6w6}66666666667"7-7M7R7X777778M8Z8p8888888899!91979D9W9\9p99999999:#:0:8:E:P:m:s:|:::::: ;;);9;?;G;h;m;;;;;; <1<6 >>>#>4>?>K>S>Z>w>>>>>>>>>>>?,?2?@?G?L?Z?f?q?v???????????????????@000 000!0&0/040<0A0R0Y0`00000000001111#1|1111111K2^2h2z22222&3,373>3E3Q3a3h3o3x33334 44'4.454>4w4444+5?5c5j5q5556676!757?7D7\7e7778%8+8F888889@9}9999999: :3:>:D:K:U:_:d:::::::>=>w>~>>>>>>>>>>??"?.?8?R?Y?e?o?????????P0000R0Y0e0o0001!1-171Q1X1d1n11111111111 22-242@2M2j2q2}222222223 3/33I8X8d899::<>>>0?H?\?o?001W1j1}1111111122l2y2222222,3G3S3b3k3x333333.474=4n4585B5S5y5555&6/646Z6_6666667$7777888P8Y8f8q8z888889;;;>>m???4P011(2s22222393G3M3h333333334464[4b4k4y4444444444p5u5z5555555555555555 666&6+606@6E6J6666667*7F7U7a7o7777778 88H8M8R8888888999?9H9M9R9v99999999999:3:;:@:P:Z:::::::::::h; <$>0>6>>>E>N>W>\>d>j>>>>>>0??t0000011+1G1N1a1n1111111d3s3344T5b555667777C9v99/:P:o::f;;;3}>???00T112D2W22222222333*3e3333333474b4}444444 5O5t5y55555555556P6k678'8`8y8888889999T99999999:.:Y:c:m:w:::::;$;1;;;; < <-u>>>1?7?a???f00001111123334404;44444445M5z55555e6y66666 7778-8:8}888889"9)909|99999999: :-:s:w:{:::::::: ;K;b;;;;;<<<<"0>G>Q>x>??0'0Z01!2?2b2q22222333+4h4444 5-5D55555556`777777788'8J8Z8j88888,9H9M9a9999::M:`:j:|::::::: ;;>;O;~;;;<==(=F={=====C>[>d>z>>>7?f???0U0p000 1/1E11132J2w22223334444444 5a5555566k6p6666667'7G7g777778!8:8S8]8t8T9Y9y99:::=;T;u;;;;;;;;;;<@<<<<<<=!=8=]=====>Y>q>>??070G0000000000000041f1r1112 2f2q222222 33K3W3h3333333!4Q4c44444#5,686C6O6V6[6a6f6l6q6v6|666666\7777777788$8*808Y88A9M9999 :M:Y:_:::v<7=????????h00=0R0h0u00000 11S2222D3t3}334+4O4z467D77778N89 :*:J:n:z:a;j;r;>>>>?'?`? P222C333Q9:R<>?  Q1`D=12 334599:$:D:V:v::::::;);K;`;;;;;;<$<6<p2222222222227g8k8o8s8w8{888#999999999V:::::::::r;< <<<<<<#<>>>>>>>?????????dl011111#1'1+11/23272;2?2C2G2K22_3c3g3k3o3s3w3{3444444444S5555555553s57<:<?L3333333443474;4?4C4G4K4O4S4W4[4_4)55 6n66P77/888t99$<V>>>+?E???080001 11112455 61676=6C6I6O6U6[6a6g6m6s67,88z9!:: @5755666J7}77`88::::::::::: ;=;O;<=00 1=1P1P@8<.>/>S>>`=24]55S66I77?8 >>F>N>>>??????lS0\0001#1-252H3Q3t4}4555556=6F6{66666617:7p7D8H8L8P8T8X8\8`8d8h88H9L9P9T9X9\9`9d9h9l97Y899::D=,01c1h1m111179:=:D:|=? ?B?I? 255559::;;> c>?l<444448<=== ===== =$=3=t=x=|===============>>> >>\>`>d>h>l>p>t>x>|>> (555555555555>?c??0D002T222\4r4!575556678R8"9[99~:: ;;>?@P 040R0c11113c33345J5n55556&6n688I99W:C;V;<<< =f>t>>PQ122222I3x3333333334 44*4Y4|44444455-595A5Y5~55555a6j6666 777777778%;6;< <<<<<<<< ===8=>=H=g=n======`001K1h1182P2x2222223 3333333333333344&4f4o44444,555y55556%606F6Y6l66666 7717G7^7e7q77777788.8@88888888$9_9j9|99993:@::::e;;;;X<<< =pXI00000000112 22)2t22!3A44445/7V888:;;;;<6<?52m222333333333 4'4x45/555H6S666 777k8888 999+9M9`999999999999:>:C:c:h::;!;0;M;o;(=D>>>>? ?? ????????001#1S111#2a2y7Y88 999p::<;7<>b01P4[4n4x44445{5555676]677778`89;9^9k9v99:9:D:O::::!;4;j;v;;>?)?X?o??????|90U000*1192x2222!3^3h3333333333 44=4C4U444p55566999/:;';4;g;s;{;;;;;d:0e0001t2222v336666677C7J7P7W7i7n7777,8G8L8R8X8j8p8888888888888889999+90959E9J9O9_9d9i9y9~999999999999999:::::/:4:9:I:N:S:c:h:m:}::::::::::::::::; ;;;#;3;8;=;M;R;W;g;l;q;;;;;;;;;;;;;;;;4<<U>r>}>>>>>>>>??4???D?I?d?n???????????D0090D0I0N0{0000000 1111C1O1m1x1}1111111122-282=2B2l22222222333373[3f3k3p333333334 4+40454Y444444455"5'5E5n55555"6F6Q6V6[6v6666666666787C7H7M7h777777778848?8L8b8m8r8w88888899&9+909R9`9o99999999: :%:3:n;;;F<=O==== >>T>w>>>?X1568888888899v999999::":*::E;;;;;'<5<=r>.????4 0501"1224|44566666666$8O::;<<=>> L36777.757M7T7r7|999-::; <<<=<^<<<<<<6=H=N=>A>>?0|[000001111111,222373B3R334454?4^4|445=5[556+6G666/7K7~777<8889999<<==B>>>>>>@+070F0Q0U0]0c0i0o0000g11224-466666667 777*727D7O7W7_7g7p7y777778W8b8889%9I9R9w9|9999999999:: ;;<<<<<<<<<<="=G=O======|>>>>>??PX 00N1U1|1202V223364D444 66A7q7{777/8,96999F:T:::; ;<==!>+>>>`0!0a0p0~0000001:1A1111111192F2u22223 3[3o3333G4R4^444)5366"8)8888z::::::;S;e;;;;;;)=;= ?p|$222[333n44 585w5555 7`7f7-8@89::::::: ;;$;W;^;e;l;;;;;;;>>>>>??G?\?j?s???T070m001F1m115556:6`66666=8=9;;;4c>J??P023 444566v77C8L8o888\9e999K: ;R>>P?X???0[0j0001111111!2L2n22222222;3M3i33333344=4O4W4u4444595A5W5u555555)60676>6|666 77877|88888 9@999999H:R:X:b:r::=247H881c133 5`59{99:;$;;;

l>>>?N?k??T090Y00Q111111$2J2z2223C3l333v55C6 7+7777778889,9j9f;U?? /0)1}2::S:Z:=y>>>>1X66>>>>0223;3B3G69999h;p;= =}>w???? L3344536'71777E8a888889^9;<>>>>>:?Y?r?}???0D0f0x000T14 5"515D5\5k5586~68)9:{:::::`<==>2>>@"0b0000$1H1S1`1r111W2l2u2~222222 3@3i333334 44474?4444444@5j5r555556617h77777y889 :&:6:J:S::;;;;;;L0>h>t>y>>>{??P070000J233344444A8g9x9==>`0r2y233555555555555555566 6666$6*60666<6B6H6N6T6Z6`6f6l6r6x6~666666666666666666666677777 7&7,72787>7D7J7P7V7\7b7h7n7t7z77777777 8+8?8E899<>?%?3?p(011$1(1,101111111<4:H<<<<== ======"=&=*=.=2=6=:=>=B=F=J=N=R=V=Z=^=b=f=j=n= 2l444444444444444444444444444455 55T5g555A7x7777777+8084888<8 2222222233 33@3D3H3L3P3T34444444444444444555 55555 5$5(5,5054585<5@5D5H5L5P5T5X5\5`5d5h5l5p5t5x5|555555555555555555555555555555555666 66666 6$6(6,6064686<6@6D6H6L68 00000 0$0(0,0004080<0@0D0H0L0P0T0X0\0`0d0h02 22P2X2\2`2d2h2l2p2t2x2|22222223333333333333444 444$4(4,4044444444444444444555 5550 00000 0$0(0,0004080<0@0D0H0L0P0T0X0\0`0d0h0l0p0t0x0|0000000000000000000000000000000111 11111 1$1(1,1014181<1@1D1H1L1P1T1X1\1`1d1h1: ::::: :$:(:,:0:4:8:<:@:D:H:L:P:T:X:\:`:d:h:l:p:t:x:|:::::::::::::::===> 777777778 88$808<8H8T8`8l8x88888888888899 9,989D9P9\9h9t999999999999:::(:4:@:L:X:d:p:|:::::::::::;;;(;4;@;L;X;d;p;|;;;;;;;;< <<<$<,<4<< >>>$>,>4><>D>L>T>\>d>l>t>|>>>>>>>>>>>>>>>>>? ???$?,?4?>>> >(>0>8>@>H>P>X>`>h>p>x>>>>>>>>>>>>>>>>>???? ?(?0?8?@?H?P?X?`?h?p?x?????????????????@0000 0(00080@0H0P0X0`0h0p0x000000000000000001111 1(10181@1H1P1X1`1h1p1x111111111111111112222 2(20282@2H2P2X2`2h2p2x222222222222222223333 3(30383@3H3P3X3`3h3p3x333333333333333334444 4(4>>>>PH88888889 999$9,949<9D9L9T9\9d9l9t9|9999999@:D:` <<<<=== ====x99: :$:4:8:@:X:h:l:|::::::::::::;;;;;$;<;L;P;`;d;h;p;;;;;;;;;;;;;<PKuA}PKuN .HcHHD$PFFIEH ;T$HIUHHcHH$HDII+HD$p HA:uH3H$H$HHр|\HT$`tH$HlafGH$ ]HcH HD$hHD$@H8tBLI9HT$PH3HLAI 1-HL$@IMILI9uMEHT$PH$.zLd$`H$,H3H$H|$hHB|!\Ld$Xt\F DNLd$0fD$(FH$L3fD$ Ht*NEEDNHT$pLd$(L$ H MtEDEOH׹AADAD;T$HLD$xE3HT$@MIJLD$ H^HEYH=>t3H= 'HT$ HIptH rH oiHP^GH&HcE3H3DHT$0}>tHT$0H 1^kH lH]LD$ X3H$@H3wH$`HP_@SHH'H3H$H$Hd$hd$XHd$xHd$PHd$`3HlZyH_H JlD)XHD$XL$L$HD$@HD$hH^HD$8HD$xHHD$0H$HD$(HD$pHD$ Wu3HD$PL ӜH 3DHD$ Yy H9^SHL$PLD$`HHy H]-HL$PH$Hy H]HL$PH$HP8y HZ]H$HtHL$PHPXy H]HT$hHt#HL$PDD$XHy H\HT$xHtHL$PHPHy Hx\jLD$pH$A33D$(HD$ UHL$`HH$DP0yGLD$pH mjH[DEVHL$`HtHPHL$PHtHP?XOHL$`HPHL$PHPXH ZhH$H3QtH[LHHIKHMK IKMCH\HUu3-VDL$`LD$hHT$0H0WH \YhHHH ="H%eH\$WHH$H3H$HLKhHl\H$D$ ^VH$HTHD pgD-eH[HL$0VLL$ L$HT$0HQt'LL$ L$HT$0HQt3K3HH$HWHfG3H$3Ɋ HDuH$ZSH$H3rH$Hİ_H\$UVWATAUAVAWH H \HSH[HH SH[HLRH[HHRHt[HLRHI[HHHD$hRH![HLRHZHLR3HD$pH;H;L;L;H;L;L;H ZHH;t[HlZHHXZHHfcH-m!HH gHc3HHAHHLAH rHl$hHD$pH-eL%RHb3L-RH\$`H A_A^A]A\_^]@UATAUAVAWHHl$ HHHH!H3HEXHHZIMcLHMJQHZIHE6QHZIL#QH\ZIHEQHYILPHYIHPHbYIHE PHMH:YLP3H9ML;H9ML;}H;tL;kH;bH9M XH;H8@3Hu ՂH^YLHH`袀FH dL$Y SUHML-63IAhIE~2MLL+H HtT3IHIuDL-D6IAA3H~ILHt!wHH;|HU(λ{uPDEJLRHT$ HA0JyH G]HtHRL$XxH$X.HtBH=lRHu/H$X' H \HtL$XH"R5xH$ H3gH8_^HHXHhHp WH@H`E3H@EA@GHHu3iHT$`HmFHd$(d$ E33HEAGHHrGHtHd$ E3E3AQHcGHHGG.HH\$PHl$XHt$hH@_H\$WH0H=GHtQH=[uGILGd$(EH IPHMAHHT$ DHHH[\IH\$@H0_@SUVWATAUAVH`HH3H$PL$E3+TM+TMuM1"HcHف|PK;{V4tHP3A;D9stHcCHH+HcCH+H F+SH{+HAHcH+mHI;HT$@4DA;HLPHL$@LE3 DA;tgDE3Lt$0AHHfDt$(fDt$ HI;tPLcHHzH3HHHcHIEI4$6E9EHO3H$PH3AdH`A^A]A\_^][HhHL$0GHL$0GHL$0E3E33D$ mGuHh@SUVWHHH3H$Ht G&HT$pGHFE3ɋиgfffE33H &OHL$h3ɉL$`L$XL$PL$HL$@L$8L$0D$(D$  BHHBHHAH3H=@L @PHDHɉL$ HAHAH3P H=Y@L R@DHHɉL$ HAHH~AHAHT$pHE3H$H3bH_^][H\$Ht$H|$ AT0H+HSH3H$HUH33D$`HD$ht$tt$pgA3H$HD$x%EH$@L%MHL$`L$H$H$Df;uH |SLMHvME3DHVMH$L]D3@HDDHt$XH\$PHt$HHt$@|$8D$0L$E3I3ɉt$(t$ `DHȺHCHVDHH$H3aL$I[Is I{(IA\H\$WH@HT$0HC3 DDL$0DT$HKHL$0BLD$0HYCLzAHDCLSH/C'Ay8uBAE3HȺpvB3H$0H3\_H@[H\$Hl$ VWATH`H4H3H$PHHD$HILHKAE3HHD$ 3=t3H!t$8H!t$0H!t$(H!t$ D$@P31D$@PHt-?t(HT$`HH+DA+uHEuLD$`H5KH$GALD$`HJH$-AL\$PH$AE3HL\$ <ufD$DHHtZHL$PHD$DE3HD$(E33H\$ y<u4L$E3IlAL˺ILcHQAHL$P&<Hd$8Hd$0Hd$(Hd$ HL$HLL$@LD$`;HL$H;H$PH3_]L$`I[0Ik8IA\_^H\$WH0HD$@H AE3HHD$ ;3ۋ;u HL$@p;;ËH\$HH0_@SH H? HH;tKH=uu:H 1LIHIA?VHHHH H [̃~Ht u Hg }H Hl$Ht$H|$ AUAVAWP*H+H3 H3H$@NH3t+fD;IfD;9HQH;tE3ɺArHD$ >H΋>L5MHHMIH~>MHH,E3AHH|$ [>L;t!tHALcHH|$ 3>M@:t4H IH$@M=L$@H>LD;uD@:t"H{HH$@M=H$@H)HLHAH=H=AE3HMͺp=E3AHH|$ o=HLu\f=EME3HȺpY=L@H=L@H=@N: =ME3HȺp<McAHMH|$ <L=sNHIH "H+Њ H@:uMǺH9=MAHH|$ <Hc:bLH;tgMAHHD$ U<L ^MLKHFI|ru"D E3HH/HL$H*HTH\$@Hl$PHt$XH0_H\$Hl$Ht$ WH0H[HHlEHHHH]REHHHH=5EHH 2HD$HHWAE3HD$ M*t.L,;E3HH.?HL$HHS)t!tM.Lv=E3HH.HL$H)HxSH\$@Hl$PHt$XH0_@SH :tDHHtH 荇uH+H [@SH :E3E33,HrH==t H=HHH=~HHu Hz=몹PQHHD$8HuHJ=3SNHL$PLƺlHH3H|$PHHHcHLIE;|$A HIcHHHD$8HJHL$PLƺɏH]DHbMcL IAH‹LC<H;A$3+CE3HHP.MJHT$ t A$ %H.BH BHAHE A$AE+AD}H+D+D+HGAHEI@DuHEAET$D#AD$@H8A_A^A]A\_^][3H;tXHQ(H;tOBAA HA ALBB HB B,B0B4B@BDHHHHB`HBX3BøEHt:LI(Mt1,EADEA wʸEQDAA#AA@3øH\$WH HMA81AXHu Ha Hy0uHa@HHA0Hy8u HHA8HI@AH%S0HHuBRHC(y`0B}GwHb8Hˉz(HK@S8Hc(\H\$0H _ELºH!@Ah AlHAXHHHA`H\$Hl$Ht$WH HY(HH{8u!K(DHN@V0HC8Hu{,uK(c4c0{,+n{,HV;rHK8LH+!c4C,P+{4K4;GHK8H+D!+tHVHK8DI+!k4ËK,{49K4uc4C0;sljC03H\$0Hl$8Ht$@H _ÉT$SUVWATAUAVAWHXE3LI;Hy(I;L9aL9!u D9a? u DIDqLQL9Dt$8ED$D$wDo@D$LT$@AG;A;t__HXA_A^A]A\_^][E;AAIA;r߉o@t HGt HGHO I;t g s#@l$0HT$0@l$1OA5GAAE;fAAI rHG I;thg s5@l$0HT$0AD$1@l$3D$2OGAAAE;AAIA;rHO I;t@ʼnAHG H g s)@l$0HT$0@l$1OACAGAAg r{HG I;tL`g _HA;AGA;HG I;LHM;PH+WH;vi+gE; AAIA;rHG oHI;thg s#@l$0HT$0@l$1OAqGAAIDIIg sODI 3ɉ$;txD$LT$@H;IE "G|fDGG|A;uGxGt9G|DD$D$H:IE HDGxHOlHG`GtLd$(HL$ LHGz D$D$LT$@$E3䉄$A;tH:IE ArGAr>MUEMM}EuAI͉o@wDMUEMM}EuD$#OhL_XAAA+ȋH#A5E;AAOhMAA+ȋH#HGX;wA:DȋAD$4EAAAAD#ADCDADYE;ADL$5AAD$6AAAAIǃD#ADHGXBDED;wL$5++OHA:u  p@t H:/OPWPA;t9;s!E;8A΃AI;wPrߋʸ#GH+OlL_`AAA+ȋH#A5E;AAOlMAA+ȋH#HG`;wDȋAD$4EAAAAD#ADCDADYE;PADL$5AAD$6AAAAIǃD#ADHG`BDED;wL$5++@t H-qD$D$LT$@AOLȃOPWPA;t9;s!E;A΃AI;wPrߋʸ#GL+G0A+A9GLv H,E;:OLAA+;v/+ȋG4;vW,++H5+ЋGHHW8;v GHIH+ыA;AGD++GHD$HAIƒuLT$@QD9gHFnGt.pidD9gE;dAAI rE+EEDGE;t;OAIH+D9gtD$LT$@GDZ AEL͋ED$ȋ%ȋD9gE;Ot H4AAD9gD9gE;AAI r;ot]H4lE;t`GHAIAD$LT$@MUEMM}Euo@wDAAAAD$HD$@$M}IE$EuAEo@3wD9o,u ?}A;]tI;t !A+]t$8A+uA]Au _9ot+;t'IUOH+D9ot GAELG؋Ƀ@? DODAMH;u;t $u D;DDA@SH HHt6HA(Ht-LA8Mt$HP8HtHI@AHS(HK@S8Hc(3H [H\$Hl$Ht$WH AHHHtHY(Ht {t; tH\$0Hl$8Ht$@H _Ã; u%E333DHՋ;CtWHCt HK8;s,vDC,HI+HW D[,D[0C,H+LHH9 s0C 3[HtHA(Ht@t HP b@3øD E3LEttMFDE3ȃf@+FDrHL$0F@FDn@AH~DsHN|HT$0!DGHHN| G )GDO H~|t#DGHDO DG 3H\$8Ht$@H _3H;tHI(H;t9 u9ADu øH\$Hl$Ht$WATAUH HLH=H4Hz(H'HB0HHz8HK@AAH%AHHu 3H9o8t&O(AEHK@S0HHu HK@HS8IHAXAH%HHL_XHHHL;rعƕH [H\$Ht$WH0HH3ۋH;;u"X{8H\$ E3E333G-荖HH;tDXLH\$@Ht$HH0_̉L$SVWATAUAVAWHHHc3ۋH;;u.XWH\$ E3E3338G3DB0HJuWW ;t;5ihLLIL=fAMkXKBL AA#u.xWQW H\$ E3E333F5耗K Ft!uW J !A;t1t,;uV Wu fO fO7wfDwf_f_ f_ H_(H_ H_u_FK H\$(H$HD$ E3E33J !#$O f_f_ f_ f_fDwK HT$PJ !;u@VDt$PtG $fG G fG9\$du 9\$huH_ nH$HL$d,;wHT$@H$ ;\D$LDT$JDL$HDD$FT$BL$@L$0D$(DT$ 蕙HG 9\$\u9\$`u HG HGnH$HL$\;HT$@H$;D$LDT$JDL$HDD$FT$BL$@L$0D$(DT$ HG9\$Tu9\$Xu HG HG(fH$HL$T$;tiHT$@H$;tRD$LDT$JDL$HDD$FT$BL$@L$0D$(DT$ 蕘HG(D$tGGfG_ ')>TT H\$ E3E333aCHĐA_A^A]A\_^[HHPHHL@LH SVWATH8H3ۋH;;u'SH\$ E3E333BH;;u'}SH\$ E3E333BLd$pG@Hƪt*t%HcHHLHkXIH =H 4HLB8u%ttHcHHHkXI A8t"RH\$ E3E333B;u*HME3HT$hH0H׋謝H[H8A\_^[LD$LL$ H(LL$H蠫H(LD$LL$ H(LL$H褫H(HHPL@LH H(LHE3}H(LD$LL$ H(LL$H脫H(HHPL@LH H(LHE3]H(Hٝ@SH u;LHcȺ耈HHu$PHˉcHHux3HkHH0HHt HjE3HbEHILIHIHkXLIt ItMuIH0Iu3H [H(蟭=ltH H(@SH HH H;r:H@H;w.HH*H+HHHH?L蜎k HK0H [@SH H}nk HJ0H [H(H1H;r7HH;w+qH+H*HHHH?L H0sH(H(}rƌ HJ0JH(LD$LL$ SWHhIHMu%tOHd$ E3E333>iHtHtѹL$D$HBH;H|$@H|$0GHL$0E3T$8H豛Htl$8x HD$0 HT$03ɫHh_[LL$ H8HD$`HD$ H8ffLM t$H+t(HItu IHHHIr&I~LLIM3IMtIHItx$tuHItiHtbHItV$tSHItGHt@HIt4$t1HIt%tHIt$tHIAA A AE+t\AND;u2AH3;|  >E3E333H\$ $.3H\$PHl$XHt$`H|$hH0A^A]A\3A9X|Ax IcHHD$xHHL$pDD:FIIDM1H H9u-3A9XhKA9H[IcHHD$xHT8HL$pDD:IIDM1H H9uI%HD$pM1HAH3;*ЍR+ȍC DAMD+At\At7E;HD$xQHHD$(HD$pHD$ H3;4A@3;h;`;tH3A9XKA9HAAHA9X3Axm%A9H|+E@$IAAЋ‹kD+D;|Aދ3A9A8;AH3;;Ax|;Ax1E@QAЋJkdD+kdAP<3oAmAZA/E+E+tdE+t/D;DAH3;m SAH A;|$LL$pLljD$ dLl$xLd$p3Ll$(Ld$ 9$tIAp;I9$HLl$(L L7I $Ld$ LƺH433A9X\Ax QIcHHD$xHTpHL$pDD:IIDM1H H9u3A9X KA9HIcHHD$xHHL$pDD:IIDM1H H9u~AH3; ApAE+t|E+tNE;4:39^ HHHL$pDD: HIDL7H H9uAH3;-Qkd+HD$x3HD$(HD$pHD$ 9$tAu3n3A9XKA9HNA3A9XAxAx HD$x,H0HL$pDD:t@IIDM1H H9u*L8HT$pED:tHMD L7H H9uA`@UATAUAVAWHpHl$@H]`HuhH}pHH3HE LMLEME3LHMAA;tA;t IPIHI@E9\aAAL-FLE-3lDD$(fAXfDEfEAALD$ fALE3fE AA fEAAfEAAfEALfEAE3DA;=:HHHH;w HHH苡H+H\$@I;HcE3HI;t HI;tiAXLEL3Dd$(HH\$ ADXE~%HH:vIAˈIH HEHK9uLMLmAA:pHL9`AAILMAIA8$tDAdg1A'AAtAHtYAMt#AaHH^uOLg`A+t!A+tA+tA;QBbA۲mA+t A;t*A۲HiHLHuLgpKAtxHE3A:uL9X<'tRI3E3EXA;tL9vD8G>IHLjMHIIMHA:uIHcHE3A+t!A+tA+tA;_AaA۲dAЃh1A+t%t YOyHAy  I0I8E3A;L9 I'E3EXA;tL9vD8C2IHÈMHIMHL9IE3EXA;tL9vD8CIHÈMHIIۈMHA:uA+tA;t$A۲SfA+tA;tA۲MSA+tIA;tGIATE3EXA;tL9vD8GtcIHLjMHIIMH1A۲ILE\$0MIL|$(Ht$ mE3A;tEXIA:t LM3AHM H3H]`HuhH}pHe0A_A^A]A\]HHXHhHHVWATAUAVHpHH$LHHE3MIAL$M;sI;jE3I;^H$I;u HD$HHXHI;HD$@ A:%tsHT$HA;t;H|$@v3D8s H$HÈH$HHL$@H$H$HÈHD$@H$HHD$@SM;HAƀ;#uHÊD$0HD$@L$HL$HMHl$(HD$ A;tHD$@HI;L9t$@vE4$A;uAL9t$@w: 2"LI;vH$D1H+|$@D8t$`t HL$XH41E3E333Lt$ !D8t$`t HD$X3L\$pI[8Ik@IA^A]A\_^H8HD$`HD$(Hd$ H8H8Hd$(Hd$ H8H8HD$`Hd$(HD$ H8H\$Ht$H|$ ATH@Hd$0EHH3Hu'0Hd$ E3E333A 33Hu'0Hd$ E3E333 338u$0Hd$ E3E3333gKHHD$PHu]03F>u"I0H HL$03LEHH/HHHH\$XHt$`H|$hH@A\A@@SH0ILHHu%/Hd$ E3E333ɉ$AHIrHHt3/H0[HT$LD$LL$ SH`Hu%f/Hd$ E3E333UHtHL$@HL$0L$HL$0E3D$8D$HB{l$8x HL$0 HT$03ϋH`[LD$LL$ H(LL$HH(LMCMK H8IC E3IC H8LL$ H8HD$`HD$ H8LMK H8IC(ICIc_H8LH8IC0ICIC(IC<H8LMCMK H8IC E3ICH8LL$ H8HD$`HD$ H8HHHHPL@LH H(HPH(HHHHPL@LH H(HPH(HHPL@LH H(L@LH(HHPL@LH H(L@XH(@SH@HcHL$ HD$ ~LD$ RDH@DXA|$8t HD$0AH@[@SH@=HcuHX%YHL$ 3HD$ ~LD$ IRDH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ QDH@DXA|$8t HD$0AH@[@SH@=/HcuHXVHL$ 3"HD$ ~LD$ cQDH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ PDH@DXA|$8t HD$0AH@[@SH@=KHcuH/XVHL$ 3>HD$ ~LD$ PDH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ PDH@DXA|$8t HD$0AH@[@SH@=gHcuHKXVHL$ 3ZHD$ ~LD$ ODH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ 6ODH@DXA|$8t HD$0AH@[@SH@=HcuHcX%YHL$ 3pHD$ ~LD$ NDH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ JNDH@DXA|$8t HD$0AH@[@SH@=HcuH{XVHL$ 3HD$ ~LD$ MDH@DXA|$8t HD$0AH@[@SH@HcHL$ %HD$ ~LD$ fMDH@DXA|$8t HD$0AH@[@SH@=HcuHXVHL$ 3HD$ ~LD$ LDH@DXA|$8t HD$0AH@[@SH@HcHL$ AHD$ ~LD$ LDH@DXA|$8t HD$0AH@[@SH@=˗HcuHX%YHL$ 3HD$ ~LD$ KDH@DXA|$8t HD$0AH@[@SH@HcHL$ UHD$ ~LD$ WKDH@DXAW|$8t HD$0AH@[@SH@=ߖHcuHX%WYHL$ 3HD$ ~LD$ WKDH@DXAW|$8t HD$0AH@[@SH@HcHL$ iHD$ ~LD$ JDH@DXA|$8t HD$0AH@[@SH@=HcuH~X%YHL$ 3HD$ ~LD$ %JDH@DXA|$8t HD$0AH@[@SH@HcHL$ }HD$ ~LD$ IDH@DXA |$8t HD$0AH@[@SH@= HcuH}X VHL$ 3HD$ ~LD$ ?IDH@DXA |$8t HD$0AH@[3Ã@SH@HcHL$ HD$ ~LD$ HDH@DXA38L$8t HD$0D;u_uH@[@SH 3;u_uH [@SH@HcHL$ HD$ ~LD$ &HDH@DXA38L$8t HD$0D;u_uH@[@SH 3;u_uH [H;t$MtfDD HˆDJHIuH;Hl$ WATAUH H\$@Ht$HLt$PN4MIHLffIIL;wDHHAՅHOHH;vLHH;t%Ht H+fD HIDJuH+I;wLt$PHt$HH\$@Hl$XH A]A\_@UATAVAWHMILHu6Ht1 E3E3E333L|$ DHA_A^A\]MtMtHH$@H$HH$PL$LjLLE3fff3II+HHpHw*MLIIzINt0N HIHIHAԅ~3LHL;t(ML+fA HIADJuIIAԅ~3LIM;t(MM+fA HIADJuIHAԅ~3LII;t(LM+fA HIADJuIIH;vHH;sHHAԅ~H;wHI;w HHAԅ~H+H;v HHAԅH;r7LHH;tLL+A HIADJuH;uHzHH;s"fH+H;vHHAԅtH;rfDH+I;v HHAԅtIHH+I+H;|&L;sNt0J II;"LI;sJ\0N IL;LH$PH$HH$@L$HA_A^A\]H\$Ht$WH HHHu HjHu*\HwCH 7HHDL3LHHuo97tPHHt+HvHG 3H\$0Ht$8H _}HX%dH? H@SVWATAUH@I؋LLHHu*t&$H!t$ E3E333n 33u'Hd$ E3E333< 3Y3Hu'Hd$ E3E333 3&u3H$HC@Hst*t%HcHHLAHkXIH ozH fzHLB8u%ttHcHHHkXI A8t'Hd$ E3E333I 3Ht$0HtV|$xtHCxHHH H蔹ȉL$puM;u3Ht$0A $ILd$8 tA$H[HH@A]A\_^[ffMtuH+LItB H:uWItNtJHuJ ffwHJ H;uHII~vHLI3It H3HHÄt't#HttHtt tuH3H\$WH HNH=`wHtH\$0H _@SH CAH k<H [H@SH H זHtHHHtH [@SH ̹W̹VH;s-H\$WH HHHHtHH;rH\$0H _H\$WH 3HHH;suH HtHH;rH\$0H _H8Hu'>Hd$ E3E333HHtH3H8H8Hu'Hd$ E3E333?HaHtH3H8H\$WH H=ΫtH ëVt腺HH _uZH /ڹH3H=4HHtHH;rH=gtH ^tE33APF3H\$0H _H\$Ht$DD$WATAUAVAWH@EDV=nD%cH Ī9HHD$0HH r9HHD$ LHt$(LHD$8HH|$ H;r ;9H9uH;r\H39H9HH O9HH 8 9L;uL;t LH\$(HH\$0LHD$8HHD$ H(H ,H%H Et SEu&bAL$SA|AoH\$pHt$xH@A_A^A]A\_E33jE3AP\33DBO̺3D=@SH 8HH@HBHH*H.H辻H膹HbH 7H3gH [@SH =uj?=H [MZf9u9Hc GHHȁ9PEu f9Au3v 93H\$Ht$WHHL$0/MZf9ubHcH5HƁ8PEt 3ۉ$N f9Ht 3ۉ$8w 3ۉ$$39É$3ۉ$H56;u!9=xuM>;9u!9=Nu#>;\[y ,HEtH~py Uy Tt@|$lT$pA DEL3HtD$ uNa$u@VL$I[Is I_H(gH(HL$HH ~{LL\$XE3HT$`HL$XuHD$PH|$PtAHD$8HD$HHD$0HD$@HD$(H|~HD$ LL$PLD$XHT$`3cu"H$HHH$HH~H.H}H$H~v} p}H^HD$hH^HD$p} 3fH Q=}u  H"HĈH a@SHd$pHL$t3A萦L\$pH$H$L\$HHD$PH$HT$@HE3;tHt;Hd$8HT$@HL$`HL$0HL$XLHL$(H$LHL$ 3s H$H$H$H$H$D$pD$tH$E3ɋ3HL$H u uHHH[H\$WH HH $2HH2H HH\$0H _H 2H8HD$`HD$ }H8H\$Hl$Ht$WH0HH AIHT2HtLT$`DLHHLT$ %L\$`DLHHL\$ H\$@Hl$HHt$PH0_H8Hd$ E3E333_H8H8HD$`HD$ EH8@SH gH [@SH WH [@SH GH [HSVWATAUAVAWHPE3EADpDpDpANMLH$ A;tLt$ E3E333H$8 A;tLt$ E3E333H$R A;tLt$ E3E333TD5AD=<`D=%`H IHHD$@I;D80H I;t HHhA;u AwH sI;t襱HGHHDHQI;u HFLHPH , DA;xLt$ E3E333_H ~I;t 0L5~H 6~,~ ~k<$fD95K~tQ~k<ȉ$;~fD95y~t$~A;tDŽ$+k<$D$D$H$HD$8Lt$0?t$(I$HD$ EL}3ҋIA;tD9$u I$Dp?I$D0H$HD$8Lt$0t$(ID$HD$ EL}3ҋA;tD9$u ID$Dp?ID$D0$F $( $" IA;gAMLAW=I $HA;tLt$ E3E333I?-u AHHDEiD$0@9<+:| @:?:ulHHkH\$@Hl$HHt$PH|$XH0A\H\$Ht$WH0IHH?!tHd$ E3E333"HC@8tL AHHHD$ H8tL AHHHD$ H\$@Ht$HH0_H\$UVWATAUAVAWH0HAUAF!HH$3H;HnLkhED$ED&IEL jHD$(HfQHHD$ MLL5;3L6QH;tE3E333Ht$ I$IMQA;HEIIMII HLlHIEHD$(HHD$ LM;pH$E3A;uHHKXI;tu HKXΌHS`I;t u HK`貌HsXHkHHRH蝌HKXI;tu HKX~HS`I;t u HK`bHLkXLkHLkPLk`H\$pH0A_A^A]A\_^]@SUVWATAUAVAWHH4H3H$H$`IMHH- HpLhE3HL$@HtLt$0LHL$8I;I;M;;CuTD8cuNLRIH7A;tE3E333Ld$ I;tfD'fDgfDgI;tD&H;H LH=s(HIٟHL$8HğHL$PHE3HT$0LD$PHL$PHD$0HL$@LD$P@ID83tIsMHiHL$8MNLúNtHd$ E3E333Lt$0HtAIH|HtHT$@AH|MIHtHd$ E3E333I3H$H3܁HA_A^A]A\_^][H\$ UVWATAUAVAWHH2H3H$ILcH LL$HHT$pHHD$@AHD|$(HD$ _Hu3oIHL$pHHT;HLHL$pHHHLHtHD;HMoHL$hHD$XBAD$PKDHGHHD$`h{GHULD$pIL$D$DtHd$ E3E333HL$`ID$HT$HHD;HD$HAB {AD$@E33҉GH|9Gt!H|H|HAHH|EtIcH|H|H|AGAhzD$8D$0GLMD$(H$UD3HD$ KtCH$f!HHuHj=H$A'3ɅG|AuD$@GKH4H…HD$Xt"IHD;HtD\$PD$DFGH <H;t)HT;XuHL;X>IIL=0Hd;PA$Ld;XHD;HH$H3~H$hHA_A^A]A\_^]@SUVWATAUAVHH/H3H$IHt Ht IHcHHDH83DfH$A8LAAxC6Ax_+H$H|HHLL+x8;oAL%I $MHuI $zL;tHIAL;~HHH褿HHu }; AJHL$0LLź{tHd$ E3E333JLD$0AHD0HtH݀;t HÀ;HJH$H3*}HA^A]A\_^][!t$(H!t$ HT$0E3AHHt3HoHt-HUHL$0謙tLD$0HHuE3H ~EgZ3cHHXHhHpHx ATH Hw+Ht&AIAL$MHHu(H 3H\$0Hl$8Ht$@H|$HH A\IԹ`HHu H@IԹ HCHu H H;Ht%H9H;tHA`Pv'HH LƋHtHHSHdt%HKÃH [H ?H諃3HCD HCD HHt$H|$Ld$ AUAVAWH@LDE3v&$L!d$ E3E333n3nHHD$p`HHx HHtH;tHA`1u'H MAHLHD$0H Mt)H08I8 PAAE͉ pPA fHHHD-7HH .9H"9H AH P\tL9AC PACPA8IXH/I(Hp>I@H=A ]> {H5IHt$`H|$hLd$xH@A_A^A]H%}[3H%s[H%q[H%q[H%q[̋Z83H%e[H( B8t W[ 08H([H\$WH HHHMHAǁƁtCƁCH1H H q HHuH{7HHl 5H\$0H _H\$WH X Z7bZHHuHHHHt3 /7H>ZH˅t3:ZHK3ۋXHH\$0H _@SH qHHuHHH [H+H\$WH HHI8HtHKHHtrHKXHtdHKhHtVHKpHtHHKxHt:HHt)HHH;t HHL$0HtuHA$H;=Y>utHAI;u I]HL9'uHc HHI;u 4HHHHHI;u勌$L#$H==I;H=A;tKI;tFdH= A;}|NA;trH$H@A_A^A]A\_^]A;t3I;u%k HL=I;tL H=M=I;u F H7=I;tL H=(=HI;tHM+3IHMcH;tCy=MHI3;uHfB9<`fB9 `HHH;uH=<H+H;CH9:HcH UuD$3D;tjH9 tHL3HHHHH9uHcHH;s=H V<A 3H;t&H=<H=4<H+HjLG؋H [Ë= =H\$Hl$Ht$WH 3HHmHHu(9=v FDD;=AG;uHl$8Ht$@HH\$0H _HHXHhHpHx ATH 3HHAE3HH)HHu*9G=v"EDD;/=AAGA;uHl$8Ht$@H|$HHH\$0H A\HHXHhHpHx ATH 3HHAHH4HHu/Ht*9<v"EDD;<AAGA;uHl$8Ht$@H|$HHH\$0H A\H\$Hl$Ht$WATAUH 3IHALLHI˼HHu/Ht*94<v"vDDD;<AAGA;uHl$HHt$PHH\$@H A]A\_ffHHHtfHt_uI~IHMHLHI3I#tHPtQtGHt9t/Ht!tt uHDHDHDHDHDHDHDHD3Ht9t HHH;rH\$Ht$WHPHًHL$0Ie3H;uDsE3E333Ht$ 轵@8t$Ht HD$@3H\$`Ht$hHP_HT$89ruH|Z@8t$HtHL$@ f;t3DtH@83t ;u HC;tH;l@8t$Ht HD$@HfE3HHXHhHp HPWATAUAVAWH@MyM!Iq8M+AfMHL3HHL@9>+H^ CL;CL;{;tHL$0HIЅ~sA}csmu(H=WtH WgtIWKAHIO]IF@SMcMHD$(IF(IMHHD$ @R]H;>sj>3fIy 3I+9.vTH^KL;r>CL;s6H;r H;sAE u/;t H;t#HT$xIDZIDCMAH;.rL\$@I[0Ik@IsHIA_A^A]A\_H\$Ht$H|$ATH L%33I܃{u%HcƺH HJ8H H rt-H!HH;|øH\$0Ht$8H|$@H A\HcHI$3H\$Hl$Ht$WH HAH-z!HH7HttHx?HdfH'HH;|H Ht {uO?HH;|H\$0Hl$8Ht$@H _HcHHH H%x?H(H3?H(˨H\$Ht$H|$AUH HcپH=3u(N芨HHL-UI|t{(HHuF 3Z fI|u/HH\$0Ht$8H|$@H A]H\$WH HcH=HH<uuHEH H\$0H _H%$>H\$Hl$Ht$WH Hڅxi; ?RsaHcH-GRHHHkXHDH<u==u'tt u 5;HDH3  H\$0Hl$8Ht$@H _H\$Hl$WH xs; QskHcH-QHHHkXHDDtGH<t@=u)tt u 3:HDH 3M b H\$0Hl$8H _H8u>  ]x1; Ps)HcH PHƒHHkXHDtH, ̿Hd$ E3E333 HH8HHXHpHxL` AUH HcLIL-jPHkXKt|3 u3O |3 uHL3gn#D3 GtKLHL;H\$0Ht$8H|$@Ld$HH A]HcH OHƒHHkXHHLH%|;H\$H|$Ld$AUAVAWH@IEE3AL$ uA 3|$$HsO@LcJHH\$0JH H;C{ u; p{ u HKGmu DpDt$(C Eu HK:Ct HK:HIEu?CL#LNK+H.袋.HLIIH?LDDl$ HXH\$0IHzN E;lj|$$H_NXJYHD$0HttHcL9NIЃN I H H;s@L @ ` HXHD$0|$ HcHHHkXIDHADD|$ AH\$`H|$hLd$pH@A_A^A]HHXHpHx ATH0L3x@ߍG Esˀy9;uV8諼u@utHct$Hu;P8 PIԋHHHLLHkXIȈ\IȀd8IȀd8D$ H\$@Ht$PH|$XH0A\HHXHhVWATAUAVH````McHcFZLNF BA8Lc$A;&Lc$A;A H iAQDL A+A;}[Ùƒ;uAkd;u#lAiҐ;AC,ƒ;uAkd;ulAiҐ;u~ō+ADCDAAADAAD+ʙALHcHFHcHimHHcHH RItkH>teAEt^AEuH3A;tILcIHAMkXM$HI$AEAD$IL$FfA;tAD$ IH;|EIHHkXHGH;t H;tKCAD$ɃE;D0HHtJI;tEH;3A;t7H3uK@ uKHKeA;tC .K@HAHHQ "Gx23L$I[ Is(I{0Mc8IA_A^A]H\$WH HFH;Ht7H  t HO*2HHXH H;rH YH#HHHH;|H\$0H _H\$H|$ATH H -cH0H;u3cH`H;uwC ucL%,HcI<u+IHuHC HCHC$CI C$CHKH K3H\$0H|$8H A\̅t0SH b HsHcc$H#HcH [@SH B@It HzuA&Bx HHFu H [̅~LH\$Hl$Ht$WH II@LH@?tH\$0Hl$8Ht$@H _H\$Hl$Ht$WH A@@IIHt IxuA7~3MLHHŃ?u豳8*uLHֱ?H\$0Hl$8Ht$@H _HH@HHH@HHf@H\$UVWATAUAVAWHHNH3H$3HHL$hHHL$xIMD$`DD$TDD$HD$XD$P@RE3I;uA3E3E333H\$ ;8$tH$AC@L H" HA;t(t#LcL IAHMkXMɀ LL ȻA@8u)A;ttHcHƒHHkXIB8tA'3E3E333H\$ o8$tH$A1E3I;t@/ADT$@DT$DAL$A:H$AHA;H$E8B8u%ttHcHHHkXI A8t""H\$ E3E333l;u(HMLL$pMIHA֋H׋HVH\$PHt$`H|$hH0A^A]A\H8LL$ MLHH ;VH8H8LL$ MLHH O2H8H8LL$ MLHH H8H8LD$ LHH E3H8H8LD$ LHH E3H8H8LD$ LHH JE3H8H\$Ht$ATH03N^\$ ;I}iLcH8J<tPJ At>[tƉt$$|1H8J H0!H 8J HL8K$É\$ 돹SH\$@Ht$HH0A\H\$Ht$WH A3H$<u?At69+y~-HSDNj3;uCyCK HKcHt$8H H\$0H _@SH HHu5,jtcsH/3H [Ht$H|$Ld$AUAVAWH0DE33Ns3|$ A;=zGLcHR7J<tjJBt`SH27J At5Au9A;t%ADd$$EuAtA;ADt$(H6JSlj|$ nAADHt$PH|$XLd$`H0A_A^A]H\$HL$WH HHuRHHSH\$8H _̹HHXHhHp HWH HHKHcu K 4@t ֢"3t{HCHKC{C u/PH0H;tPH`H;u ;uHC+HS+kHBHC$;C~Dŋ1W K?t#tHHH2HHkXH H $A t3ҋDBIHHKD$0HT$0D0;D$0H\$8Hl$@Ht$HH _H\$Ht$WH IIHH; udM9u=H ]HHu3KHD$PHLH6LML"HHA(HtHH HH H\$0Ht$8H _HH(@SH v˃߃EˋH [H(AxHHH>ЋH(H(t肿H(H\$Ht$WH HHH؃t wuHt$8H\$0H _H\$UVWATAUAVAWHH6H3H$pE3L$L$IHHT$PLd$pHHL$`HDŽ$^D|$|fD|$xAD|$EAD|$9ED|$4\$lA:A%SvA;tXD+DHDl$4A;t%vA;uH֋~HMvA;uHl$PD8ekD8eP3D|$\D$D|$LAED|$XD|$@D|$0AD$L|$P@D\$8LAs3;tvCDDlCлL$0@:t҉|$h|$HD$pL$LD$p@<HD$|HH$HHD$ JA;p +u$Ź+A;uADID$<@`Ź+A;t\HD$pL$@<HHD$|LD$pH$HHD$ A;IAD$<mA;uD+Dl$4A;tIԋA;D8|$0u7Ht$pD$lD<3\$8H +͹H$L$LƋHl$PA;uD\$hA@:Hl$PEApAsAuAxA{tBHl$PE;T$9Dl$4E3AֈT$9A: L$L$ @:Hl$PEDOH}^uHDt$X3H$DB +}]AuA]IƄ$ E<]E3I<-uVE:tQM]tIID:sDEDE:w,EAMAӃIEMBE:vE DDAIBE<]xA38]+uA+t$H;ADd$4Hl$`0uOEHDd$4/D$<@g3;tgD$\@D$\ft$\3Ƀ߃;E|$<t>3L$Lt$\9D$ht+t6\$4Iω\$4D$@OUtqH$@OTH$3Ƀ;E|$D$X|$`t$\tD+t3H\$hD$4HJD${E3E333Lt$ ZjD8$tH$D$d\$dD8$tH$H$pH3H$HĀA_A^A]A\_^]H\$WH HcLHtYHW u @u ;u@`tHH;tH#u 3ۋ8LHHAH H MkXBDt "z3H\$0H _H\$Ht$ L$WATAUH0Hcكuy38y 3;;] HLIL-Z HkXKDL0u+sy8Ly H|$ E3E333ha~KDD0t  y )y8x H|$ E3E3333hH\$`Ht$hH0A]A\_@SH AHt"AtHIc3HHCCH [H\$ UVWATAUAVAW0H+HhH3H$ 33ELHcىl$@Eu3Hu.Jx!8#xH!|$ E3E333mgLLHIAJ Lt$PMkXAt8@@@t@u AШtAD t 3ҋDBvCmHJAD3HT$XHHV9YJ I t @g!|$LI܉D$XEwDt$X @HT$P E3 H-HTAA|Pt ADLL$]AD$\AdPHT$\I#t4IH+IHHL$DAH荘vHAHHL$DlUHd$8Hd$0L$XHD$\LD$DA3D$(HHD$ _HD$PHd$ H H LL$LHT$\I DBA+|$@9l$L EHD$PHd$ @l$\H LL$LDEH HT$\I T|$L|{D$@e@t@uE3f fD$DAH@t@u6L$DPf;D$DEtfl$D1f;D$DuxD$@A+A;\$LLt$Pl$@zet uLt$PJLADLJDADP\$L떋\$LHJ AD3I@ES Dt$@H$ 3ɋA+A;s&EH< u AHHHHHrH!\$ H$ DD+H Dt$@Lt$PLL$HH$ J I t5|$HH$ H+HcD$HH;ź A+A;N@E" Dt$@H$ 3ɋA+A;s1EHf ufAHHHfHHrH!\$ H$ DD+H%Dt$@Lt$PLL$HH$ J I J|$HH$ H+HcD$HH;ź A+A;?ENA HL$p3ҋA+A;s.EHf u fDHHHfHHrHd$8Hd$0HD$p+LD$pD$(U +3DH$ HD$ iD3HD$PHd$ HcH EH H LL$HD+I t t$HD;D;A A+A;I H!|$ LL$HEI[t |$H3~q~HlJAD@t A<$.dqyq H+H$ H3I H$H0A_A^A]A\_^]H\$Ht$L$WATAUAVAWH0ELHcكuq38p 3;;HLIL=HkXKL0u+p8p H|$ E3E333_mŰKD0tEIՋKp `p84)Kp8$p H|$ E3E333n_H\$hHt$pH0A_A^A]A\_@SH@HL$ HD$ DH@BY%|$8t HL$0H@[@SH@HL$ 3HD$ DH@BY%|$8t HL$0H@[Lº;̺Lº̺ΓLº̺鲓Lº̺間Lº˒̺zLº鯒̺^Lº铒̺BLºw̺&LºW[̺W Lº?̺Lº #̺ Ғ3f;@SH Lº3;uf_uH [@SH }3;uf_uH [@SH Lº蒑3;uf_uH [@SH !3;uf_uH [LEIA@wA  HAw EtD;tD+AH\$Ht$WHPHHHL$0IB Hu:lHd$ E3E333A\|$Ht HD$@qHtHD$0xu HHH|$HtOHL$@AHT$0ʑHT$0H踑HDžt;t+؀|$Ht HL$@H\$`Ht$hHP_H8=au8Hu')lHd$ E3E333r[HtE3H8H\$Hl$VWATAUAWH0-4IE3E3E3ۀ: EyEHLuI߀; t;at?;rt3;wt'kHd$ E3E333Z39 3A  IA׊AȃS~to  tLA+tBt+ tuEE׃@@@Ew@uqjEu]E׃ ]TtJt:A+t' tAu35Eu(E'EuEAu  s3 IߊEI߀; tH ZAHHI߀; t;=nI߀; tHjZAHTu HMHSZAH1u H*H@ZAHHI߀; t;HL$hEDID$ 谚D=!FD$hH&HfHf(FnHH\$`Hl$pH0A_A]A\_^H\$Ht$WH03ۍK?3|$ ;=J HcH"H<tkH@uV`rOGwOHH\LI@t HЋHlj|$ xHcXH HH H<tXH H0duH mH h L]I$$HOH H0L:IcHtccHcH#Hc(KHH\$@Ht$HH0_ffHM3M3Hd$ LD$(HfDHL$HT$DD$I ff@SH`Hu%0gHd$ E3E333yVJHtHL$@HL$0HL$0D$8D$HB至l$8x HL$0 HT$03H`[ME3uHhHHu%fHd$ E3E333U#Hd$@Hd$0HL$0D$8D$HBHhLHH E3MLHH вwLHH {oE3_MLHH `oGH\$Hl$Ht$WH`3MIHLL;u'eE3E333H\$ UL;tH;tL$AL;L$HT$@GHT$0HL$0ID$HBD$8AӋH;t7;|%l$8x HD$0HT$03t9\$8\.ÍCL\$`I[IkIs I_H8LL$(Hd$ MLHH HH8H8HD$`HD$(LL$ MLHH UHH8@SH0HMtGHtBHt=HD$`HD$(LL$ MLHH A`lyu0Sd" FdHd$ E3E333SH0[H8LL$ E3oH8HHXHhHpHx ATH0IIHHMMuHuH3HHI;vPcLFH q_HD$hLHD$(HD$`HHD$ uonc8"`cTcH %_LD HD$hLHD$(HD$`HHD$ 0DuHuc8"uC cD 9y8u-b" bHd$ E3E333/RH\$@Hl$HHt$PH|$XH0A\H8HD$`HD$(Hd$ H8H8LL$(Hd$ MLHH kpHH8H8HD$`HD$(LL$ MLHH k8HH8H\$Ht$WH0HHu$bH!|$ E3E333NQ A@t AA uMHAHH(DG$HWGGu_HtHI;sNH;HBHH;r H—HuHV H;rDH謗Ht7HHH=u5H ,uWHqAσti t>ttZH\$0H 14yHHH yHpH  yHHt[HxHJH xHHt5HxH$H xHHtHxH3ϓEuHCt:t5 t0~~&VHd$ E3E333EHHH\$PHt$XH|$`H@A\H\$Ht$WATAUAVAWH@3|$p3у tMt,t_UH!t$ E3E333>EL%H |$pL%H |$pL%wH p|$puhxHHukHHLcS9YtHIHHH;rIHHH;s9Yt3LaM,$L%H |$pvLIu3Mu AMu>̅t3t tt L|$8Dt$p1LL|$8HuDdžDt$pu9 qщL$0i;}*HcHHHd‰T$0 @%vI$t3R;u AA;t tuL;uD3L\$@I[8Is@IA_A^A]A\_H H\$Hl$Ht$WH0HH uHHu(SHd$ E3E333ɉBeHH DHHtHDH HHu:JSH%RH!|$ E3E333ɉBRIHtHtHH;t H HׅuR R3H\$@Hl$HHt$PH0_@UVWATAUAVAWHHH3H$H$ EEL3LL$0E!t$(AH|$0D$ 莓Dui)z!t$(!t$ E3EAI_LctbIHHHtJd$(LEAIDd$ %Dt McIʈHHEHu2tHH$H3HA_A^A]A\_^]AD$LILcutHd$ E3E333D?tH3롅u!T$(H=MEALD$ 7qE7&tMHH@΀0H;M|H H H8RD؉D$ =u E3D\$ AH8H(H8csmu+xu%@ = t=!t="t=@uo3H(H(H O3H(H\$WH 39=Vu\H(HHHD؀; w ;t3t);"u 3 输tHH< w HÊuHH\$0H _H\$Hl$Ht$WH0=u:\H[3Hu<=tH&H\uGHcgHHٹHtH ;teH;=ptCHcH,HHtrLHHtHd$ E3E333HL$0 HDAHD$ SEL$?HL$0 HDAHD$ 0EL$@HL$0 HDAHD$ EL$AHL$0 H DAHD$ EL$BHL$0 H(DAHD$ EL$'HL$0 H0DAHD$ EL$(HL$0 H8DAHD$ H@HD$ EL$HL$0DA^EL$HL$0 HHDAHD$ ;HL$0A HPDAHD$ HL$0A  H\D3HD$ X H\$PHl$XHt$`H|$hH@A\HSH HHIHKHKHK HK(~HK0uH mHK@dHKH[HKPRHKXIHK`@HKh7HK8.HKp%HKxHHHHHHHHHHHHHHtHhH\HPHDH8H,H  H(H0H8H@HHHPH [H\$Hl$WH y HH-W{tKhbbHHuMHHtHHtǃ`HHXH;t`HX3H\$0Hl$8H _E3HD8 t<0|<9,0HD8 u<;uLA@AIA:uHtBSH HH H; 5tHKH; +tHKH; !tH [HHXHhHpWATAUAVAWH@3HHHHX9Yu9YuLLH-ĉXXHDgIaHH;uAH(HL艿H|`LH;u Hlj9^HW`LH;ts~>HL$0AADHl$ HMHL$ HL$0ADAԋL}HL$0ADA L|$ tHAHI[I3<0|<9 ,0I8u;<;uLA@AI:uHLHEHHEHHEE&L;tEeHH;tHH;tuHH(LLH(3L\$@I[0Ik8Is@IA_A^A]A\_E3HD8 t<0|<9,0HD8 u<;uLA@AIA:uHSH HHIH; tEHK H; t3HK(H; t!HK0H; tHK8H; tHK@H; tHKHH; |tH [HHXHhHpHx ATAUAVH@E3HHHL!`D9auD9auE3H- XH׍O:^HHu 8H]LHu HKD! D9fhH]LHu H$Iσ ~8AHEAQHL$0DHD$ HM AHL$ AQHL$0DNjHM(AHL$ AQHL$0D AHL$0 HE0AQDHD$ ALu8HL$0AQD Lt$ AP HE@HL$0AQDHD$ bAQ HEHHL$0AQDHD$ @HL$0A HEPD3HD$ HL$0A HEQD3HD$ HL$0AT HERD3HD$ HESHL$0AUD3HD$ HL$0 HETAVD3HD$ HL$0AW HEUD3HD$ HL$0AR HEVD3HD$ `HL$0AS HEWD3HD$ @ t HHIII<0|<9,0H€:u)<;uLA@AI<uH!HLH(HHMH(HHHMH(HHHMAEMtA$H HtHHtuH(SHGL LH(3H\$`Hl$hHt$pH|$xH@A^A]A\3H(;GH ~H9ts|u3HH(@SH0LHt HtMu,D|#Hd$ E3E333ɉH0[À9t HHuHuAAIHtHuHuA#"3H8HoH3HD$ E3LL $LL$LL$LL$LDIBIAA:u$ AIEAIBtIcHL$ H3荽H8HHXHhHpHx ATAUAVH 3M;L|?;t=IM>+HcLMK;u KLIM }}u;~;Hl$HHt$PH|$XËH\$@H A^A]A\@SH IHC$C H [H\$WH0HmH3HD$(HHHtf9taHh&gtQHT&HTuO$DHLD$ P stBH\$ HHL$(H3MH\$PH0_ËO$LD$ A1u3H%HL$ u6E3H%A@f; tDHA r3̊LE3'BI<w B<wAEFLЄuA3ҊHH ɌH;t2g6Ht(HHtH H;tG6HtHHH .6HtDMIH3H\$pHl$xH@A^A]A\_^H8x ~ u~1~ ~#Hd$ E3E3338H8É e̋eH\$Hl$Ht$WH`3IHHL;u3H;u)E3E333Hl$ H;tIwHL$@I舲L\$@AS;uHfAr fZwf fAr fZwf HHHt f;tf;t+VACHL$@LˉD$8t$0AH|$(t$ b;u'@8l$XDHD$P3@8l$Xt HL$PL\$`I[IkIs I_@SH03L9H;u&SE3E333H\$ _H;tIwAfAr fZwf  fAr fZwf IHIt f;tf;t+E3H0[H\$Ht$WH0HHtKBHHHKYHHt-HVLH0tHd$ E3E333KH3H\$@Ht$HH0_H\$WH03H;t H;vL;u0f95E3E333H|$ ~H\$@H0_LAIfAIf;tHuH;uf9"3H\$Hl$WH0Hd$@H,{HHtud$(Hd$ DL33NHctxHϺvGHD$@HtaLD33ɉ|$(HD$ t:HL$@3;xHHHu3H\$HHl$PH0_HL$@Ht HL$@KHHXHhHpHx ATH0HzE3AI;uf=tH@H\CfA;uGHcFHH%zI;tHQzfD9#thH@f;=ptCHcHfFHI;txLHHA;tE3E333Ld$ HHcHCfD9#uHyHWL%yL'3H\$@Hl$HHt$PH|$XH0A\H kyL%_yH\$Hl$Ht$WH 3HH;u3Lf9tHf9uHf9u+ǃHcHEHH;tLHHHHljHH\$0Hl$8Ht$@H _ f;tHfuf;uH3HHXHhHpWH`HHHHIIIyHL$PHt Hd$PHHHY3H\$XHl$`H@_HL$PH\$WH0IHHt23HBHH;s$ Hd$ E3E333 3]HHHD3HwH |PLHu-=tHt5uHt Ht H\$@H0_H\$Ht$WH03HHHt13HGHI;s# H!|$ E3E333 3=IHtuHHHHsHHtH;sH+H 3LHH\$@Ht$HH0_H8u R Rx.; s&HcH HHHkXHD@" Hd$ E3E333 \3H8HHHHPL@LH SWH83Hu% Hd$ E3E333jH|$XطHP0>ķHH0S贷LE3HT$PHH0V虷HP0zT舷HP0vH8_[HHPL@LH H(L@aH(HHPL@LH H(L@aH(HHHHPL@LH H(L@3naH(HHPL@LH H(L@daH(HHHHPL@LH H(L@3:aH(H}T3HH9HH#H H UT3HH9 H\$fDL$ UVWH`3IHHH;uL;vH;t)3H;t Iv$E3E333ɉHl$ 6oH$HL$@L\$@A9k$f;vLH;tH;v L3H*t@8l$Xt HL$PH$H`_^]H;tCH;w<@"E3E333ɉHl$ @8l$XHHL$P7H;t@8l$XHD$PH$$AKHD$8Hl$0L$A3҉|$(Ht$ ȃ;t9$H;thzH;tH;v L3H_"E3E333ɉHl$ @8l$XgHD$PVH8Hd$ H8HHXHpWHPHHH؃IЉp ,L\$0Mc HD$0HL$xDHHD$ Dt$x|$Ht HD$@H\$`Ht$hHP_H\$Ht$WH0Ht$PHd$ HL$PLcDH%H\$@Dt$PHt$HH0_@SH B@It HzuA&Bx HHau H [̅~LH\$Hl$Ht$WH II@LH@?tH\$0Hl$8Ht$@H _H\$Hl$Ht$WH A@@IIHt IxuA7~3MLHHŃ?uU8*uLHֱ?H\$0Hl$8Ht$@H _H\$UVWATAUAVAWHHPH3H$3HHL$hHHL$xIMD$`DD$TDD$HD$XD$PE3I;uA3E3E333H\$ 8$tH$AC@L HZHaA;t(t#LcL IAHMkXMɀ LL A@8u)A;ttHcHƒHHkXIB8tA3E3E333H\$ 78$tH$AKE3I;t@/ADT$@DT$DAL$A:H$AHA;H$E<3u2uHA&*A0uA AA׸DA;I]IA0uA At~A;u EMIDAc;IcH @I;u"HD9u HfDH$@ HL$LAE3A;tKD$DAA;u AEI%AcIcH @I;&Hf$@ D\$LH$@ DMD$@ A@A;I;AcUIcH @HD9Y@D eg~in#opsVuoxO'AcIcH @I;uHD9jHHAt5I;D$HDNH A+fD9t HA;uH+HI;HDMH A+D8tIA;u+sAA$AEAQQD$T0T$PD$UAEy}A vA;u I}I%AcIcH @I;HH8TE3A;D$HA tfH$D$DA@A T$PAsJA;u MEIAcBIcH @I;ufHD9u A sMA;tAcIcH @I;u"HD9u HL A A@tSA;uMEIAcIcH @I;uHD9ATHLA;uEEIAc@IcH @I;tHDpA@t6A;u McEI[AcIcH @I;pHLc4A;u EEI%AcIcH @I;:HDE3A@t M;}IAAr A rEE;}EAD;DO$IH$? H#ʉL$PAE+A;M;t3IIcHLB09~LjI+H$H$? +IA D$L|E3A;t ;0nI+D\$L0^DźbE;H$@ }AIu @guAEHu -7H >HHd$ LL$DHT$@AX==qYxu}%}=gXHd$8Hd$0HD$HLD$@A3D$(HD$ lZH ]>Ht0Hd$ LL$DHT$HDXtfD$@ =HL$PH3xHhH\$Ht$WH@H3ۋH;;u+H\$ E3E333Q HHHH|$0H;t"HHt$Pmf;uιnH\$XHt$`H@_@SH ٹi$ع3fH [fL$SH`f;u 3ff;sHV;fHf#nHL$@I {L\$@ACLD$pHL$@D$0ACDʉD$(HD$xHD$ 53;u fL$xfD$x8L$XtHD$PfD$x#H`[fL$SH@f;u3of;sH:H#P=CLu<3LD$PD$03H @5D$(HD$`DHD$ 4L$PE3H@[k̍A Hl$WHpHcHL$PysbHT$P ~LD$PHT$PH@xtHH8|$ht HD$`HD$P ~6HT$P@.jt@$@$Ƅ$ *@$Ƅ$HL$PD$@L$AAD$8H$D$0HD$(T$ QHL$P2$t $ |$ht HL$`H$Hp_H(=mJuAw 3mH(HHXL@HHUVWATAUAVAWH3AAH@ox@$HxEtxAl$pDHL$T9;tE3E333H|$ r@u |$TtE AA#Ⱥ;tT+t:;t18 ^E3E333H|$ D@tuA@D$At,t#tt@uD;A AϋƺL$H#tF=t8=t*=t=t*=t&=t;t/A AADl$PsA"$AEDDDl$P@@tAADl$PL$H s ADl$P@ tA @t ADl$P1u!8 H$DD$HH$H|$0LL$`ADl$(l$ RHD$XHA#;uC@t9DD$HH$H|$0ALL$`Dl$(A׉l$ 1RHD$XHu;Hc L-,gHHHkXIDdR[8HR;uMHc L-fHHHkXIDdQȋHL$XQ;u A;uA@ uAHT$X Hc L-wfHHD IDHkXDtHc HHHkXIDd8A$HD$LEAtx Eă2D$Du88tP }Z HT$@A@|$@ ;u|$@uHcT$D :/t E33-2tE<@uD$T#u #=@tJ=t,=@t%=t+=@t$=t=@u($#;uD$@$|$DA@A%=@$=t|=;A;vv8l$AA+ A;PD$D E3sH;t E33bH| HT$DAZaA;t uk|$DuD@D$D$D=u X4=u# E3Az0D$ E33X0;;vqA; E3H; E33Hu8D$DA HcEHTDD+famD;AHc @$H@HHkXIDd8@l8HcHƒHHkXILƀd8D8@8|$Lu!@tHc HHHkXIDL A%=AHL$XMD$PDD$HH$H|$0D$(ALL$`D$ AuMHu6qMLcIAHMkXIDBd BHcHʃHHkXILH H$HĀA_A^A]A\_^]HĉPL@LH VWHXH`E3HAEu(Hd$ E3E333=H$HD@d$0DD$(D$ @DLHT$@HL$DvD$H|$Dt9t(Hc|$@HHHL_aHkXId|$@V|$@t G0HX_^Ht$WHPELd$@3H$Hu(8Hd$ E3E333N3Hu(8Hd$ E3E333$t8Au%8Hd$ E3E333Ѿ`L$0DL$(DT$ DHHL$@'D$D|$@t,t!HcHHL`HkXIdtHt$`HP_LECMK SH@d$(MKIC MKD\$0L$0EˋH@[H8ADL$`ELD$(HL$ DAIWH8HHXHhHpWHPHHHHIIm3H;u@8l$Ht HD$@3HL$89iuLHHJ[H;u<E3E333Hl$ ]@8l$Ht HD$@-H;tAHHDL tUH;ufDLZ@8/uCfHf f;Qr f;QwfQ$f;Qrf;QwfQDtDHIELtNH;u^H@8.ufQfAHfD fAfD;Ar f;AwfA+f;Ar%f;AwfAADt fAf;uf;H;u@8l$Ht HL$@H\$`Hl$hHt$pHP_E3 H\$Hl$Ht$WHP3IHHL;u3&HL$0IkL\$8A9kuLHHH;u<0E3E333Hl$ z@8l$Ht HD$@H;tAHHFDt-H;uFDu[fG@8/uf ff HHFDt#H;uH@8.uf ff Hf;u&f;tH;u@8l$HHD$@@8l$Ht HL$@H\$`Hl$hHt$pHP_E3HT$L$SUVWATAUAVAWHXAHcADd$4\$8A;u38 3;;[HLL IKHkXD1v8~;H;tD|18AEAAσtu ШtLdШtA;AB؋LH;u =$3DBL ELKL\0@KIA D0HL0 A:;AMKAAIUAhDD0 D:tbKL09A:tQ;tM KAHAhDD09Au.KL0:A:t;t KHAhADD0:KLL$0DH 1H|$ D;HcT$0;H;L7KD0yA;tA} uL0d0HcIMIHD$@L;: A$< @:t HIHD$@HL;sID$8 u ILKLL$0H$H 1AIH|$ C;u C;u{9|$0tuLTKD0Ht"$ t'@+K$D1 GI;u$ u 3$AHY$ LtL@+HL;d$@KD0@uL0 A$HËA+A;AI+uIAI;rI+AB8Vt BV;u*A;uHcH^KD0Ht;I߃L0 |KI߈D19uKI߈D1:HcH+$EHc.D$8L$A+DMʼnD$(3ҹL|$ A;u BbADd$4;HwJ@|0H;׺ tfA9UuL0d0HcIMN<(M;{ A$fEf;tfHI%IGL;sID$f9u ILKLL$0H$H 1AIH|$ @;u!A;9|$0LKD0HtF f9$tKf+$KD1 $KD19KT0:WI;u f9$uf>$HDBk Lf9$t Lf+HM;"KD0@uL0 A$fHA+Dd$4L$M;tI`gADDAi?u muD뮋$3)8 E3E333H|$ HXA_A^A]A\_^][H\$Ht$L$WATAUAVAWH0ALHcu3ۉi 3;;=#TLLIL= TAMkXKBL u.8 H\$ E3E333[A;u+H\$ E3E333nKBD tDIՋs s)c H\$ E3E333譱H\$hHt$pH0A_A^A]A\_H8Hu&Hd$ E3E333gHLH G33<H8̹邧H"t ahHt Rk"t_H$>HL$03A VH$3HD$@HD$0D$0@HD$ H$HD$(I>HL$ 6>Ī̋:"D#AD#D D%"IDL$(EЋLAH%;H\$Ht$WH@HHL$ IA`DL$pLË׋;|$8t HL$0H\$PHt$XH@_@UATAUAVAWHPHl$@H]@HuHH}PH H3HED83MEDHDfD;u7E3E33;;t582<D8xEDD8E;D;D;u'uh;uHpE3E3AA:LcD;u3~g3HBIHrXKL$Hw1HAH;w HH5)H+H|$@H;tGcHH;tHHH;tELAA%:;t8E`A3H\$8LNjH\$0;u \$(H\$ D$(L|$ ;<HO9u@HL$@LΉD$8\$0AH|$(\$ u脨y|$Xt HL$PH\$pHt$xH`_H(=qufE3H(H\$Ht$H|$ ATAUAVH0MMHL>VHx0H|$X3Hu%Hd$ E3E33319HWH MMHHA֋H׋HqWH\$PHt$`H|$hH0A^A]A\MLHH 3MLHH $MLHH LHH E3LHH ߢE3LHH OE3HHHd$0d$(AH E3ɺDD$ "HHHHHHd$0d$(AH pE3ɺ@DD$ U"HHHH(H }Ht HtK"H \Ht Ht2"H(H(AAMD}3LL$PDIA)!H(H\$Ht$WH@HHL$ AIE}3LL$pDH׋ |$8t HL$0H\$PHt$XH@_HHXHhHpHx ATAUAWH H33DG9LHtPDG3ҋ#Ht=HH+H;!AWHM!HH;u1 H\$@Hl$HHt$PH|$XH A_A]A\úDDI;HEMNjK,t HH+H;~դ8u 諤 HAԋ LH3 U}]E3HՋ>HT5HHHHHu%B WH HE3IՋH3Ht$H|$ L$ATAUAVH0HHcu F ;54LLIL54AMkXKBL u0谣 舣 8Hd$ E3E333В3Hu-t L8Hd$ E3E333蔒d}KBD tH׋r  8+ 8Hd$ E3E333.Ht$XH|$hH0A^A]A\H(HcH(H\$Ht$WH HcANHuo RDE3Hu*3t wHHH3HHHkXdH\$0Ht$8H _H\$Ht$L$WATAUAVAWH0EDHcكu38ɡ 3;;2HLIL=2HkXKL0u+蚡8s H|$ E3E333轐mKD0tEAՋ+ @8)+8 H|$ E3E333NH\$hHt$pH0A_A^A]A\_H\$LcH1MAIMkXJ BD8F\ADA@tXtHt(t uHBLJBd8BL80BLJBd8BL8BdBLJ Bd8EuA%@H\$H8@t7t/t'۟Hd$ E3E333$ #3H8H8Hu'螟Hd$ E3E333 3H8H\$Ht$ L$WATAUH0Hc@tHt@t8t0t(#Hd$ E3E333lu ;=/HLIL-/HkXKDLu%訞 Hd$ E3E333]KDDt Ӌb R#I Hd$ E3E333蒍H\$`Ht$hH0A]A\_%l%n%p%r%t%v%x%z%|%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%V%@%2%$%%p%b%T%F%8%*%%%%%%%%%%%%%t%f%X%J%<%.% %%%@SH0Mыمt*;tA;u!HD$xDL$pLD$hHT$`IHD$ H0[H\$WH H3HHWLHt4HȊt&<"uH AIHÊutAH>3H\$0H _HHXHxL` AUAVAWH0LHE3L!xAOu3|L;3HL$`WtuL!|$ E3E333uHL$`Ht3uH\$`5Ht3Ht"3H HH HEMt I^LHSBL8 DQHHLIHvtHd$ E3E333KHLl\A8Uu:H'L;t_LWIHvtIHd$ E3E3332A}/t+L#IHhvtHd$ E3E333LJMt'MIHH0Hй@H0]@UH0HMPhH0]@UH0HM`QH0]@UH0HHMH@H0]@UH0H4H0]@UH HH ]@UH@H}Dt7}Ht'HcU@HHHL HkXIdU@H@]@UH@H}@t>}Dt*HHc HHLt HkXIdH hH@]@UH0HM`QH0]@UH0HHMX?H0]@UH0HMP"H0]@UH0HM` H0]@UH0HMPH0]@UH0HH0]@UH HHcM HH!H>H ]@UH HH ]f///v//T/B/2/.)).....z.h..F+T+d+t+++++++++,&,:,L,b,v,,,558+h5\5L565&5554444444j4Z4@4&4 433333&++ +****z5****r*d*N*>*(***x3f3V3>3503/ 00$0<0V0t0000000011101B1V1r11111112"2,282J2Z2j2v22222222223/,,-P.B.,. ...----,---n-b-N-:-*-"---,///ؤ@ @@0@(P@]@@ IZCreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.3\message_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBInstallation failed.no such folder (%s)unknown CSIDL (%s)sSHGetSpecialFolderPathAfunction not availableshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissiSOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOSErrorValueErrorbuiltinsPyLong_FromVoidPtrPyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleRunning Script...Could not open postinstall-script %s Py_FinalizePyRun_SimpleStringPySys_SetArgvPy_Initialize*** Could not load Python ***PyErr_PrintPy_SetProgramNameOut of memory!Running the pre-installation script failed Can't load Python for pre-install script (%d)Runtime Error100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Could not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py)Times RomanSetup %sCould not register window classSetup.exeSetupWindowClassThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreDon't know Python's installation typeStrangepython%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:UninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** a%s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINE*** Installation finished %Y/%m/%d %H:%M *** Postinstall script finished. Click the Finish button to exit the Setup wizard.*** run_installscript: internal error 0x%X *** 300 Run Script: [%s]%s \Scripts\Please wait while running postinstall script...-installIsUserAnAdminSetupFailed to start elevated process (ShellExecute returned %d)runasif exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script*** Could not run installation script ***-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removedYou do not seem to have sufficient access rights on this machine to uninstall this software%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %s%d Root Key: %sAre you sure you want to remove this package from your computer?Please confirmOut of memorycould not open logfiler2. arg is not -u-uWrong number of args%s%cimport py_compile; py_compile.compile (r'%s')Py_OptimizeFlagPySys_GetObjectCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Bad user_access_control valueoopsnoneautoforceuser_access_controlinstall_scriptnamemetadatatarget_versiontarget_optimizetarget_compilebuild_infoinfotitleSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archive0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfainvalid distance too far backinvalid distance codeinvalid literal/length code`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checktoo many length or distance symbolsinvalid distances setinvalid literal/lengths setinvalid bit length repeatinvalid code lengths setheader crc mismatchinvalid block typeinvalid stored block lengthsincorrect header checkinvalid window sizeunknown header flags setunknown compression method inflate 1.2.3 Copyright 1995-2005 Mark Adler  #+3;CScs !1Aa  0@`@@incompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionaryе@@8x@@@@x@h@P@8x@fFK I*TK ITTK IO :i+00SBi+00@_dP/N !:i+00'":i+00 E%6NKKº}`fUܭHb0RF#/xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF΋!  Hx5i+.b`ODV A H FM^2mFT d_N" (2W]/4*&{-zeG'{-ph}OUBl OU3(9O> G e+.bchOU4^ ;ݧB}/NKfNr@"=3H$Oڠ'my4[ J1B&M[Or G:ᠷqEJ ǬMWs5i+.bs5i+.bs5i+.bw~s5i+.b%e{HqC,㐲RO$[Dt.|I)sO>+dWnO@;>V;>V Wt חb@J7<}iFϦODa'wj5Ob0wDObAGQ`{FL!mv`[c'wj5Obd'wj5Ob6J[CAVgqe'wj5Ob5i!Lz)zR88`[|^1/`[@L\J7@呰 חbu`ެ@`ެ.PRO—-T'tE`ެA`tpZdl?<W4plTI?rPB,ɨ=O${aPo0p,oiyŜ?Oɝa4Oص,OꙠς`RWpO6OyѦjc(=O0%G`묡51Mlg~6JNfs3K@~Oq!2)wKL+2V4K@~OqT'B6Q:.7V`ƆEz5K@~OqiI~+.ͩ pO]_eOkm'WFAOлP0 P0 P0 M]`gI6FOEг]K $^5N$̈&HS3M17i;'$9Y:Oh7%9Y:Oh7&9Y:Oh7'9Y:Oh7ի|I˃(9Y:Oh7!FsGF{H@FS2IEt$#CȫR e.{ JOe/P($IZ^9$\E9 O奄`OO\;x8WFTpj@wiKw^ևA)!\_[C+dWnO4DLe+.bSmb`ߌ #Or'>O.jxO^QmOd4'>Or3߷;`[MO KLb`wG:J'i>VMYFDAt;&OF} Ҩ\I;%S| *E yЎf|txM NI{@ >KJ\FЗ4mc-NvEc7VfCNItwׄ8A!ӱJ'8EK}4@ VqC(DW@XzvF@S>LNdL֬+ o.Eцݷ"JL :̿,LB)隇A }jL^6CTw]+.DJQS[bHNAFPCU .4zl'K@-tК#FlHiawhM0Y3S!AbostA^?UX2NfHyu 5ꥂG)]/qNnN9jI=W.I|Kg 4cH~%]bM I]7BWGCQl2$HܨEye64ۅ>eL:er='oOU{p OsCů$53QB`ϝ]v+qAO;ل.CZ0YcwN]ND.Q1RWHΨ}'CBg (#l^"`G3qs03NvFZ9\;û@Z|KJ$M>MEQ wmjKDWw? ec E kjO}c^NIe2mG)fpNr-O&oO}N8úGˢ)qKmHB" C[E|ti!OL'`gp+J=$?xԒhKGM]k>+$%|QOz)(BqF[͟WÅm]rLwx,4Ku@ +׉#G`` WG 35A AlG ؂تI`FtQ<[MEĀd_NM&uf4L3lEZIC~"@0(9A8L"k1%B T #F@FDF[Fʙ^AiXשFh Mm8gh z0Gd<O8m xO4yO"FFFMm8gh 0F1F2F3F%F)F*F0:s*Dw=IF y.Y+F&FEFGFHF:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/Oǝv\Wސy(_FFFFFFU 8r+C+n44FâRX0eu{ڮP9Vu{0ne0E Kvne yOܦϫ|x O jIOQnO09$-1.E^*onePone |~|?ne? PE^#1$-?W2$-?W2$-pw~?neg@ne˳j@ne˳j@ne?W2$-~{S^BEy|KDphKΔӳOհrIOxhO{lhO\`OOrOh7y) Oh7BTyI6 E9A!8ҏFs%E~2]rgO!B> 9}Nr*GݓkFN]ͷghhϓgAc*^Z%Ȕ2AeqKW';?B@ J$SQ`Ɔ(œO>1s-O(hHjxOi QD(ߥl+ rˆLmCBUa{Ӱ~C.`1 y/DĊY F;3bpc(Jg Дէ{E] E)ПS-oEH?syYz(XGA'qQU AJ s Y!WOZ{*lg(M2(TfC'>|a.  O;O.K[K8H]҇26 -&{-r: %wCjW'tVamy!@iaWBVm`ɠI-`:Bn5OCښL%2J4{[kYs=BMQ!B\[/B{NsASÖ.̆I#t9JDf?kјH"tŻ-Gs?zZAe!`[ǽ6NXX$  KiiőԞ(LqmjK H(.~,-Y@o3\.Q Cpg{L\l%IT߁KI s<_z\ LKo(t;sM|@)^vJYӞ~+IzÊChsxDpWJ?,CP0DOAoZ\q"tDk׾ TLrTIkE a`NNe76_I|kHrYM>s: .jxOˡd:aDX7iii9P5}+EutX(T6QB~ۜC]_#ͼ_Ld=xr|խhG2`?uIp4Bf6חKt3 SNwL1"(iv@ YGح+ObC4`[ԄLr?RJ{,AsEOWL"O7v8yOhKKt&1Zs~:6 B}Ftr⋪GMv2̤ pDʹfD.b[GvtH; zr\GڙYkH?x9J4uY&HxHϣ'GVBeUNOyדسDg,ݠeL3"5/QqCAwSk5 X;-3B{_41lxƱLb VBPoz5zD #D@Fgm[M/BT|\?@zpDF[0 49Z I}AaB}KX䌠%D|DZ#&oI Qd5CvSdn0@DH&'E4VwҁnB*O&-bfMlV!jt€I$[a#FVODJ hFXapf_:qJ?򥸱PpZdFK6eJ7`, :i+00Fh3MnMܙS{5)xKt O3CKsw`$D&l;0MHֿRUBu(dT&arrCuƋ.|uU:WPHw[ێ Z܊M`* !sG3^F0MJSkyZ 8y M3,/KqI\M;TQI![Y ,!PCsg?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_.,._;=C=;runtime error TLOSS error SING error DOMAIN error R6034 An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. R6033 - Attempt to use MSIL code from this assembly during native code initialization This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. R6032 - not enough space for locale information R6031 - Attempt to initialize the CRT more than once. This indicates a bug in your application. R6030 - CRT not initialized R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point support not loaded Microsoft Visual C++ Runtime Library ...Runtime Error! Program: (null)(null)EEE50P( 8PX700WP `h````xpxxxxccsUTF-8UTF-16LEUNICODE SystemFunction036ADVAPI32.DLL ((((( H h(((( H H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~united-statesunited-kingdomtrinidad & tobagosouth-koreasouth-africasouth koreasouth africaslovakpuerto-ricopr-chinapr chinanznew-zealandhong-konghollandgreat britainenglandczechchinabritainamericausausukswissswedish-finlandspanish-venezuelaspanish-uruguayspanish-puerto ricospanish-peruspanish-paraguayspanish-panamaspanish-nicaraguaspanish-modernspanish-mexicanspanish-hondurasspanish-guatemalaspanish-el salvadorspanish-ecuadorspanish-dominican republicspanish-costa ricaspanish-colombiaspanish-chilespanish-boliviaspanish-argentinaportuguese-braziliannorwegian-nynorsknorwegian-bokmalnorwegianitalian-swissirish-englishgerman-swissgerman-luxembourggerman-lichtensteingerman-austrianfrench-swissfrench-luxembourgfrench-canadianfrench-belgianenglish-usaenglish-usenglish-ukenglish-trinidad y tobagoenglish-south africaenglish-nzenglish-jamaicaenglish-ireenglish-caribbeanenglish-canenglish-belizeenglish-ausenglish-americandutch-belgianchinese-traditionalchinese-singaporechinese-simplifiedchinese-hongkongchinesechichhcanadianbelgianaustralianamerican-englishamerican englishamerican@ENU@ENU@ENUx@ENAp@NLB`@ENC\@ZHHX@ZHIP@CHS8@ZHH @CHS@ZHI@CHT@NLB@ENU@ENA@ENL@ENC@ENBp@ENI`@ENJP@ENZ8@ENS@ENT@ENG@ENU@ENU@FRB@FRC@FRL@FRS@DEAx@DEC`@DELP@DES@@ENI0@ITS @NOR@NOR@NON@PTB@ESS@ESB@ESL@ESOp@ESCP@ESD@@ESF(@ESE@ESG@ESH@ESM@ESN@ESI@ESA@ESZ@ESRp@ESU`@ESYH@ESV8@SVF,@DES(@ENG$@ENU @ENU@USA@GBR@CHN@CZE@GBR@GBR@NLD@HKG@NZL@NZL@CHN@CHN@PRI@SVKx@ZAFh@KORX@ZAFH@KOR0@TTO(@GBR @GBR@USA$@USA  6 - 0OCPACPNorwegian-NynorskGetProcessWindowStationGetUserObjectInformationAGetLastActivePopupGetActiveWindowMessageBoxAUSER32.DLLEEE00P('8PW700PP (`h`hhhxppwppCONIN$CONOUT$TMPRSDSXJ\I ORo:\src\python-3-trunk\lib\distutils\command\wininst-9.0-amd64.pdbdT42p dT4pT4 p) 4=4 p`PT42 p20  4 2pd T 4Rp 4, *p@ X0 4Y Vp 4 2 p`P9 %+t$d4# Px dT4p t d T 42+ T$4# p ` 4 pP*p` d T 4 rp  4 Rp$ , p`P0P p`P00 td4  4 rp!00' T342, p `P  4 Rp204 "t1"d0"T/"*@( dX4WR p+@$d241. p`B b0d T 4Rpd T 4Rp2020d 4 r p7 %d%T%4% pP' T9482 p ` t d T 42BB&p`P00  "0/ d T 4 p0bt4t d4td T4Bd'4&$ pB b p`P0  4 2pdT42p  p`P020dT42pd42 p d T 42p) 4 p`P20B  R0  4 rpd42 p2020 tdT4bbbb  2020d42 p4 R p`P2P200̝؝`RPd 4R p0<R`rP  p`00mf`RPbp`00D`BBBBB20B2020BB p 0  b  4 pbdT4pbbbb  4 RpRP4 R p0` dT4 RpRPt d 4R0Ю`B tdT 4  dT4p 4 p`P  t4 t d T 4 R- Etd4C P` T4p`bbbRPt d 4 r0Acah|aR00Bb  b  bbb  bBBBBr0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r020r020!! d 4T 2p!p!  Ԃtd4pPd42 pRP  rp`00,a  4 2p20202042 p  4 2pbb  4 2p2P d4rp0Ga20202P d4 p0>J+iaB    0  4 2pbd T 4Rpbb202020rP p`001aT 4 R p ` dT4p2PB0(a2PB0GMa2P200pzat d 4Rd42 pbbb t d T 4RBB2020R020R0d 4R p20d42 pdT42p$d4 pp2P  4 2p0Rar04r p`P82P  t d 4R0bBd42 p  20202P200bR02P2P2 00 14bLsTb2P2P  4 2p0  mb & bbp`P0 t d T 4Rd 4R p 4R p`P&  p`P0) 4MB p`P$  p`P0 t dT42RPRPRP t d r0bc#b=bB2P2P  4 2p0"-cBi c  4 2p202P2P42p09c @Yc2020dT pBBB t 4RB  4 2p20dT42pd42 p 4rp`Pd42 pd42 p 4R p ` PR020dT42p t dT42 t dT42 d T 42pd 4  p d T 4 rptd42dT42pB2Ptd420c44rc  4 2pdT42pT42 pb2P  td42077W7c2P2P t 4 r0Y88c89cBpPt d 4R0j::c T4 p `  t d 4 0==T@  4 2pt42   2020dT42pdT42p) 4dZ p`PbRP t d 4 R0NO)dbbbbbb2Pd 4R 0PKQAdd42 p202P2P  t d R0RRZdVRRd2P42 p0DSNSdd T42pd42 p20BBd42 p) 4ZP p`Ppd42 p20BBd42 p+ 4ZP p `Pp  4 2pRPd 4 Rp0o}}d20/ 4qf p`P RP d4 Rp0(Ydr0r020202020d 4  pb T4 R p `2Pd 4R p0d0dT4pbbR0b t d T 4Rbbbd 4R p d T 42p202P t d 420"eB  4 2p  4 2p  4 2p2P B0W e B0B B0BdT42pB2Pd42 p0МAeBBRPt d 4 r0ǞҟWeRP d4r p0Kmed T 4Rp%  p`P2P b0ǥeǥBB  4 2pd T 4Rp t d T 42d 4 R p t d T 4 r  4 2pR0d42 pd T 4Rpd T 4RpRPR00eRPt d 4R0H,eRPt d 4R0yae1 dT4pBBBBB- Etd4C PXd4 p1 5#td43r P8d4 pB t d T 4 r2 0T42 p  20 dT4rp2 0 tdT 4 rBR0b  t d T 4220 4 Rp($d4 p!4p`P$T4 p 4 p202020 t d T 4Rb  T4r p `bdT4pR0d 4R p  4 RpT 4 R p t d T 4RdT42pdT4pd 4R pT 4 r p  4 Rpd 4R pbRPbp00CeBBBBB4p ` Pbd 4  pd 4R p20dT42pdT42p) 4dZ p`P  t420dT42pdT42p) 4 p`PH RP4 R p `0#f  4 2pRP d4 Rp02f20  4 RpRP4R p0IfdT 4 pPRPd 4 r p00af2P200`kzf  0  r0  T pB! !4!p`PrPp`0%&frP  d p0+'O'fr 0bdT 4 pdT 4 p  p ` P 0RP d4 Rp0342gbd 4 r p- Etd4C P@d 4  pd 4 r p  4 rp tdT4bbbb20b(' EC p`0PpdT 4 pbd 4R pbbbd 4R pbb t d T 4RdT 4 p$ 53 p`0PXd4 pd4 pBRP t d 4 R0NNIgBBd 4 r p t d T 42RPt d R0pSSagBd42 pRP d4 Rp0HUyUxg4bbRPd 4 Rp0X;XgR0  4 2pRP  t 4 R0\]g2P2Pt dR 0 ^J^g]]^gd 4  pR0B$)Pp%,p(\.pt$.hp`$/p(/`t)/Huf///v//T/B/2/.)).....z.h..F+T+d+t+++++++++,&,:,L,b,v,,,558+h5\5L565&5554444444j4Z4@4&4 433333&++ +****z5****r*d*N*>*(***x3f3V3>3503/ 00$0<0V0t0000000011101B1V1r11111112"2,282J2Z2j2v22222222223/,,-P.B.,. ...----,---n-b-N-:-*-"---,///PropertySheetACreatePropertySheetPageACOMCTL32.dllSetLastErrornCreateDirectoryAGetFileAttributesA MapViewOfFile{CreateFileMappingADCloseHandleSetFileTimeDosDateTimeToFileTimeGetLastErrorzCreateFileAOUnmapViewOfFilelstrlenAMultiByteToWideChar"GetProcAddressLoadLibraryADeleteFileAhReadFileSetFilePointerGetFileSizeNFreeLibrary SetStdHandle>GetStdHandleLocalFreeIFormatMessageA\GetTempFileNameA^GetTempPathAGetModuleHandleAzGetVersionExAResumeThreadSetPriorityClassGetCurrentProcessGetCurrentThreadSetThreadPriorityCreateProcessAGetModuleFileNameA}RemoveDirectoryAGetPrivateProfileIntAGetPrivateProfileStringAGetModuleFileNameWKERNEL32.dllMessageBoxA&GetFocuswsprintfA|SetDlgItemTextAbSendMessageAPReleaseDCGetDCPeekMessageADispatchMessageATranslateMessageEndPaintqGetSystemMetricsBeginPaintDefWindowProcAUpdateWindowShowWindowgCreateWindowExA7RegisterClassALoadCursorA MoveWindowGetWindowRect"PostMessageAWGetParent]SendDlgItemMessageA!GetDlgItemvSetCursorUSER32.dll4CreateDIBitmapDeleteObjectSetTextColorTextOutAfSetBkMode^SelectObject:CreateFontARCreateSolidBrushGDI32.dllfRegQueryValueAHRegEnumKeyExA*RegCloseKeygRegQueryValueExAZRegOpenKeyExAwRegSetValueExA2RegCreateKeyExA7RegDeleteKeyAARegDeleteValueAADVAPI32.dllShellExecuteASHELL32.dlloCoUninitializeCoCreateInstanceACoInitializeole32.dllSGetSystemTimeAsFileTimeHeapFreeHeapAllocFileTimeToSystemTimeFileTimeToLocalFileTimeGetFileInformationByHandle=PeekNamedPipeGetFileTypeEnterCriticalSectionLeaveCriticalSectionGetDateFormatAlGetTimeFormatAHeapReAllocGetModuleHandleW/SleepExitProcessqGetCommandLineA<GetStartupInfoA;TerminateProcessLUnhandledExceptionFilter#SetUnhandledExceptionFilterIsDebuggerPresentRtlVirtualUnwindRtlLookupFunctionEntryRtlCaptureContextWideCharToMultiByteoGetTimeZoneInformation]GetCPInfoTGetACPGetOEMCPIsValidCodePageEncodePointerDecodePointer@TlsAlloc@FlsGetValueAFlsSetValue?FlsFreeGetCurrentThreadId>FlsAllocHeapSetInformationHeapCreateHeapDestroyWriteFileSetEnvironmentVariableASetEnvironmentVariableWRtlUnwindExDeleteCriticalSection FatalAppExitASetHandleCountGetConsoleCPGetConsoleModeSetConsoleCtrlHandlerInitializeCriticalSectionAndSpinCountLFreeEnvironmentStringsAGetEnvironmentStringsMFreeEnvironmentStringsWGetEnvironmentStringsWSQueryPerformanceCounterjGetTickCountGetCurrentProcessIdLCMapStringALCMapStringW@GetStringTypeACGetStringTypeWrGetUserDefaultLCIDGetLocaleInfoAEnumSystemLocalesAIsValidLocaleCFlushFileBuffersWriteConsoleAGetConsoleOutputCPWriteConsoleWHeapSizeGetLocaleInfoWVCompareStringWSCompareStringASetEndOfFile&GetProcessHeapSoftware\Microsoft\Windows\CurrentVersion\Uninstall@x@8x@0x@8x@(x@8x@ x@x@x@8x@@x@w@0x@w@(x@8x@ x@x@x@8x@w@ w@w@w@w@hw@Xw@@w@0w@ w@w@@v@`@v@@v@N@v@N@v@X@Software\Microsoft\Windows\CurrentVersion\Uninstall2-+] f@@x@t@p@l@h@d@`@X@P@H@8@(@@@ @@@@@@@@@@@@@@@@@@@@@@x@h@`@\@P@8@(@ pF@ @pPSTPDT H@`H@        ! 5A CPR S WY l m pr   )     abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ J@`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~@C`O@`O@`O@`O@`O@ V@@@@pF@pO@pO@ J@@@ @ @@@`@0@@@@`@8@@@ x@!@"@x@y@z@@@ @@4@4@4@4@4@4@4@4@4@4@ ;Zx0Nm:Yw/Ml@@.V@n@n@n@n@n@n@n@n@n@ V@.,v<1`4jpx]`XX  `#`#%$ %&@&(\(((**c+d+++q-t---'/(/0 0;1,<1M28P2Y4L\44l45xD599==Z>\>@@@@AAAABBFD(HDUE<XEiFPlFFdFFlFGtGILLLMMNNNN6O8ORR?T@TBW DWOX@PX'[H([[P[^X^mbhbb|bcccc hhiijjtc 4TXՏ`h'p(q|tѕԕ}LLnpə̙  \\n<pl%(EHehФؤCDq tʦ̦0ͧ<lD 6P8۪XܪlEtH}|=@RT'(bl4L@dvpx  *,FHfh(08@ H2P4UXX|`|hpx 14 ghKL24~klWX C(D0&8<@HQPT|Xlpln`pbbqtGH(9<i(l08 @ ELHX`h|L, f p  ( }0 D L T \ d t X X 7 8\ \$ XD XX h #p $cx d,    V X  $ $  e . 0 0 `T `\ (x (   H X G H    > ` L               ( ;H Dax  ~ ( (]8`l1t4=|@ll 4 w    !!!!("("''C(D(( (t,0t,,H,-P --X-.l... //0022"3$3333344 5D 55P5h6dh66t67799::=<=y@T|@@@AAAA;B >=> @>> >> >]A AB BC CD DCD!DDfD!hD{D!|DE !EE0!EE8!EF@!FGX!GLl!L)M!,MAN!DNeN!hNO!OO!O'P!(PcP!dPP"PP "PR"RS@"SSl"STt"TU"UV"VV"V'W"(W}X"TZZ#Z[#[]$#]z^d#|^i_#t_`#``#0`~`(`` ``4``d`````aa,a,aGaGaiatiaaaal aa aa aa ab( bb b4b 4bMb Tbmb mbbX bbP bbp bbh bc` cc  c9c 9cRc0Ycrc(rcccc|ccccc)d)dAd AdZdtZdddddd ddddpdeee eAeHAeWeWememeePeeeeeeeeefdf2f2fIfIfaf,afzf|zfffff2g<2gIgIgag!agxg8"xgg"gg"gg#gg\#ghT#(@pnklmn ( 8 H X hx  $ZZ(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:PhnPA@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}( PAPADDINGXXPADDINGPKq|]קK7command/wininst-7.1.exenu[MZ@( !L!This program cannot be run in DOS mode. $IoA'tpj\Vd@YYt_W@؃u'jW@utWh@jՃ WjYYuh@t Wh@jՃ \Fu[_]3@^U SVW=@39uuEVhuVVSu ׃E@uu uu  uPt P@/9u u jU YYt.VhjVVSu ׃Eu%9u u hĂ@u jU YY9u t u jU YYEPuu@}EPPPW@9uu W@\VuVjVW@W=@׃u9u t8u h@&VVVjS@SE׋E;u9u tu h@jU 3_^[U8}S]VWj8EjPpZE EȋE@E̋Ej8h@E؍Ej3P]F2}t t*Ph@EjP4;YYtt Ph@j׃ 3EPJYt,t PhԂ@j׃ 339uuuu SY FS@_^[U(ES]L+A Q+ƒ9PKWM}:t3efy V3@^_[ËE}4N*>PKE?PK9V. u MN VGF*OMUDE܍PYHEPYM <\th @PXYYP؀@eEE8t;EE0XPuE04@EEMȃ8EuGPuPp@ t /u\@uPJXYM<\tNu3fF P3fFPvuPjt"uOvvQuP^}tE@PE@ PujUE@ E9E=0M3WsEPWE_M+؍PMWM<\t)PhWYM</th @PGWYYE\t/u@KSPPp@]3UE Ph @u ,@ u]u jmhT@(@ ]UE Ph @u ,@ u]u j5hT@(@ ]U=D@VWu hh@Ѐ@t3hP@PԀ@D@EPh @u ,@ tY=D@uh8@5L@$@YY;3|@u68@YYt)G@ruh$@5@$@ 3_^Ëx@jPPjD@tPh @(@YYuh@5L@U,V3Vuuuuuup@;} Ph@EPEPEPEPEPEPEPh@u ,@$FEPhh@jVhx@t@;} Phl@EURh@P;} PhD@EuPQP;}Ph$@pEu܋PQ;}Ph@X9utEuPQ,;}Ph@;9utuEuPQD;}Ph@9ut'EuPQ$;}Ph@5L@$@ GhPjuVV̀@EjRPQ;}h\@WUhH@h50@SRYD$tjPYYt$@=T@tB=@t9h,@WUhH@h50@SYtjVAYYV@3_^][H@tP@Yt$<@%T@YH@U SV5Ԁ@W}h@Wh@Wh@WEh@WEh@WEh@WE395L@u3J;tC9ut>9ut99ut49ut/;t+39u h@Uu u U_^[ÁPL@SUV3Wt$3;t@A=H@PVhS50@VVUS50@׉t$5L@$h cD$6D$D$ h@PP@D$(P$ttD$t$D$ 6h@PP@D$,Pjjt$US50@6h50@T@vuD$_^][PUhV5P@Wh@@hP@PE֍P@=Ѐ@uׅ5@E5D@h @PփE5@PPEPhօtEPPEPhօt3,h@P4DuP%DP_^USV3WSS@@ ȁ@5ā@@@QWPE֡ȁ@ PWuh@@$;u0@Pth@PP@tPuVYEYV@ȁ@=@@Pסȁ@5@@P֡ȁ@ Pסȁ@ Pփ9]ht@4C$p@u@jS@PEu@jjuEӋED8P@؃(t:ht@SBu;ujP@uÀ$8SS@$ h`@Yu@EY_^[UQQSV5Ԁ@W}h@Wh@Wh@WEh@WEh@WE֋3;t;9Et69Et19Et,;t(h@UW u U tU_^[USV5Ԁ@W}h@Wht@Wh\@WEhL@WEh<@WEh(@WEh@WEh@WE3E;9u9u9u9ut{9utv9utqh@ӋY;t?h@WUh@W@UL@@jVUP6WU(@rE(@E,@E$@Ep@3jX_^[UV5(@W3jWWEWPօtEP,@EP0@jWWEWP_^U@El@=tEX@VW3MWQWjWW\@WVP@;t5ujWh@@P8@3Wh@V@P8@`@=܁@SVuh@P׍h@P@D@EP؁@ԁ@EPӍEPPh@hPЁ@@P5D@h@h@5D@ӃHuh@5D@5@5D@Vhx@P׃ EPEP3PhPPPPu@tjh`@P@P8@u@}uPh\@hH@5D@Ӄh@5@5D@h8@P׍P>@PPjjh,@u@tjh@P@P8@Ph,@Ph\@h@5D@Vuh@P׍h@P@Pj5@E5@́@@u@VuVuh@P׍P > @@PPjjVu@tjh@P@P8@PVPh\@h@5D@ӃjX[_^U=} NV} K} W39=T@)@ƅ=@ ST@hp@hu}Ed@}Ӎh@@P=hX@P<VP<D@;tQh@@h@@P@WW@@ ȁ@5ā@@@QWPE փuPPh0@@P8@ȁ@ PWu փ uPPh @@P8@hj @P$@Eh@@EHYt{V4th@RYY;N;t +V+щP@+FMh+F+~@YPh@tmSjh@P܀@tT3PPPvPSjEtLvWP@u(|W<@MuE@jXh@@PYY3_^[̋T$3;tMB;tFHJJJB0HH H H(H,H0H8H<0@HlHPHL3ø̋D$ W3;81|$8Vt$ ;9~ ~u F ]@~(9~$uF$]@F(h0%jPV ;u^_ËL$;ωF}xB0P}|VH$x4^_PF(PV$~^_ø_SUl$ ]VWC43;u(K$M(jPQU ;ljC4u _^][9{(uK${0{,S(}K(+;r*u {4+ȃK(_^]C0K,3[+K0;ȉL$vȉL$S0{4u +ʃL$+t(u {4ȋ+ʃ_C0C(^C,]3[Ë{0C(;Љ{0uC0S,;sщS,_^]3[̋D$8SX|H q8u Ha; u H PUk3UUUR$CjD$4D$4D$5KPQ5$Cl$C Ct@0CL$%3ҹL$рtD$L@t@C$L$;vL$LD$A`@h3UUUSLT$L$X҃ CA0 l$1D$L@H@D$s'nO|$FD$t$r<CtL$LAt@tT$LB,@K tCt%D$D$$D$%KjD$(PQ" C33 sOF D$rK tACt7D$D$$ȋD$'jD$(L$)T$*KPQ8" C33s(TO|$FD$t$rًK tЁQK A Ct%D$D$$jT$(D$)CRP! C3D$3Ktvs-O|$FD$t$rًK ɉC@tACt%D$D$$D$%KjD$(PQ5! C3D$3K tAKK@;ωL$vωL$S tHR҉T$8t=S zs@R+49;v+׋ʋT$8t$ʃL$|$t$StD$KPVQ L$(CD$ S@++щ|$t$S@K@C@Kt3ɍ1AL$K ɉT$,t-Q҉T$8t"S@;Q sL$8|$D$8D$,C@D$8L$,tL$;rKtT$CRVPCD$ L$+L$,ɉ|$t$K tAC@K31AL$K ɉT$,t-Q$҉T$8t"S@;Q(sL$8|$D$8D$,C@D$8L$,tL$;rKtT$CRVPCD$ L$+L$,ɉ|$t$K tA$KtOs' O|$FD$t$rًK;tT$LB@R 3l$C tK H,S B0jjjLL$XCA0D$   s'_ O|$F D$t$rًȋЁ3Ҋt$L$LCA03D$3 K  jjjT$XCB0D$  |$P Kt̓+D$T s$ O|$Ft$r݋ȃKȃMws$H]@ D$ CL(@CT CP(@CXD$ D$ T$LB@D$ ̓+ D$s+d$ O|$F D$t$rًЋҁ;tL$LA@. 3K@D$3K@ɉL$;vωL$T$ ;vʉL$R t$|$(ʋT$L$t$|$ +t$t$(щT$S@++щ|$ |$t$(t$S@ s# O|$Ft$r݋ȃЉK`ȃK\K`BSdD$ʃChKh;K\s[s#_ O|$Ft$r݋ShU@3ɊD$fLSpKhAKh;K\rKh;s*3 $d$ShU@fLSpShB;ЉShr千0KlCLRCTPQjCpPjXD$4D$t L$LAȌ@1 T$LB@! ChK`Sd9ShKTKLJ#Ћ ;ՉL$@v<A KTOºKLF|$J#Ћ ;Չt$L$@wċT$@fsR;L$s&L$OF;|$t$rfT$B+KhfTKpKhAD$KhHuh͍Q;L$s+L$OFQ;|$t$r+KhɉD$bLKnL$,ȃfՉT$uJJ;s-d$$O|$‹T$FJ;t$r׋ȃDJ;s)O|$‹T$FJ;t$r׋ȃ +D$,{dSh{`;׉D$tT$,{hfT{p{hGI{hu|$S`Kd9Kh;0KlCLRS`CTPQ RCpPj D$4t8L$LD$A@T$LBl@L$L|$Al@vSlKlSPRCXPQK`CdPTKpRjP D$4tD$L@T@D$)D$rg|$ r]D$LT$ L$(PT$0H L$R0xPK8k<|D$TH P0xC8k<L$(T$ t$|$D$KTKLJ#Ћ;͉T$@v<KTOºKLF|$J#Ћ;͉t$T$@wĄΉL$3ɊʉT$,L$L$J#L$@ыKLL$,T$@;ՉL$v[IT3ɊL$,O‹T$F|$ʺL$t$J#L$.ыKL ՉL$@L$;wT$@++L$@҉D$K@u w t  g@tT$LB8@LSHKHtE;s%KHOF;|$t$rۋKHK@J#ʉK@KH+KXKPJ#Ћ;͉T$@v<,KXOºKPF|$J#Ћ;͉t$T$@wΉL$3ɊʉT$,L$L$J#L$@ыKPL$,T$@;ՉL$v^3ɊL$,O‹T$F|$ʺL$t$J#L$.ыKP ՉL$@L$;wT$@++@D$tL$LA @L$@KDSHKHtI;s%KHOF;|$t$rۋKHKDJ#ʉKDKH+D$T$ K,+L$09KDvT$LB@-L$ T$0+ыKD;v<+ʋS0;ʉL$v+ʋS4S(L$+ S4+S0L$T$,S@;ʉT$8vT$(+ыK@T$,L$8L$T$ ;vʉL$+щT$ T$8+щS@L$,L$(T$,AL$(L$BIT$,L$uۋK@ncL$(S@AL$(L$ >K s'O|$F D$t$rًL$0+L$ T$LJSхɉL$0St8CSL$(D$0Pt +QR +QR L$XCA0D$ KT$ ɉT$0u'3Ҋt$L$8ʋʉL$8;Kt L$LA@`3D$3KK s'O|$F D$t$r;CtSL$LAЋ@ d_^][8ËL$LT$(Q T$ y_1Q^k@3L$@ȋD$@L$H#L$$̉D$+٨t‹L$;؉L$s(jBT$;sjBT$+M#͋l$L$D+;l$+;l$HnL$,D$Iu*D$(+ȋD$T;+ʼnD$Td$AAFMus;sS+D$(+l$D$T;sc+ʼnD$TAAFMuL$,D$l$TI;s<+l$TD$@AAFMu+ȋD$T;s+ʼnD$TAAFMuD$+ȋD$Tv7PEAAFQAFT$TAAFMT$Tu݋T$D$Tt^AAF|$TvPIFH+ō$H@FH@FH@FL$TL$TwۅtH@F|$Tv@Fl$;T$0sQ;t$4EL$PD$A@,L$PA @ t E D$P@8@E ++ً˸L$PH#BFA D$0+ƒAD$4+A}8_^]<][<̃|$3҉D$+Dž~|$AB;rt$HT$(ЉD$<$T$(u =֋$ D$DL$ +T$8fLG$*ÅD$@D$fD$t]t$ d$t L$@D$8#;tD$73ۉD$D$ЋˋL$ Jtut H#ȋuT$(T$ȉ$_^]3[|_^][|̋L$S\$Wu1D$ʁrr_ [Vt$u ^_[Ãs3t FKur3Ҿ^_[ Án^U [IVVVVVVVVV V V V V VVHw3ҹǿ3MF]VVVVVVVVV V V V V VVʃHtt FKu3ҹǾ3^_ [QSVt&It3Ҋ3Ёh@3ANu߃ UW3܋,h@ҋh@3Ջ؉D$,h@Y3%3h@3Ӌދ,h@h@3ŋډT$,h@Y3Ł3h@3Ã܋,h@ҋh@3Ջ؉D$,h@Y3%3h@3Ӄދ,h@h@3ʼnT$,h@Y3ŋ,h@33ËЃҋh@D$3h@,h@3%3h@3Ӌދ,h@h@3ŋ,h@Y3ʼnT$3h@3Ã܋,h@ҋh@3ՉD$,h@Y%3Ջ,h@33Ӌދ,h@h@3,h@T$h@3Ń3à OrH3܋,h@D$|$PfzxTh~سDjXL6&ֺκĺ .>L^r»̻ػ|nd\R޸$.8BPZfpxʹԹܹ$.:JԵȵ6$ܶȶt^RF4$ĸCreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.3\`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checkinvalid distance too far backinvalid distance codeinvalid literal/length codeinvalid distances setinvalid bit length repeatinvalid literal/lengths settoo many length or distance symbolsinvalid code lengths setinvalid stored block lengthsinvalid block typeheader crc mismatchunknown header flags setincorrect header checkinvalid window sizeunknown compression method(@@@@@@@Ѝ@@@incompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionary inflate 1.2.3 Copyright 1995-2005 Mark Adler  #+3;CScs !1Aa  0@`@@0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfaFF Fn@n@]o@ao@o@o@6(XHз4tԸpp@bRڷ. Ttd´޴*>PfzxTh~سDjXL6&ֺκĺ .>L^r»̻ػ|nd\R޸$.8BPZfpxʹԹܹ$.:JԵȵ6$ܶȶt^RF4$ĸdPropertySheetACreatePropertySheetPageACOMCTL32.dllSetLastErrorECreateDirectoryAVGetFileAttributesA^MapViewOfFileNCreateFileMappingA.CloseHandleSetFileTimeDosDateTimeToFileTimeiGetLastErrorMCreateFileAcUnmapViewOfFilelstrlenAGetProcAddressHLoadLibraryAkMultiByteToWideCharRLocalFreeFormatMessageAFreeLibrarywGetModuleHandleAGetVersionExA|DeleteFileAGetPrivateProfileIntAGetPrivateProfileStringAResumeThread$SetPriorityClass:GetCurrentProcess=GetCurrentThread6SetThreadPriority`CreateProcessAuGetModuleFileNameARemoveDirectoryA[GetFileSizeGetTempFileNameAGetTempPathAKERNEL32.dllMessageBoxAGetFocus;SendMessageAEndPaint]GetSystemMetrics BeginPaintDefWindowProcAPostMessageASSetDlgItemTextAwsprintfAEGetParent6SendDlgItemMessageA*ReleaseDC GetDCMoveWindowtGetWindowRectGetDlgItemDispatchMessageATranslateMessagePeekMessageAMSetCursorLoadCursorAUpdateWindowShowWindow`CreateWindowExARegisterClassAUSER32.dllDeleteObject<SetTextColorNTextOutASetBkModeSelectObject9CreateFontA3CreateDIBitmapPCreateSolidBrushGDI32.dllRegCloseKeyRegOpenKeyExARegQueryValueExARegEnumKeyExARegQueryValueARegSetValueExARegCreateKeyExARegDeleteKeyARegDeleteValueAADVAPI32.dllShellExecuteASHELL32.dllhCoUninitializeCoCreateInstance:CoInitializeole32.dllstrchrmemcpymemset strncatstrcat strlenstrcpystrcmpstrrchrfprintf%_vsnprintfmalloc_snprintfstrncpyfreesscanf_putenvremovefreadftellfseekfopenfclosefflushfreopenC_iobfwrite strftimelocaltimetimesprintf_fstatstrtol_pctypeE_isctypey__mb_cur_maxqsortreallocfgetsstrncmp{__p___argvz__p___argcMSVCR71.dll_c_exit_exitK_XcptFilterM_ismbblead_cexitexit_acmdln_amsg_exitn__getmainargs?_initterm__setusermatherr_adjust_fdiv__p__commode__p__fmode__set_app_type_except_handler3k__dllonexit_onexit_controlfpGetStartupInfoA_strnicmp_strcmpi_strdup_tempnam_close_read_open@T@@T@@T@@@@T@@@@@@T@@@@T@@ @@l@T@<@,@@@@@@@@@@@~@@@@@Software\Microsoft\Windows\CurrentVersion\UninstallSoftware\Microsoft\Windows\CurrentVersion\Uninstallmessage_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBsno such folder (%s)unknown CSIDL (%s)function not availableSHGetSpecialFolderPathAshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissi100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Runtime ErrorTimes RomanThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Don't know Python's installation typeStrange\python%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Py_OptimizeFlagPySys_GetObjectPyRun_SimpleStringPy_FinalizePy_SetProgramNamePy_Initialize%s%cimport py_compile; py_compile.compile (r'%s')SOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOut of memory!rbRunning the pre-installation script failed Can't load Python for pre-install script (%d)aPyErr_PrintOSErrorValueError__builtin__PyLong_FromVoidPtrPyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleUninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** %s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINEPostinstall script finished. Click the Finish button to exit the Setup wizard.*** Could not load Python ****** run_installscript: internal error 0x%X *** freopen stdoutfreopen stderr300 Run Script: [%s]%s \Scripts\-installPlease wait while running postinstall script...Installation failed.Running Script...Could not open postinstall-script %s PySys_SetArgv*** Installation finished %Y/%m/%d %H:%M *** IsUserAnAdminSetupFailed to start elevated process (ShellExecute returned %d)runasBad user_access_control valueoopsnoneautoforceuser_access_controlinstall_scriptmetadatanametarget_versiontarget_optimizetarget_compilebuild_infoinfotitleSetup %sCould not register window classSetup.exeSetupWindowClassif exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removedYou do not seem to have sufficient access rights on this machine to uninstall this software%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %s%d Root Key: %sAre you sure you want to remove this package from your computer?Please confirmOut of memorycould not open logfiler2. arg is not -u-uWrong number of argsSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archiveCould not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py) 8nhklmn     0 8Z@(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:Phn@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}(PKq|] command/wininst-9.0.exenu[MZ@ !L!This program cannot be run in DOS mode. $6Bry,ry,ry,6uy,l+Ty,l+dy,UAqy,UW}y,ry-y,l+y,l+sy,l+sy,Richry,PELI  6P@`@R@P.text56 `.rdata*P:@@.dataJ@.rsrc@@@tt /u\@uVt$ Ul$W|$S>toj\VUbYYt_WTQB؃u'jWXQButWh SBjՃ WjYYuh\QBt Wh SBjՃ \Fu[_]3@^U SVW=8QB39uuEVhuVVSu ׉EPK:S. MK SFC*NȋEύDEEU+AuEP@u+MI<\Mt}OGGuSBfu}EP,QBeDEE5PU@u+EPuQ EEMȃ8uFPuEPb E}EP@uM+€<\tGuC PCPsEuPjt"uNssQuP9}tE@PE@ PujUE@ E9EV6M4ȋx@uN+NjAu+΍}OOGuʃMȉMMI+ȍEp@u}+ƀ<\t(uVFu+<7/t}OGGuSBfu<\tPuQBEV8V\]Y hXBsYuHQBuQBEMp_^3[qVtUB3ʼnE3V9Et=PPQVuPhhPBVPi dPBP,QB+WVPh jh,YBP5%CdRBM33^UUB3ʼnEVWEPu hP kEHHHHtnHtWHtH()Cu hpYBxE5RB}Pjh5(Cu Wh5(CjPYBY3tu%u Y()Ctu h{V4tRYBY;N;t +V+щ`C+FM+F+~h[YEEPhpPBttuEjhYBPlPBt\3PPPvPujEtQvWPfE p@u+ƍD8PRYMuE4QB3@9ut99ut49ut/;t+39uh%CUuuJ U^[UQEPhpUBu DC uujh$UB(C UQEPhpUBu DC uujh$UB(C øMB3ĉ$$ NU$ V$-tW-t/HP$hhUDRBVhURBVjhhUDRB3@I0)CtPjhrhUDRBhCD$ hcBP0RB5RB D$PhUhlcBhUv1t(8jjhpUHRBPLRB5HRBSW3WWhpU-(C%CPLRBWWhkUPRB (CÍp@u+ƀ(C\tOGGuSBfÍp@u+U(CSYY$5'C5%C/5RB\Ct8thLcBSU5\CY=%Ch8cBSUh"@5$C5(Ch (CWu hcB/Y=%C=Ct:hbBSUhbBh5(Cֹ@C33XuBFMuҋ#Ƌ#_^[3 t3uSVW|$j +[ 7T$Ku_^[U}uE33AE @L@ |EVPPEuYYEPzEYt΍Q}t'PEPEYt ΍U*}u3E ^ËT$u3t$ D$YU@EHPSKLMԋ+M VpWx OωMč:MЋN(M܋N,MN0MN4M؋N8MN)MMMAGMu+MM#+MM;Ms)MMAGMu֋MUvLBj3YM@mAGAGAGHuE +ʃmAGAGAG}w}tAG}vIG;]s7;}#,@B@tB t @XBM +)M 3AыM JʋU#эKOH M+˃HM+ρHE _V8F<^[ËL$3;tMA;tFPQQQA00PP @P P(P,P0P8P u B Je^8~u63WWWFjEPEEvF3F ftH0Fj3Yuk$<tE@BS˃;N$vE@B133@WWWFMӃ FA0 3E@|Bs'}5EMEr܋U^t BBt B`BF t Ft ]jEP]vU F33 s'}EME r܋UF tXFt0EE]jEP]vU F33s'}$EMEr܋UF tˁHN A Ft ]jEP]vU F33Fths'} EMEr܋UF ^@tXFt ]jEP]v"U F33 F t`FV@EU;vE}tdN t4AE؅t*AI+‹U;v+MQMuQ Ftuuv FE)EE)F@~@ Uf@Ft~} 3ɋEAMN EtQU؅tV@;Q s M؈F@tM;MrFtuuvFE M)MM U F t`f@Ft~} 3ɋEAMN EtQ$U؅tV@;Q(s M؈F@tM;MrFtuuv`FE M)MMy U F t`$FtDs'}K EMEr܋UF;t BLB 33F tV3A #щP,F H03PPPMF A0 s'} EME r܋U˸#ȋϋ#ύFB033 ~ : 3PPPMFA0  } R U~tσ+ s'}& EMEr܋UÃFÃOt/HtHtHu,B8B OOg σ+ s'} EME r܋Uˋ%;t BB 3ۉF@3F@EYE9EvEE9EvE}' uuuE)EE)EE )F@s'}EMEr܋UÃF`Ã@FdÃ~`F\w~dw fhNBB+}uEMEr܋Nh M0BÃfDNpFhFh;F\rFhE0B3fLFpFh~hr卆0NlFLRFTPQjFpPj E܅tE@؎B~fh}EMENT3@NLH#ËɉE;wfsK"}eMME;r̋Fh+fMfLFpFhef}uV}MMEH;rڋ+Fh3DFnEÃOOf}uZ}EMEB;rڋjÃ7}EMEB;rڋjà eY+NdVhN`;vpE@B>0NlFLRFTPQv` FpPj E܅tCE@BNhfUHfTNpFhuFdF`9Fh닋E@BUNlFPRFXPQvdF`DFpPj< E܅tE@B}rY}rPEMuH MHMMHP^8~< E^8~}'EM;AtE}t j7}E+G]+_G_^~Et,t(G S+Ã~PvtAFG0Eԃ > u3ɋV҃@V t jX_^[Ã> uPPPZt$$SPO;Ftj׋Get jF(|$;v+PSv4 F(F,N4W+SQ ~, F 3끋D$t@t@tL$H a03jXË39D$vASWs8T$ ځ;uAt3jZ+ы@;D$r_[US]VW{{u <sjjX9tAG<ȃg8+3ɉG<rG8o8GCYYEtjsSoECsY 3jX_^[]ËD$t@t8 u x<u3@3jXUQQSVW39}u ;^;F ;9~$h0%jv(Ѓ E;uj}9{4t(K$3@jPv(V E;u uv(V$YYɋ}jYh0%uSVCL0 0;r/,%;w%++0FLCP++0FPCl}++0FltK$3@Ps4W E~4p3jX_^[Ul$B3ʼnE\ElUxEE|SE3VutWj Y}<33ɉU9}pvEHDE3B}h]E܍J]UUMur3@MM*MMM;M} EfU&~M UɊUUf E`3fM3ҋ+MBMMMM] )U+˃}]u3ҍHBMut Z#3ۃELE<f ]fu;EEMAE܋U ;&M#ˉM;M}uUM<ȋE3+B;Es(EDE<E+Ӆ~AE@@EE;Er3@UU9Ehu }Eԋ]ЉE M L+fLEz*ME@M3fMJ}tM#;Mt E e>EMM 3ҍHBut J#ʋ3ۅuEM EЉ3M\_^3[C`øSBjUXËD$B+ȋËD$D$ P&Yt$Y%,PB%(PB%\QB%XQB%TQB%PQB%LQB%HQB%DQB%@QB%~u蓌Yj hB<{3u3];;u CVVVVV639u ;tԉ]S)YuC @uwSYYttȃ @)CBA$u)tt@)CB@$tBVVVVV 6M9uu#S蕓EPVu S5ESWE E|zuYËUEPuu uס]ËUEPuu uۡ]ËUEPju u]ËUEPuu uġ]ËUEPju u詡]øBá:CVj^u;}ƣ:CjP*YY*CujV5:CYY*CujX^3ҹB*C  B|j^3ҹBW@)Ct;tu1 BB|_3^=CtW5*C=YËUVuB;r"Bw+QMhN Y VQB^]ËUE}P hE H Y]ËE PQB]ËUEB;r=Bw` +PfY]à PQB]ËUME }` QfY]à PQB]QL$+ȃ YQL$+ȃ YU S39]u?SSSSS"3M Vu;t!;uj?SSSSS2RE;wMWEPSuEPEBuu ;tMxE EPSYY_^[ËUEPuuu uh]̋L$ WVSًt$|$u 't+t/uuatt7uD$[^_tuutu[^D$_Ét~Ѓ3‹t܄t,tt uĉ3҉3t 3uwD$[^_UW}3كE 8t3_ËU S39]u e=SSSSS0M Vu;t!;u6=SSSSS0SE;wMWuEuEBuuPuՏ;tMxE EPSݟYY_^[ËUujuu u5]QL$+#ȋ%;r Y$-U WV&3Y;ua<WWWWW/49} t޹EIuuM;wEuEuu PU_ËUVuEPju h0Az^]ËUVuEPuu h0AW^]ËUVuEPju h@A5^]ËUVuEPuu h@A^]ËUSVuW3;uo;WWWWW. BF t7VsVV輙P}F;t PY~~ _^[]j h0BsM3u3;;u:WWWWWx. F @t ~ EsVY}V*YEEՋuVHYËU SVW39} t$9}tu;ur:WWWWW-3_^[ËM;tڃ3u 9Ew͋} }F M}tFEEN t/Ft(;rWu6)~> +}O;]rOt VYu}}t 3ҋu+WuV*YPj ta;wM+;rP})EVP臜YYt)EFKEEAEN +3u N Ej hPB0q39u t)9ut$39u;u 9VVVVV,3>qu%Yuuuu u=EEEudYËUEtM ]ËUEt8uPY]ËUSVWuM3E苸]ut>~4>E}E}YYM\rҍCP|YueE:4EF+ƍDPV{ t3PPPPP*V}E:tEF+ƍDPV{t3PPPPP)VX}E}Yr}_^[tE`pEjYËUSVWuM3{E䋸w8uE v0|6E|uYYMÃM\uuՍCP{YuthE E:wF+ƍDPVz t3PPPPP)V|E:7F+ƍDPVzt3PPPPP(VN|MYu}_^[tE`pEjYËU$SVWuM3rE܋}]t3{43E{E}YYM|rҍF8EE ]s0{3E{EYYMM|u{{Ǎ|q{|b{|S{PEz؃WhVSeF] )uEESvj [0A~wII@;r[ËUQSV3҉U9Ut597vj [0F ~w7NN@;r.;1s(NVtj [0ENuE)^[ËUQSYVWًI tptIHt$F3;ulv3;Z QUThEv3;8/UT#%E F3;j Y;[QXTMjY+HHt4HHtHuu sF3;;;tHF3;;ȋF;w=ml;}3j^;@3;A;FF=|=~ ~03jdYujkdvm9ZAHHt\Ht,v3;muFjv ypujZM .Yu3u SV9}tAjurtsE 98tlu E PSVjuH5CW뾋v3;| UT8v3;|~[/WWWWW"3Uv3;|̓ ȍF/pteHtFHt&Hu)*.39F ؋EF3;yujdYu3u SV9}tjW F3;@7u3Bv3; UE O3@_^[ËU B3ʼnEE SVu3+WtHtE}  QBu QBlfPSfUfPfBfUfP fUfPfUfPffES3WfEEPSMfUщE;=;tPGY;t E;tZuSWEPjUH~!uM>vEECHuY3@e_^[M3Êt]u;t3҉UAB8tMȃdN'AHt~MtOauQ訾YYt;vG8 G sMHtHtHt HuB<b5Em'HtHt EHhĹBW込YYuhBW証YYu}pp;]<'tEuPǽYYt;vG8 G uGHtHtHtHAUaNEd@hHt%HHtHHrYyEx E;uPݼYYt;vG8  ;uP薼YYt;vG8 G uaHtHt ES.HtHt EMHtHt rEIuUuSut}}3U ESu3ۍM]EE;u+)SSSSSP8]tE`p3PW} ;u+)SSSSS8]tE`p3Vu;E;u EE};:ty<%tAMQP)YYt3A9MvF8tpU EMMEFM/U;twF3>#u@FPuEPEPMtBF9]w9]vE+}8]t\MapSME9]u 9]w("&9]vEq(SSSSS8]tE`p3^_[ËUujuuu uA]ËUjjuuu u"]ËUjuuuu u]j hpB_3ۉ]3};;u'SSSSST3y3u ;;t38;tHE;u 'ʉ]8u s'jEPhBJ PuVW9EE E_uYËUj@u u* ]ËUVW}3;u&j_VVVVV8$huu ;t3&_^]ËU S39] u&SSSSS5ME;tVEEEPSu EPEEBJyMxE EPSVYY^[ËUEPuu uj]ËUEPjuu u]ËUEPuuu u]ËUEPjuuu u1]ËUEPuuuu u]ËUEPjuu uA]ËUEPuuu u"]ËUE PuYY]ËUE PuYY]ËUEPu uu ]ËUEPu u ]ËUu ME~EPhueI MH%}tMapËU= CuE BA%]ju~YY]ËUu ME~EPjuH MH}tMapËU= CuE BA]juYY]ËUu ME~EPjucH MH}tMapËU= CuE BA]juYY]ËUu ME~EPjuG MH}tMapËU= CuE BA]juYY]ËUu ME~EPhubG MH%}tMapËU= CuE BA%]ju~YY]ËUu ME~EPjuF MH}tMapËU= CuE BA]juYY]ËUu ME~EPju`F MH}tMapËU= CuE BA]juYY]ËUu ME~EPhuE MH%}tMapËU= CuE BA%]ju~YY]ËUu M E~EPhWuXE MH%W}tMapËU= CuE BA%W]ju~YY]ËUu ME~EPhuD MH%}tMapËU= CuE BA%]ju~YY]ËUu ME~EPj uOD MH }tMapËU= CuE BA ]juYY]ËU}]ËUE]ËUu u9YYu}_t]3@]ËUuoYu}_t]3@]ËUu u~YYu}_t]3@]ËUEPYu}_t]3@]̋V;ttSN@Au[^̋UQUW;vnM  SEVIu;w"$SVU~u ;vM U;t#t+IN@uM U+;w^[_]̋US]Vu u't#jjjjjn^[]W}v}u$jjjjj=_^[]ÃrNE]u+3@wEPWS vËWSU~ UϋtVSU~ U΋\VWU~U΋Dd$;v];sWSU~;wI];]w WSU~+u;v WVU;w2Ut#+JUU U U@u;uu;s+u;vWVUt;rI+uE;vWVUtEUʋ++;|+;sM􉄍xAM;s9u}];sM􉜍xAM;s]}uj}EE9xUEڋ;jhBS]uu oYu u SY=`*C3}jCY}S=DYE;;5P*CwIVSPI t]5VNPYE;t'CH;rPSuSCESPD9}uH;u3Fu u VW5( CQBE;t CH;rPSuUSuCE.}u1uFu VSj5( CQBu ]j2AYË}9=Ct,VVYF9}ulYj=YËUV tЃ;ur^]ËUVu3utу;u r^]ËUMV3;uVVVVV jX C;tډ3^]ËUMV3;uXVVVVV jX C;tډ3^]ËU=*Cth*CaYt u*CY蘷hRBhRB)YYuBh%lARB$RB=*CYth*C Yt jjj*C3]jhBMjM=Ye3C9CCEC} 5|*C4Y}؅tx5x*C3Yu܉}uu;rW39t;rJ6335|*C35x*C3 9}u9Et}}؉Eu܋}hRBRBYhRBRBYE}u(Cjc;Yu3C}tjJ;YLËUjju ]ËUjju ]jjj jjj ËV2VTPVV?VVZVXV蜷V腷hN@&2$B^ËU=CuOuMhYY]øMZf9@u6<@@PEu% f9@ut@v39@3jXhBtK3uEPQBj_}MZf9@u8<@@PEu' f9@ut@v39@Mu3CS{8YujY5ujY)]ma}jgYQBp*CCJ}jAY}j 0YS`Y;tPY0]tMj YQPVh@蓎E9uuP}5E MPQ YYËeE܉E}uPEE3@ËeEHJ}xU}uu }MfofoNfoV fo^0ffOfW f_0fof@fonPfov`fo~pfg@foPfw`fpIuu}]U}u]] ÙȋE3+ʃ3+ʙ3+3+ uJu΃M;t+VSP' EMtw]U +щU+ى]u}MES;u5كMu }MMMU UE+EPRQL Eu }MʃE]u}]j hBHef(E#E=t =t33@ËeeEEHËU3SEEESX5 PZ+tQ3E]UMUE[Et\t3@3[l*C3U}}M f$ffGfG fG0fG@fGPfG`fGpIuЋ}]U}E3+3+u-uEFV苼YiE<+t<0|<9F3ۋuj0YÀ>:u8FVVYk<E<9F<0}>:uFV6YE<9F<0}9]t]E;t#jVj@wztSSSSSGun0uX0@ËU e} SVW}%yH@Eu jd[ult B BE +_jd_FjEÙU}+ЋڍGimÍ%[Ek+E;Ut}}u jd[ult E B E B;~D?%yH@u jd[ult 4B4Buk<M k<M$iM(}u5B B=BkEP5B BYt3PPPPP2EiByB\& B\&9B| )BB=B_^[ËU VE3PuYt VVVVV9uu3XWS3C;Bu ;B95 C C CP CP CPf95 Cu CVP CPRS  CPVVRV CSWr C l C$Pp CPn CPf95d Cuh CVPj CPwSj CPVVwVf CV$TkjXjYE ]}jXE EVVVVVQRSSjYEVVVVVuwSVjYH BB;ȋW};|";;~;}[^;|;;~;}3Gk<Gk<i;u 3;B 3;BjhXB<395 Cu*js,Yu95 Cu  CE<jQ+YjhxB<j.,YeE<j+Yj hBQ<j+Ye}EE Ek<j*YËUVuW3};uj^WWWWW0 j$hVۯE ;tˋ@ME|@Ws j^0뼃| &AwSWh3PQnȃF+yjd}M؋Ǚ_jh+؋EDAڙRP+jQSRPl}U}M|sGEǀ3UȁEyIAu jdYuEluAU2EȁyIAu jdYuEluEEjSuFWfjFhRP贿U}BuBF3A9B} A9|QIN+jF E Sp0 jY3ShuWVjFhRP>SUj3[_^ËUVCtuVYY#^]ËUEV3;uVVVVV!jX B3^]ËUEV3;u\VVVVVjX B3^]ËUEV3;u#VVVVVjX B3^]ËUE S3V;t:9]v:;tW};t E;t@t;j^SSSSS0WU9]tj^SSSSS0764B6?F@Y9] u3;Evj"X6uu 8D _^[]øBøBøBøBËUE3;͈BtA-rHwj X]Ë͌B]DjY;#] uBà uBà ËUVMQY0^]ËUm uj X]M3]ËUVu3;uPPPPPjX p3^]ËU uj X]bM3]ËUVu3;uPPPPPjX 33^]WVS3D$ }GT$ڃD$T$D$ }GT$ڃD$T$ uL$D$3؋D$A؋L$T$D$ ud$ȋD$r;T$wr;D$vN3ҋOu؃[^_SW3D$ }GT$ ڃD$T$ D$ }T$ڃD$T$ uL$D$3D$ 3OyNS؋L$T$D$ ud$d$r;T$wr;D$ v+D$T$+D$ T$Oy؃_[UQSVu3ۉ];uj^SSSSS0)j$hVE ;tˋ@W} ]j^0̋WiҀyʍF3;|+B;|+ȸB;|B+EVQBFi9]uBF3B9G} B9|3JV+QF E j_j<^ V_Fiȋ_Fk<+ȉ3^[ËV:uo 3^Ã~Duj$@YFDt܋FD^ËUVtuV|YY#^]SVD$ uL$D$3؋D$ Aȋ\$T$D$ ud$ȋD$r;T$wr;D$ vN3ҋ^[-t"t t Ht3øøøøËVWh3FWPr3ȋ~~~  ~B F+ο@Ou@Nu_^ËUB3ʼnESWPvQB3@;rƅ t.;w+@P j R详 CCujv vPWPjj躽3SvWPWPWv S蛻DSvWPWPhv Sv$3EtLtL Ƅ@;rVDž3)ЍZ w Lр wL р A;r‹M_3[Ij hB1$BGptltwhuj Y1j Yewhu;5(Bt6tVQBuBtV葭Y(BGh5(BuVQBE뎋uj YËUS3SM Cu CQB8]tEMapE,BD;FG;v}FF>uыuE}urlj{CgjC C4BZf1Af0A@@JuL@;vFF~4C@IuCC Ss3ȋ {95 CXM_^3[DËUjM蓧Ext}@tMapÀ}tE`p3jhBC.Mj}_hu7E;CWh :Y؅Fwh#SuzYYEuvhQBuFh=BtP/Y^hS=QBFp$Bj @YeC CC CC C3E}fLCf E C@3E=} L B@3E=}(B@5(BQBu(B=BtPvY(BSE0j Y%u BtS@YeE,Ã=*CujVY*C3ád*Cøh*CËUSVu3W;to= Cth;t^9uZ;t9uP軨YY;t9uP蚨"YY肨wYY;tD9u@-PV+PC+P5*=Bt9uP\7YY~PE(Bt;t 9uPާY9_tG;t 9uPǧYMuV踧Y_^[]ËUSV5QBW}W֋tP֋tP֋tP֋tP֍_PE{(Bt tPփ{t CtPփMu֋P_^[]ËUW}SV5QBW֋tP֋tP֋tP֋tP֍_PE{(Bt tPփ{t CtPփMu֋P^[_]ËVtt;tWj6Y PY_^Åt7t3V0;t(W8YtV>Yu0BtV3Y^3j hB)$BFpt"~ltpluj Y)j YeFl=BiEEj YuËUVWdHpjZBUt:3;t;t'tVVVVVHp $B_^]áBH  CH  C B B <C C@CjhBw(uj YeFtPQBuF=BtP认YE[>tCuW~uQh\Bud. 3t VVVVV(;t 3ffGfG`;t0dGV{0YP;s,VhYYVXYYLlVPYYlPSP CTlPWh >t P;r L$UB@PVWX蟝t3VVVVV&39\tjS\m 9`tjT`O hudu- t VVVVVh3M_^3[2ËUB3ʼnESW uhPPPhxPSu3E0sHxP\YYxxP.PtW-YYptCHM\D klX1jPd

U]jhhBR3ۉ]}v9SSSSS3,SucNp]jh'YY};j YENl]uM PYE;9] th(Bu YYt  Cj @ YE^lWYFpu2$Bu);BljB Ph Cۊ me-}܋u3j YËuj YW`WYYE E<ËufpËUuQBu]6]ËUV5B5QBօt!BtP5BЅt'tBVQBu VYthdBP$QBtuЉEE^]jYËUV5B5QBօt!BtP5BЅt'tBVQBu VjYthBP$QBtuЉEE^]QBUu5BQB]BËV5BQBu5 CEYV5BQB^ËUu u5 CY]BtP5$ CYЃ BBtPQB Bj hB$tBVQBuVnYEuF\(B3G~t$hdBP$QBӉhBuӉ~pƆCƆKCFhBj _YevhQBE>j >Y}E FluBFlvl2YE3Guj Yj YËVWt~t WW&YHB|ܾ(B_t ~uPӃHB|^[ËUE4(BQB]t$jRBhYj hB 3G}39( Cuj hYYu4(B9tnj:Y;u 3Qj YY]9u,hW蒅YYuWY ] >WYE Ej YËUEV4(B>uP"YujY6QB^]Ã=( Cu3á`*C#P*CËUEHVv3VVVVVkjX395( Cuף B3^]ËUEV3;uVVVVV$jX95( Ctۋ B3^]ËUh@j5( CQBL*Cu]ËM% C%H*CT*C3 P*CX*C@]ËU H*CL*CkU+P r ;r3]ËUMAVu W+y iDMIMS1UVUU] utJ?vj?ZK;KuB sL!\D u#M!JL! uM!Y] S[MMZU ZRSMJ?vj?Z]]+u]j?u K^;vMJM;v;t^M q;qu; s!tDLu!M!1K!LuM!qM qINM qINu ]}u;M ыYN^qNqN;Nu`LML s%}uʻM DD )}uJM YJꍄ ED0E C \*C5 RBh@H SQ֋ \*C C P C@ \*C C@HC CHyCu ` CxueSjp ֡ Cpj5( C|QB H*C CkL*C+ȍLQHQPE H*C; CvmL*CT*CE C=\*C[_^áX*CV5H*CW3;u4kP5L*CW5( CQB;u3xX*C5H*CL*Ck5L*ChAj5( CQBF;tjh hWRBF ;uvW5( C|QB뛃N>~H*CF_^ËUQQMASVqW3C}i0Dj?EZ@@Jujhy hWRBupU;wC+ GAH@PǀIuˋUEO HAJ HAdD3GFCENCu x!P_^[ËU MASVuW} +Q iDMOI;|9M]UE;;MIM?vj?YM_;_uC sML!\D u&M!ML! uM!YO_YOyM+M}}M OL1?vj?_]][Y]YKYKY;YuWLML s}uϻM DD }uOM YO U MD2LU FBD2<38/] )uNK\3uN] K?vj?^EuN?vj?^O;OuB st!\Du#M!NL! uM!Y] OwqwOquuuN?vj?^M yK{YKYK;KuWLML s}uοM 9DD }uNM yN ED3@_^[á C \*Ch@H hQ RB \*C C P C@ \*C C@HC CHyCu ` CxuH=H*C~?pj5( C|QB H*C CkL*C+ȍLQHQP; H*C% CËUL*C8S3;u9H*CVWỦ]kB;gJ MDM܋JM]]]uj@39]Y]؉]]9]U :tIEH?~j?X19x;rClE}93e_C}ԉ];M;tM;d;Vȁ ;1;tˋ];u;I?~j?Y;M9HEEԋ@;u}t! } E E N E EE9xM;9F@uȋU3ۋE;FE;EEeE} uE;u_E;BuWEE;H*CU3_^[j6j2j.j*j&j"jjjjjj jjjX뾋UV395( Cu3`*Cu.E=v]VVVVVˣP*C3@]W};tBuBw WYuVVVVV襾 =P*C`*C3@ 3_^]ËUH*CMkL*CMSI VW} M 3U T*CS;#U# u ];r;uL*CS;#U# u ];r;u[ {u ];r;u1L*C {u ];r;u@؉]u3 SYKC8tT*CCUt|D#M# u)eHD9#U# uEUiDMLD3#u#Mj _G}MT +MN?M~j?^;J;Ju\ }&M|8Ӊ]#\D\Du3M]! ,OM|8!]u ]M!K]}JzyJzyM yJzQJQJ;Ju^LM L}#} u ;οM |D)} u N {MN 7Mt LMuэN L2uy>u; CuM; \*Cu% CMB_^[hPAd5D$l$l$+SVWB1E3PeuEEEEdËMd Y__^[]Q̋t O3 0AuO G3 01űUS] Vs35BWEE{t N3 8tN F3 8tE@fMUS[ EMt_I[LDEEt`E|@GE؃u΀}t$t N3 8itN V3 :YtE_^[]EɋM9csmu)=@*Ct h@*ChtUjR@*CM [`E 9X thBWӋ^`E MH t N3 8sN V3 :sEH_9S RhBW `UQQS]VW33};HBt G}rwj,Y4jYu =BAhpBS CW6 t VVVVV脷h CVj CPBu&hXBhV t3PPPPP@V @Y 9M u H9U t @ff;u9M u8]tMap8]tE`p3^[ËUju u2 ]ËUEVW|Y;8)CsQ<@)C<u5=BS] utHtHuSjSjSj\PB3[` h _^]ËUMS3;VW|[; 8)CsS<@)C@t58t0=Bu+tItIuSjSjSj\PB 3ڷ _^[]ËUEuƷ 諷 ]V3;|";8)Csȃ @)C@u$腷0kVVVVV ^]j hBK}4@)CE39^u6j Y]9^uhF PdYYu]FE09]t@)CD8 PQBE 3ۋ}j sYËUEȃ @)CD PQB]jh0BM3}j ]Yubj Y}}؃@<4@)Cu@)C;Fu\~u9j Y3C]~uhF PbYYu]Fe(}u^ SQBFtSQB@낋}؋uj pYÃ}uF+4@)Cu}uyG+j@j 3YYEta @)C8)C ;s@@ `@E}σ@)CDWYuME EEj Yj hXB3}2E t E @tˀE tuQB;u%uN@ uNhF P_\YYt7F N@Cg58)CpQB33@ËeEgËVW@)C>t1t G PRB@;r6Uc&Y@*C|_^ËUVuV9 PYYt|m ;u3m@;u`3@CF uNSW<C?u SYuFjFXFF ?~>^^N 3_@[3^]ËU}t'Vu F tV7f f&fY^]A @tyt$Ix  QPYYu ËUVMEM >t} ^]ËUG @SVt2u,E+M}C>ul8*uϰ?d}^[]ËUE@]ËUEAQ]ËUEf@]ËUxB3ʼnES] Vu3W}u]u5説3PPPPP4t `p F @u^V YBttȃ @)CA$uttȃ@)C@$g3;] C , If90t@@;u+(;u PBI8t@;u+\@t2t ƅ-t ƅ+ tƅ Dž++ uSj 6 <YtuWSj0 tf~bPjEPFPF蹷u(9t MYuPY|tWSj H tqVYtt `pM_^3[cOÐ !A!AQAAA AL Az!AUEV3;unVVVVV@^]j hBM3u3} ;;u ,VVVVV踔39u;tԉ} W:`YuG @uwWjYttȃ @)CBA$u)tt@)CB@$t蒠VVVVVM9uu"WuuuWUEWV)E Eu _YËUuuu uhA]ËUuuu uhA]ËUuuu uhA]ËUuju uhAk]ËUuju uhAL]ËUuju uhA-]jhBu3ۉ]jY]j_};=:C}W*C9tD@ tPdYtE|(*C PRB*C4|SY*CGE E1jYËUSVuF Ȁ3ۀu@t9FW>+~,WPV#YPc. ;uF yF N _Ff^[]ËUVuu V5Y/V|YtF @tVPYY3^]jhB&3}}jY}3u;5:C*C98t^@ tVPV]]YY3BU*CH t/9UuPJYtE9}utP/Yu E܉}F3uࡌ*C4Vf]YYE}EtEjYj hBL39uu V Y'ui\YuuYEE EUu\YjYËUQVu VaE F YuӜ N /@t 踜"S3ۨt^NF F F ^] u,Z ;t Z@;u u ^YuVhYF WF>HN+I;N~WPu + EM F yM tt@)CB@ tjSSQ#ƒt%FM3GWEPu u+ E9}t N E%_[^ËU9EuFjP;M u+2YYu3]ËE6u 7C Q tՉ&3@]ËUE]ËUEPwEYu߃]Jx A R9YËU}t]A]ËUSU؃tPxYu[]ËUB3ʼnEMEV3W} |dTDž$^0x;u TVVVVV5;t@ @SuzPYBttȃ @)CA$u&ttȃ@)C@$t ϙVVVVV[uJƅct<kdPHwYt0tVVtYPkYYGPwYu <%1 8G 3@ƅ/XLlƅaƅ`ƅjƅSƅbƅsƅk(GPuYtlLk DЉlN*tpFItLutkO6uG84u(48m3u G82u\dtWitRotMxtHXuAj9ht(lt wtS"G8ltks ksSjHu032ۉD8su]u ]FE f/^F<-uBt>]t7F:sŠ:w"*ЋσdzDGJu2ȊЋD<]uHDx+u'lutdtCxj0^9xxdtxf>HcGH`<%u G8%utGxH;ulPYt!tGH;uGtxu?%uDHxnu8 *dxYYVSVPVSy0u T?Yxu* ntJct{tdtOYdtx DT@t l, quAct st{u2 @D4 ocdg~Bit!nxqt jd_x-PƅaM3ۃx-u \-C x+uldtx@ulxklltfx\X 0P|PCS\( e dtpxPaYub:xlldt\xb 0P|PCS\(h  xklltf\xX 0P|PCS\( ^ dtixP`YuX_xet xEIll5\e0P|PCS\(|  dtx-u,\-0P|PCS6  x+u/llu!ldtnxxklltf\xX 0P|PCS\( dtxP6_YudtxXYYqL\<QPDkHP5tB賠YЃulDž@r~ƅjdtVxPMYYct4@tllBtxctLsu |  u4{b3ҋȃBL 3ϋq4)j$P"YttX%PDž?$PPfffCCǃpHH}t3;xYcqX Gr~ƅjF>^uFƅbj EjP, >]u ]FE r/jF<-uHtD]t=F:sŠ:w(*ЋσdzDGJu苽2ȊЋD<]uDTx+u,lu t ƅsdtxx0tdtxxPXYoux88<8k 1xPXYtbx8x8YxX@DЉ8tlt5dtxDdtxYYa8ktfTcFTn<%u F8%udt4FxT;P Yt%tFT;txu>%TxnBdxYYr~3fz `dxYYDžAyj t P3f PWSWP t tjVhBҶ F> t>=upF> tjhBV u M AjhBV u M !jhBV uM F> t8thSSSSS3\huEu uPGt3 ECMH MXXXH_^[jh`BH33}jY]3u;5:C*C9t[@ uHuAFwFPY*C4VW'YY*C@ t PV'YYF둋}hj8$Y *C*C9tIh PYY*Cu4Y*C PQB*C<}_ ;tg ___OE nË}j؍YSVWT$D$L$URPQQh4dAd5B3ĉD$d%D$0XL$,3p t;T$4t;v.4v\ H {uhCjC|d_^[ËL$At3D$H3!Uhp pp> ]D$T$UL$)qqq( ]UVWS33333[_^]ËjǴ33333USVWjjhdAQ_^[]Ul$RQt$ ]U S39] ueSSSSS7YNE;tVuEuEu EPEEBKMxE EPSWYY^[ËUuju um]ËU V39u ueVVVVVX'uEuEu EBPuuU^ËUu juhA]ËUuu uhAu]ËUu juhAY]ËUuu uhA<]ËU S39]u JdSSSSSWVu W};t!;udSSSSSWjE;w}uEuEBuuPuUE;t4;|"MxEEPSYYtE39]\>HH_^[ËUujuu uhA}]ËUuuuu uhA}]ËUS39]u.cSSSSSV[Vu;t9] w c0uuuu VhA;}ub"SSSSS^V^[]ËUujuu u`]ËUQS39]u bSSSSSVVuW9]u;u9] u3;t} ;wCb3buuu;}v-8E@PVhAuLb8"uea8\WVhAE\>u}ua8"u/aM#;}"ua"SSSSS;U_^[ËUujuuu u]ËUujuu uhA}]ËUuuuu uhA}]ËUVuW3;u aWWWWWTF @t F F u VؚYFvvV)YPR F;F uOVYt.VYt"VV<@)C׾YYB@$=u Fd.=u Fd=u Fd=uFdvdjY~d`QӋEYF`[_^ËUcsm9Eu u PYY]3]ËUECCCC]jhB莒3W2Y}9}uC5CyEEC5CxEEY;t txE 9}u33WӀYÃ}tuUY3@GUE BV9Ptk u ;rk M^;s9Pt3]5CdxYzdz`jh B蝑eu ]j_;tt y(B9~\u'5B苝YF\g5BWP v\YDPM %H =Bk ~\; 9Xtj\Ye;tu>=Cu5jh&pAQB3A;u CX5CvYE;t,VvC5CvYE;t VuCYE}uUB]jd~YÃt.t) t$~~W3PPPPP K貏j h@B`3}}؋] LtjY+t"+t+td+uDw}؅uaCC`w\ZÃt<t+HtV3PPPPPqJ뮾CCCC CCEPQuEY3}9EujB9EtP/~Y3Et tuO`MԉG`u@OdMGdu. BM܋ BB9M}Mk W\DEtEuwdSUY]}؃}tj|YSUYt tuEԉG`uEЉGd3ËUEC]ËUQVW5CAtE3Y;uUj_VVVVV8 IS0;hB QBE;uEUj_VVVVV8HhBP$QB;u/U==Yt1jS=YYtNVSPE t3PPPPPC>u5C%C't*C3Y[_^5C%CUEC]ËUQMS3VU 9Et ]EE>"u39E"FE<tBU PF Yt} t M E FU Mt2}u t utBe>< t< uFN>}t EE3C3FA>\t>"u&u}t F8"u 339EEtIt\BuU tU}u< tK< tGt=Pt#(Yt M E FM E  YtFU FVtBU ME^[t ËU S3VW9*CuZhCVSCPBp*C5C;tE8uuUEPSS} E =?sJMsB;r6P_Y;t)UEPWV}E HC5C3_^[ËUC SV5PBW33;u.֋;t C#gE;t9] w9] u;tWu+Y;t9W@Y9] t*;E vj"X"Wu u t SSSSSB<3_^[]ËUQVW3;uIj^WWWWW0}=wE;;t89} tu YE;tUPmFjV ;uI I)uVPX t WWWWW;E;t03_^jhB\339u;u@IVVVVV<3>Wu_YY;tjpYuuYEE E4joYj hBـj~pY3ۉ]3};;uHj^0SSSSS=<uwM ;t 9]w ;u 9]u3@3;t;tuJY;t=VY@9]t.;Ev E"#Vuu  ;t SSSSS]:]E E\jnYjhBjoY3u3];;uGj_8VVVVVe;}3E ;t039u;tuYE;tXPJGjWæ ;uxG mGE*uWP2 ;t VVVVV9E ;t8uE EvjmYËULB3ʼnES3VuW]ԉ]]]؉]܉u]9^F9u PF0hPESP.j1jWEfjWE[jWEPjhEA$E9]|9]s;k9]b9]YEԉ3M܈@=|EPvQB/}%EE~-8]t(E:tx M G;~@@8XuۋESSvPhu܉EjS MESvWQW@PhvS$ESvWPEW@PhvS$`E}3҃}fU؉Mč_ZMMȈ~S8]tNMM:tBI;ʉM'HMEfAAM̋M 9M~MAAM8YuhQPSjPWDEjQP2$;tKPQBu@-P+P+PEEEĉEEȉEЉuvYmuiuauYuQ3ۃCˍ;tPQBdžBdžPBdžBdž3M_^3[Wuuuju օ5PBSSWuu u֋ȉM;E t)9];MuuWuu u;~Ej3Xr9D =w;tjPeY;t 3;tAuVWuu uPBt"SS9]uSSuuuVSu QBEVYuEYY]]9]u@E9] u@E u耟YEu3!;E SSMQuPu 螟E;tԋ5PBSSuPu u։E;u3~=w8=w;tPOY;t 3;tuSWf uWuuu u։E;u3%uEuPWu uu#uWwYuuuuu uPB9]t uaYE;t 9EtPNYƍe_^[M3ËUuMu(Mu$u uuuuu ( }tMapËUQQB3ʼnECSV3W;u:EP3FVhBVPBt5C4uESP Pj?uESP Pj@uSEP PjAuESPxP PjBuESP] PjCuESPE Pj(uESP- Pj)uESPP PjuESP Pj uESP PhuESP Ph ]SEjPP _[ËUVuvvv v}vuvm6fv ^v$Vv(Nv,Fv0>v46v.v8&v<@v@vD vHvLvPvTvXv\v`vdvhvlvpvtvxv|@wlaVK@5*,^]ËUSVW} Bt@hj<{YYu3@EtV+VYYdž;t PQB73_^[]28tSV<0|<9 ,0A8u^[<;up8uUVut5; CtPPYF;CtP>Yv;5CtV,Y^]ËUS]V3W]u9su9suuuE C:j0j2zYY};u3@wj Yjy3YE;u uYщ09sjyYE;u3FuuYY0u{>VjWEjPPEFPjWEjP; EFPjWEEjP#< Et VY뎋E0|9 0@8u7;u~>u CE CH CuHE3AEt5QBtP֋tPօuYYEEE3_^[28tSV<0|<9 ,0A8u^[<;up8uUVut~F ;CtP YF;CtPYF; CtPYF;$CtPYF;(CtPYF ;,CtPYv$;50CtVY^]ËUSVuW3}u}9~u9~u}} C6j0jwYY;u3@ujJwYE;u Suj Y CEu IK@MC3@39}tM;tPQB;t#PQBuYYEE3_^[3QHl; Bt $BHpu><CËUES3VW;t} ;w0j^0SSSSS#E Ù+‹E<7E0YYu M9 }Nu ^;] ~_^3Ʌ[]ÁNPBFFËU B3ʼnEVtS>tNhBV+YYt=hBVYYujEPj wPBt/uVYM3^OjEPhwPBu3׍EhBPYYuQB뻋U3fMf;Bt @@r3@]3]ËV3#,aB<w ,A<wtЊ u׋^3 BA|Z~aw@ËU|B3ʼnEVW}OׁƜjxEPF%PWPBu!F@2EPv1YYuWYt N~~FЃM_3^U|B3ʼnEVjxEPE%j PPBu3.U9Et} t6WVrY;_t3@M3^ËU|B3ʼnESVW}MׁƜyPBjxEPF%PWӅu f3@bEPvYYjxEPF%PWӅtEP6YYu N~RFuOF t,PEP6z u6N~qY;F u!~VuWYt V~N#;jxEPF%PWӅEP6AY3Yu/NF9^t FG9^ t;6qY;F u.j9^u49^ t/EP6YYuSWYYtN9^u~FЃM_^3[U|B3ʼnEVW}#LׁƜjxEPF%PWPBu!F@[EP6TYYu 9Fu0j~u0~ t*EP6.YYuPW$YYt N~~FЃM_3^voYj@hӜAFPBFuf6ov@Fof@~YYFtjXjhߝAF PBFt tuf6do@YFtjXjhAF PBFufËUSVWJ]Ɯu NC@~t8tWjhB ftS8tNt 8tS~Vj@hB} tb?t ?tPI?t0?t+WvnYj@hӜAFPBFufFPBFF~˃#ˋn}PQBjvPBE tfNffNfHfx]tm=PBf9u%hBj@Sk t"3PPPPPj@Shvׅt,j@C@Phvׅtj jSu;3@3_^[]Åt 3ɅL  +t 3ɅL ff;t5+t3҅T…uFI+t3ɅL 3Ë;to+t3҅T…uVFQ+t3҅T…u9FQ+t3҅T…uFI+t3ɅL 3ËVW^;tx+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3DqB+t3DhqB+t3DIqB+t 3D3"A;BtyB+t3Dq B +t3Dq B +t3Dq B +t 3D3A ;B tyB +t3Dqq B +t3DRqB+t3D3qB+t 3D3 A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3D[qB+t3D<qB+t3DqB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3kA;BtyB+t3DEqB+t3D&qB+t3DqB+t 3D3 ׃$(AA;BtzBq+t3DqB+t3DtqB+t3DUqB+t 3D3.A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3D}qB+t3D^qB+t3D?qB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3DgqB+t3DHqB+t3D)qB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3u{A;BtkB+t3DuYqB+t3Du>qB+t3Du#AJ+t3ɅL 3u3_^ËA;BtmB+t3DuqB+t3DuqB+t3DuqB+t 3D3uA;BtzBq+t3D[qB+t3D<qB+t3DqB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3kA;BtyB+t3DEqB+t3D&qB+t3DqB+t 3D3A;BtyB+t3DqB+t3DqB+t3D|qB+t 3D3UA;BtyB+t3D/qB+t3DqB+t3DqB+t 3D3A;BtyB+t3DqB+t3DqB+t3DfqB+t 3D3?AJ+/3ɅL A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3A;BtzBq+t3DkqB+t3DLqB+t3D-qB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3{A;BtyB+t3DUqB+t3D6qB+t3DqB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3eA;BtyB+t3D?qB+t3D qB+t3DqB+t 3D3A;BtyB+t3DqB+t3DqB+t3DvqB+t 3D3OfAf;B?A;BtzBq+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3DqB+t3DkqB+t3DLqB+t 3D3%A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3DtqB+t3DUqB+t3D6qB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3A;BtyB+t3D^qB+t3D?qB+t3D qB+t 3D3A;BtyB+t3DqB+t3DqB+t3DqB+t 3D3nqB+t3DOqB+3DIRAAAA٫AAzA[ARAAAжAǪAtAdAEA=Yt1jW37YYtPVWP t3PPPPP4~f>u5C豦%C#t*C3Y[_^5C苦%CVPB3;u3^f9t@@f9u@@f9u+@S@WSI6Yu VPB_[^SVWM UEfU f;t@@fuf9t3]ËUSuM薢M3;u8]tE`p39]u.OSSSSS8]tE`p9] tV;vSSSSS?E9XuuQu u [6pQu Quhp EPZ ;u8]tE`p8]tMap^[ËUjuu u]ËUS39]u3AVWu6FV-YY;t"uVW!4 t SSSSSo3_^[]ËUQQSV3W=Cu;teQBVVVVjPVVӉE;tTjP4YYE;tCVVuPj7VVӅt6EVPW1YY}9ut u2Yu;u3_^[ÃuYj hB'M3;v.jX3;E @ul WWWWW3M u;u3F3ۉ]wi=`*CuKu E;P*Cw7jY}u*$YEE_];tuWS ;uaVj5( CQB;uL9=Ct3VG+YrE;P E3u jUY;u E;t &ËUM S3;v(j3X;EsWSSSSS 3AMVW9]t uCYVueYYt;s+VjS _^[]ËUEu 3]V3;|;8)CrVVVVV X3ȃ @)CD@^]j hB%339u;uyVVVVV_ëj [PjάYYu謫Ps>YE PVu蔫P @E脫PW>E EK%^ Pj٬YYËUEPu uX ]ËUEPu uX ]ËUE PjuX ]ËUEPu uX ]ËUE PjuX ]ËU BU39 C#щ C]áB39 CËUSVu 3W};u;vE;t3E;tvj^SSSSS0yVuME9XfEf;v6;t;v WSV誗 *8]tMap_^[;t2;w,nj"^SSSSS08]yE`pmE;t8]%E`pM QSWVjMQS] pQB;t9] ^M;tt} ^]ËUG @SVt2u,E+M}C>u8*uϰ?d}^[]ËUxB3ʼnES] Vu3W}u薙u5l3PPPPPt `p F @u^VFYBttȃ @)CA$uttȃ@)C@$g3;]P C39 ʀ Xw  Bk @Bj^;jY; $A3t ƒ tHt4+t$HHtV K ? 3 $  *u,k ʍDЉ*u&k ʍDЉzItUhtDltwbS;luC8, <6u{4uCC<3u{2uCCYYu ËUVMEM >t} ^]ËUG @SVt2u,E+M}C>uS8*uϰ?d}^[]ËUEAQ]ËUB3ʼnEES] VuWu3;u3WWWWWAt `pF @u^V8YBttȃ @)CA$uttȃ@)C@$i;apu9E3pF39N, %uRj PV ~08$u%9uh@0WP 9u`j PV蹌 HQ9u(;9$d;~$1B 9u 99ƒ tIt5t%HHt~r gXL*9u@j PVS HQ9uL;9$dx;~099j*S14;lj  k ʍDЉi ^ *9u@:j PVh HQ94;lj Ƅ8*< k ʍDЉ ItUhtDltw  >luFn b V <6u~4uFF3 <3u~2uFF @Dž 9?Q@jQi9} Dž u$gu9u]l9~9~̋]VY;t뛃cY4Ht@xPPtP5pBiYЋt%9uP5|B5YYYgu!;uP5xB YYY8-uDžDž$sHHDž'DžQƅ0Džc9099u ;jtd9cc9u)099u jT4Qd @tO9u@c949u@sc94E@tD9u@'c|9tD4x9u@\c89u5099uSQ43@t;|;s؃ځڋu3ۃ} Dž9~ u!u t-RPSW09~N뽍E+Ft ΀900@c94tO;u TB$8+ ;tE0@@}uE#u M EE#;tD=t)=@t"=t)=@t"=t=@uEM#;u E]EE@]E#=@=tw;E;yvv0fE3H&HREEjSS6 tSSS6#ƒjEP6 utk}uYEE;bPjSS6 CSSS6#ƒE%=u6[@Y]j^0d=uSj6P) EASS65) EEE+PD=P6H 9}ۋ @)CD$2M0 @)CD$M ʈ8]u!Etȃ @)CD }#;u|EtvuHQBSuEjPuWu 8QBu4@M}ED% u$L& t9]t@MED& SMQuP4QB{M;p;MgMD};t M9 u ]EÉ]E;M<< t CAMEH;sA8 u AAM uEmEjEPjEP4QBu 9ur9w}v1轡E"t MMEt e]MuE^tMEtEM؃ىEM}tEЃ`pEU_[ËU3Puu u9 CuhBPC]ËUjuu uu&]ËU= Cjuu uuhBj]ËUjuu uu]ËUQeVEPu u u9Et薠t 荠M^ËU B3ʼnEjEPhuEPBu EPnSYM3MËU4B3ʼnEEME؋ESEЋVE܋EW3M̉}};E _5QBMQP֋(QBt^}uXEPu օtK}uEuEu ulYF;~[wSD6=w/_;t8-WWuujuӋ;u3P3UY;t E}9}t؍6PWuDK VuuujuӅt];tWWuSVuWu QBt`][QB9}uWWWWVuWu Ӌ;t=t7=t0=t)=t"'3SSSSS豀Eu 3;|;8)Cr 뻋<@)CL1tPfY]D0tu uYYE萌 ME EuYUWVSM tMu} AZ I& t' t#:r:w:r:w:u u3:t rً[^_%xQB%|QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%QB%RB%RB%RB% RB%RB%RB%RB%RB% RB%tQB%pQB%hQB%dQB%`QB%QB% QB%QB%QB%QB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%PB%0QB%PB%PB%lQBUVut!;u t;uuu$u uuuG|^]ËVWjV3Y@PYYt,Єt"uFG@Fut R:>Y3_^j hB3u܉uЉuj菰Y]hBVEPA ;tu VVVVV{;9uVuYY}໬SB9u t u YEWM܍D EjPR u؅WuVX 3;t QQQQQ{WYD8EԊ<\upj\WYY9ESuV|X 3;tpSSSSSza};tVWYY>VSBSYYu*LB 2&\ 2BVfv6|lVD. v^Dv`TB4$ ~6N`r0F`l (6N^nz"th>~p^LZ.d>P$@@ @{kAZxAz7BCBՉ@ITCreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.3\message_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBInstallation failed.no such folder (%s)unknown CSIDL (%s)sSHGetSpecialFolderPathAfunction not availableshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissiSOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOSErrorValueErrorbuiltinsPyLong_FromVoidPtrPyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleRunning Script...Could not open postinstall-script %s Py_FinalizePyRun_SimpleStringPySys_SetArgvPy_Initialize*** Could not load Python ***PyErr_PrintPy_SetProgramNameOut of memory!Running the pre-installation script failed Can't load Python for pre-install script (%d)Runtime Error100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Could not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py)Times RomanSetup %sCould not register window classSetup.exeSetupWindowClassThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreDon't know Python's installation typeStrangepython%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:UninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** a%s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINE*** Installation finished %Y/%m/%d %H:%M *** Postinstall script finished. Click the Finish button to exit the Setup wizard.*** run_installscript: internal error 0x%X *** 300 Run Script: [%s]%s \Scripts\-installPlease wait while running postinstall script...IsUserAnAdminSetupFailed to start elevated process (ShellExecute returned %d)runasif exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script*** Could not run installation script ***-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removed%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %sYou do not seem to have sufficient access rights on this machine to uninstall this software%d Root Key: %sOut of memoryAre you sure you want to remove this package from your computer?Please confirmcould not open logfiler2. arg is not -u-uWrong number of args%s%cimport py_compile; py_compile.compile (r'%s')Py_OptimizeFlagPySys_GetObjectCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Bad user_access_control valueoopsnoneautoforceuser_access_controlinstall_scriptmetadatanametarget_versiontarget_optimizetarget_compilebuild_infoinfotitleSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archive0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfainvalid literal/length codeinvalid distance codeinvalid distance too far back`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checkinvalid distances setinvalid literal/lengths setinvalid bit length repeatinvalid code lengths settoo many length or distance symbolsinvalid stored block lengthsinvalid block typeheader crc mismatchunknown header flags setincorrect header checkinvalid window sizeunknown compression method inflate 1.2.3 Copyright 1995-2005 Mark Adler  #+3;CScs !1Aa  0@`@@incompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionaryhB\B$UBPB@B4B BBB$UBfFK I*TK ITTK IO :i+00SBi+00@_dP/N !:i+00'":i+00 E%6NKKº}`fUܭHb0RF#/xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF΋!  Hx5i+.b`ODV A H FM^2mFT d_N" (2W]/4*&{-zeG'{-ph}OUBl OU3(9O> G e+.bchOU4^ ;ݧB}/NKfNr@"=3H$Oڠ'my4[ J1B&M[Or G:ᠷqEJ ǬMWs5i+.bs5i+.bs5i+.bw~s5i+.b%e{HqC,㐲RO$[Dt.|I)sO>+dWnO@;>V;>V Wt חb@J7<}iFϦODa'wj5Ob0wDObAGQ`{FL!mv`[c'wj5Obd'wj5Ob6J[CAVgqe'wj5Ob5i!Lz)zR88`[|^1/`[@L\J7@呰 חbu`ެ@`ެ.PRO—-T'tE`ެA`tpZdl?<W4plTI?rPB,ɨ=O${aPo0p,oiyŜ?Oɝa4Oص,OꙠς`RWpO6OyѦjc(=O0%G`묡51Mlg~6JNfs3K@~Oq!2)wKL+2V4K@~OqT'B6Q:.7V`ƆEz5K@~OqiI~+.ͩ pO]_eOkm'WFAOлP0 P0 P0 M]`gI6FOEг]K $^5N$̈&HS3M17i;'$9Y:Oh7%9Y:Oh7&9Y:Oh7'9Y:Oh7ի|I˃(9Y:Oh7!FsGF{H@FS2IEt$#CȫR e.{ JOe/P($IZ^9$\E9 O奄`OO\;x8WFTpj@wiKw^ևA)!\_[C+dWnO4DLe+.bSmb`ߌ #Or'>O.jxO^QmOd4'>Or3߷;`[MO KLb`wG:J'i>VMYFDAt;&OF} Ҩ\I;%S| *E yЎf|txM NI{@ >KJ\FЗ4mc-NvEc7VfCNItwׄ8A!ӱJ'8EK}4@ VqC(DW@XzvF@S>LNdL֬+ o.Eцݷ"JL :̿,LB)隇A }jL^6CTw]+.DJQS[bHNAFPCU .4zl'K@-tК#FlHiawhM0Y3S!AbostA^?UX2NfHyu 5ꥂG)]/qNnN9jI=W.I|Kg 4cH~%]bM I]7BWGCQl2$HܨEye64ۅ>eL:er='oOU{p OsCů$53QB`ϝ]v+qAO;ل.CZ0YcwN]ND.Q1RWHΨ}'CBg (#l^"`G3qs03NvFZ9\;û@Z|KJ$M>MEQ wmjKDWw? ec E kjO}c^NIe2mG)fpNr-O&oO}N8úGˢ)qKmHB" C[E|ti!OL'`gp+J=$?xԒhKGM]k>+$%|QOz)(BqF[͟WÅm]rLwx,4Ku@ +׉#G`` WG 35A AlG ؂تI`FtQ<[MEĀd_NM&uf4L3lEZIC~"@0(9A8L"k1%B T #F@FDF[Fʙ^AiXשFh Mm8gh z0Gd<O8m xO4yO"FFFMm8gh 0F1F2F3F%F)F*F0:s*Dw=IF y.Y+F&FEFGFHF:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/Oǝv\Wސy(_FFFFFFU 8r+C+n44FâRX0eu{ڮP9Vu{0ne0E Kvne yOܦϫ|x O jIOQnO09$-1.E^*onePone |~|?ne? PE^#1$-?W2$-?W2$-pw~?neg@ne˳j@ne˳j@ne?W2$-~{S^BEy|KDphKΔӳOհrIOxhO{lhO\`OOrOh7y) Oh7BTyI6 E9A!8ҏFs%E~2]rgO!B> 9}Nr*GݓkFN]ͷghhϓgAc*^Z%Ȕ2AeqKW';?B@ J$SQ`Ɔ(œO>1s-O(hHjxOi QD(ߥl+ rˆLmCBUa{Ӱ~C.`1 y/DĊY F;3bpc(Jg Дէ{E] E)ПS-oEH?syYz(XGA'qQU AJ s Y!WOZ{*lg(M2(TfC'>|a.  O;O.K[K8H]҇26 -&{-r: %wCjW'tVamy!@iaWBVm`ɠI-`:Bn5OCښL%2J4{[kYs=BMQ!B\[/B{NsASÖ.̆I#t9JDf?kјH"tŻ-Gs?zZAe!`[ǽ6NXX$  KiiőԞ(LqmjK H(.~,-Y@o3\.Q Cpg{L\l%IT߁KI s<_z\ LKo(t;sM|@)^vJYӞ~+IzÊChsxDpWJ?,CP0DOAoZ\q"tDk׾ TLrTIkE a`NNe76_I|kHrYM>s: .jxOˡd:aDX7iii9P5}+EutX(T6QB~ۜC]_#ͼ_Ld=xr|խhG2`?uIp4Bf6חKt3 SNwL1"(iv@ YGح+ObC4`[ԄLr?RJ{,AsEOWL"O7v8yOhKKt&1Zs~:6 B}Ftr⋪GMv2̤ pDʹfD.b[GvtH; zr\GڙYkH?x9J4uY&HxHϣ'GVBeUNOyדسDg,ݠeL3"5/QqCAwSk5 X;-3B{_41lxƱLb VBPoz5zD #D@Fgm[M/BT|\?@zpDF[0 49Z I}AaB}KX䌠%D|DZ#&oI Qd5CvSdn0@DH&'E4VwҁnB*O&-bfMlV!jt€I$[a#FVODJ hFXapf_:qJ?򥸱PpZdFK6eJ7`, :i+00Fh3MnMܙS{5)xKt O3CKsw`$D&l;0MHֿRUBu(dT&arrCuƋ.|uU:WPHw[ێ Z܊M`* !sG3^F0MJSkyZ 8y M3,/KqI\M;TQI![Y ,!PCsg?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_.,._;=C=;EncodePointerKERNEL32.DLLDecodePointerFlsFreeFlsSetValueFlsGetValueFlsAllocruntime error TLOSS error SING error DOMAIN error R6034 An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information. R6033 - Attempt to use MSIL code from this assembly during native code initialization This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. R6032 - not enough space for locale information R6031 - Attempt to initialize the CRT more than once. This indicates a bug in your application. R6030 - CRT not initialized R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point support not loaded Microsoft Visual C++ Runtime Library ...Runtime Error! Program: (null)(null)EEE50P( 8PX700WP `h````xpxxxxccsUTF-8UTF-16LEUNICODE SystemFunction036ADVAPI32.DLL ((((( H h(((( H H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~united-statesunited-kingdomtrinidad & tobagosouth-koreasouth-africasouth koreasouth africaslovakpuerto-ricopr-chinapr chinanznew-zealandhong-konghollandgreat britainenglandczechchinabritainamericausausukswissswedish-finlandspanish-venezuelaspanish-uruguayspanish-puerto ricospanish-peruspanish-paraguayspanish-panamaspanish-nicaraguaspanish-modernspanish-mexicanspanish-hondurasspanish-guatemalaspanish-el salvadorspanish-ecuadorspanish-dominican republicspanish-costa ricaspanish-colombiaspanish-chilespanish-boliviaspanish-argentinaportuguese-braziliannorwegian-nynorsknorwegian-bokmalnorwegianitalian-swissirish-englishgerman-swissgerman-luxembourggerman-lichtensteingerman-austrianfrench-swissfrench-luxembourgfrench-canadianfrench-belgianenglish-usaenglish-usenglish-ukenglish-trinidad y tobagoenglish-south africaenglish-nzenglish-jamaicaenglish-ireenglish-caribbeanenglish-canenglish-belizeenglish-ausenglish-americandutch-belgianchinese-traditionalchinese-singaporechinese-simplifiedchinese-hongkongchinesechichhcanadianbelgianaustralianamerican-englishamerican englishamericanBENUBENUBENUBENABNLBBENCBZHH|BZHItBCHS`BZHHLBCHS8BZHI$BCHTBNLBBENUBENABENLBENCBENBBENIBENJBENZBENShBENT\BENGPBENUDBENU4BFRB$BFRCBFRLBFRSBDEABDECBDELBDESBENIBITSBNORxBNORdBNONLBPTB8BESS(BESBBESLBESOBESCBESDBESFBESEBESGBESHxBESMhBESNTBESIDBESA0BESZ BESR BESUBESYBESVBSVFBDESBENGBENUBENUBUSABGBRBCHNBCZEBGBRBGBRBNLDxBHKGlBNZLhBNZL\BCHNPBCHNDBPRIBCB2DBDB(PLXP0Rp4PP2(RDtRzfTN>2&\ 2BVfv6|lVD. v^Dv`TB4$ ~6N`r0F`l (6N^nz"th>~p^LZ.d>PPropertySheetACreatePropertySheetPageACOMCTL32.dllSetLastErrormCreateDirectoryAGetFileAttributesAMapViewOfFilezCreateFileMappingADCloseHandleSetFileTimeDosDateTimeToFileTimeGetLastErroryCreateFileAKUnmapViewOfFilelstrlenAMultiByteToWideChar"GetProcAddressLoadLibraryADeleteFileAnReadFileSetFilePointerGetFileSizeMFreeLibrarySetStdHandle>GetStdHandleLocalFreeHFormatMessageA\GetTempFileNameA^GetTempPathAGetModuleHandleAzGetVersionExAResumeThreadSetPriorityClassGetCurrentProcessGetCurrentThreadSetThreadPriorityCreateProcessAGetModuleFileNameARemoveDirectoryAGetPrivateProfileIntAGetPrivateProfileStringAGetModuleFileNameWKERNEL32.dllMessageBoxA$GetFocuswsprintfAvSetDlgItemTextA^SendMessageALReleaseDCGetDCDispatchMessageATranslateMessagePeekMessageAEndPaintoGetSystemMetricsBeginPaintDefWindowProcAUpdateWindowShowWindowgCreateWindowExA3RegisterClassALoadCursorAMoveWindowGetWindowRectPostMessageAUGetParentYSendDlgItemMessageAGetDlgItempSetCursorUSER32.dll4CreateDIBitmapDeleteObjectSetTextColorTextOutAfSetBkMode^SelectObject:CreateFontARCreateSolidBrushGDI32.dllfRegQueryValueA*RegCloseKeygRegQueryValueExAHRegEnumKeyExAZRegOpenKeyExAwRegSetValueExA2RegCreateKeyExA7RegDeleteKeyAARegDeleteValueAADVAPI32.dllShellExecuteASHELL32.dllkCoUninitializeCoCreateInstance=CoInitializeole32.dllSGetSystemTimeAsFileTimeHeapFreeHeapAllocFileTimeToSystemTimeFileTimeToLocalFileTimeGetFileInformationByHandleCPeekNamedPipeGetFileTypeEnterCriticalSectionLeaveCriticalSectionlGetTimeFormatAGetDateFormatAHeapReAllocGetModuleHandleW+SleepExitProcesspGetCommandLineA<GetStartupInfoA7TerminateProcessHUnhandledExceptionFilterSetUnhandledExceptionFilterIsDebuggerPresentWideCharToMultiByteoGetTimeZoneInformation\GetCPInfoInterlockedIncrementInterlockedDecrementSGetACPGetOEMCPIsValidCodePage>TlsGetValue<TlsAlloc?TlsSetValue=TlsFreeGetCurrentThreadIdHeapCreateHeapDestroyaVirtualFreeDeleteCriticalSection FatalAppExitA^VirtualAllocWriteFileSetEnvironmentVariableASetEnvironmentVariableWSetHandleCountGetConsoleCPGetConsoleModeRtlUnwindSetConsoleCtrlHandlerInterlockedExchangeInitializeCriticalSectionAndSpinCountKFreeEnvironmentStringsAGetEnvironmentStringsLFreeEnvironmentStringsWGetEnvironmentStringsWYQueryPerformanceCounterjGetTickCountGetCurrentProcessIdLCMapStringALCMapStringW@GetStringTypeACGetStringTypeWrGetUserDefaultLCIDGetLocaleInfoAEnumSystemLocalesAIsValidLocaleBFlushFileBuffersWriteConsoleAGetConsoleOutputCPWriteConsoleWHeapSizeGetLocaleInfoWVCompareStringWSCompareStringASetEndOfFile&GetProcessHeap(UB$UBUB$UBUB$UB UBUBTB$UB(UBTBUBTBUB$UB UBUBTB$UBSoftware\Microsoft\Windows\CurrentVersion\UninstallTB TBTBTBtTB\TBLTB4TB$TBTBTB1@SB@SB@SBu@@SB@@SB@@Software\Microsoft\Windows\CurrentVersion\UninstallN@D*C*CBBBBBBBBBBBtBlB`B\BXBTBPBLBHBDB@B PAPADDINGXXPADDINGPKq|]Wcommand/wininst-6.0.exenu[MZ@ !L!This program cannot be run in DOS mode. $Aţ/\ţ/\ţ/\#\£/\%\Σ/\F!\ǣ/\+\ǣ/\ţ/\£/\ţ.\W/\<\ȣ/\p\ã/\Kp\ģ/\%\ģ/\)\ģ/\Richţ/\PEL@H `lp@Xph.textp^` `.rdataJ;p@p@@.data`* @.rsrcX @@Vt$ Ul$W|$S>tpj\V\q@YYt_Wp@؃u'jWp@utWhhr@jՃ WjYYuhp@t Whhr@jՃ \Fu[_]3@^U SVW=p@39uuEVhuVVSu ׃Ep@uu uu  uPt Pp@/9u u jU YYt.VhjVVSu ׃Eu%9u u hr@u jU YY9u t u jU YYEPuup@}EPPPWp@9uu Wp@\VuVjVWp@W=p@׃u9u t8u hr@&VVVjSp@SE׋E;u9u tu hr@jU 3_^[U8}S]VWj8EjPpZE EȋE@E̋Ej8hs@E؍Ej3P]F2}t t*Phr@EjP4;YYtt Phr@j׃ 3EPJYt,t Phr@j׃ 339uuuu SY FSp@_^[U(ES]L+A Q+ƒ9PKWM}:t3efy V3@^_[ËE}4N*>PKE?PK9V. u MN VGF*OMUDE܍PYHEPYM <\ths@PXYYPp@eEE8t;EE0XPuE0Pq@EEMȃ8EuGPuPhq@ t /u\@uPJXYM<\tNu3fF P3fFPvuPjt"uOvvQuP^}tE@PE@ PujUE@ E9E=0M3WsEPWE_M+؍PMWM<\t)PhWYM</ths@PGWYYE\t/u@KSPPhq@]3UE Ph @u  @ u]u jmhD@@ ]UE Ph @u  @ u]u j5hD@@ ]U=4@VWu hh@p@t3hP@Pp@4@EPh @u  @ tY=4@uh8@5,@@YY;3|@u6h\@WUhH@h5@SRYD$tjPYYt$`p@=4@tB=@t9h,@WUhH@h5@SYtjVAYYV`p@3_^][8@tPq@Yt$@q@%4@Y8@U SV5p@W}hظ@Whĸ@Wh@WEh@WEh@WEh@WE395<@u3J;tC9ut>9ut99ut49ut/;t+39u h`@Uu u U_^[ÁP<@SUV3Wt$3;t@A=$r@PVhS5@VVUS5@׉t$5<@$h cD$6D$D$ h@P,r@D$(P$ttD$t$D$ 6h@P,r@D$,Pjjt$US5@6h5@0r@vuD$_^][PUhV5,r@Wh @hP@PE֍Pq@=p@uׅ5@E5$@h @PփE5p@PPEPhօtEPPEPhօt3,hȵ@P4DuP%DP_^USV3WSSDq@ q@5q@@Թ@QWPE֡q@ PWuh @$;u0p@Pth@P,r@tPuVYEYV`p@q@=q@@Pסq@5q@@P֡q@ Pסq@ Pփ9]ht@4C$p@uq@jSq@PEuq@jjuEӋED8Pq@؃(t:ht@SBu;ujPq@uÀ$8SSq@$ h`@Yuq@EY_^[UQQSV5p@W}hظ@Whĸ@Wh@WEh@WEhع@WE֋3;t;9Et69Et19Et,;t(h`@UW u U tU_^[USV5p@W}h@Wht@Wh\@WEhL@WEh<@WEh(@WEh@WEh@WE3E;9u9u9u9ut{9utv9utqh@ӋY;t?h@WUh@W@U,@Ȱ@jVUP6WU(@rE@E @E@EP@3jX_^[UV5r@W3jWWEWPօtEPr@EP r@jWWEWP_^U@El@=tEX@VW3MWQWjWW\@WVP p@;t5ujWh@Lr@PPr@3Wh@VLr@PPr@@@=q@SVuhԻ@P׍hԹ@Pq@$@EPq@q@EPӍEPPh@hPq@q@P5$@h`@h@5$@ӃHuh@5$@5@5$@Vhx@P׃ EPEP3PhPPPPu p@tjh`@PLr@PPr@up@}uPh\@hH@5$@Ӄh@5@5$@h8@P׍P>@PPjjh,@up@tjh@PLr@PPr@Ph,@Ph\@h@5$@Vuh@P׍h@Pq@Pj5@E5d@q@@uq@VuVuh@P׍P > @@PPjjVup@tjh@PLr@PPr@PVPh\@h@5$@ӃjX[_^U=} NV} K} W39=4@)@ƅ=@ S0r@hp@hu}Ed@}Ӎh @P=hX@P<VP<$@;tQh @h@@Pq@WWDq@ q@5q@@Թ@QWPE փuPPh0@Lr@PPr@q@ PWu փ uPPh @Lr@PPr@hjq@Pr@Eh @EHYt{V4th@RYY;N;t +V+щ0@+FMh+F+~q@YPhp@tmSjh@Pp@tT3PPPvPSjEtLvWPq@u(|W@q@MuEp@jXh@p@PYY3_^[̋T$3;tMB;tFHJJJB0HH H H(H,H0H8H<0@HlHPHL3ø̋D$ W3;81|$8Vt$ ;9~ ~u F ]@~(9~$uF$]@F(h0%jPV ;u^_ËL$;ωF}xB0P}|VH$x4^_PF(PV$~^_ø_SUl$ ]VWC43;u(K$M(jPQU ;ljC4u _^][9{(uK${0{,S(}K(+;r*u {4+ȃK(_^]C0K,3[+K0;ȉL$vȉL$S0{4u +ʃL$+t(u {4ȋ+ʃ_C0C(^C,]3[Ë{0C(;Љ{0uC0S,;sщS,_^]3[̋D$8SX|H q8u Ha; u H PUk3UUUR$CjD$4D$4D$5KPQ5$Cl$C Ct@0CL$%3ҹL$рtD$L@\}@C$L$;vL$LD$AH}@h3UUUSLT$L$X҃ CA0 l$1D$L@0}@D$s'nO|$FD$t$r<CtL$LA\}@tT$LB}@K tCt%D$D$$D$%KjD$(PQ" C33 sOF D$rK tACt7D$D$$ȋD$'jD$(L$)T$*KPQ8" C33s(TO|$FD$t$rًK tЁQK A Ct%D$D$$jT$(D$)CRP! C3D$3Ktvs-O|$FD$t$rًK ɉC@tACt%D$D$$D$%KjD$(PQ5! C3D$3K tAKK@;ωL$vωL$S tHR҉T$8t=S zs@R+49;v+׋ʋT$8t$ʃL$|$t$StD$KPVQ L$(CD$ S@++щ|$t$S@K@C@Kt3ɍ1AL$K ɉT$,t-Q҉T$8t"S@;Q sL$8|$D$8D$,C@D$8L$,tL$;rKtT$CRVPCD$ L$+L$,ɉ|$t$K tAC@K31AL$K ɉT$,t-Q$҉T$8t"S@;Q(sL$8|$D$8D$,C@D$8L$,tL$;rKtT$CRVPCD$ L$+L$,ɉ|$t$K tA$KtOs' O|$FD$t$rًK;tT$LB}@R 3l$C tK H,S B0jjjLL$XCA0D$   s'_ O|$F D$t$rًȋЁ3Ҋt$L$LCA03D$3 K  jjjT$XCB0D$  |$P Kt̓+D$T s$ O|$Ft$r݋ȃKȃMws$H]@ D$ CLs@CT CP{@CXD$ D$ T$LB|@D$ ̓+ D$s+d$ O|$F D$t$rًЋҁ;tL$LA|@. 3K@D$3K@ɉL$;vωL$T$ ;vʉL$R t$|$(ʋT$L$t$|$ +t$t$(щT$S@++щ|$ |$t$(t$S@ s# O|$Ft$r݋ȃЉK`ȃK\K`BSdD$ʃChKh;K\s[s#_ O|$Ft$r݋ShU{@3ɊD$fLSpKhAKh;K\rKh;s*3 $d$ShU{@fLSpShB;ЉShr千0KlCLRCTPQjCpPjXD$4D$t L$LA|@1 T$LB|@! ChK`Sd9ShKTKLJ#Ћ ;ՉL$@v<A KTOºKLF|$J#Ћ ;Չt$L$@wċT$@fsR;L$s&L$OF;|$t$rfT$B+KhfTKpKhAD$KhHuh͍Q;L$s+L$OFQ;|$t$r+KhɉD$bLKnL$,ȃfՉT$uJJ;s-d$$O|$‹T$FJ;t$r׋ȃDJ;s)O|$‹T$FJ;t$r׋ȃ +D$,{dSh{`;׉D$tT$,{hfT{p{hGI{hu|$S`Kd9Kh;0KlCLRS`CTPQ RCpPj D$4t8L$LD$Ap|@T$LBT|@L$L|$AT|@vSlKlSPRCXPQK`CdPTKpRjP D$4tD$L@<|@D$)D$rg|$ r]D$LT$ L$(PT$0H L$R0xPK8k<|D$TH P0xC8k<L$(T$ t$|$D$KTKLJ#Ћ;͉T$@v<KTOºKLF|$J#Ћ;͉t$T$@wĄΉL$3ɊʉT$,L$L$J#L$@ыKLL$,T$@;ՉL$v[IT3ɊL$,O‹T$F|$ʺL$t$J#L$.ыKL ՉL$@L$;wT$@++L$@҉D$K@u w t  g@tT$LB |@LSHKHtE;s%KHOF;|$t$rۋKHK@J#ʉK@KH+KXKPJ#Ћ;͉T$@v<,KXOºKPF|$J#Ћ;͉t$T$@wΉL$3ɊʉT$,L$L$J#L$@ыKPL$,T$@;ՉL$v^3ɊL$,O‹T$F|$ʺL$t$J#L$.ыKP ՉL$@L$;wT$@++@D$tL$LA|@L$@KDSHKHtI;s%KHOF;|$t$rۋKHKDJ#ʉKDKH+D$T$ K,+L$09KDvT$LB{@-L$ T$0+ыKD;v<+ʋS0;ʉL$v+ʋS4S(L$+ S4+S0L$T$,S@;ʉT$8vT$(+ыK@T$,L$8L$T$ ;vʉL$+щT$ T$8+щS@L$,L$(T$,AL$(L$BIT$,L$uۋK@ncL$(S@AL$(L$ >K s'O|$F D$t$rًL$0+L$ T$LJSхɉL$0St8CSL$(D$0Pt +QR +QR L$XCA0D$ KT$ ɉT$0u'3Ҋt$L$8ʋʉL$8;Kt L$LA{@`3D$3KK s'O|$F D$t$r;CtSL$LA{@ d_^][8ËL$LT$(Q T$ y_1Q^k@3L$@ȋD$@L$H#L$$̉D$+٨t‹L$;؉L$s(jBT$;sjBT$+M#͋l$L$D+;l$+;l$HnL$,D$Iu*D$(+ȋD$T;+ʼnD$Td$AAFMus;sS+D$(+l$D$T;sc+ʼnD$TAAFMuL$,D$l$TI;s<+l$TD$@AAFMu+ȋD$T;s+ʼnD$TAAFMuD$+ȋD$Tv7PEAAFQAFT$TAAFMT$Tu݋T$D$Tt^AAF|$TvPIFH+ō$H@FH@FH@FL$TL$TwۅtH@F|$Tv@Fl$;T$0sQ;t$4EL$PD$A{@,L$PA|@ t E D$P@ |@E ++ً˸L$PH#BFA D$0+ƒAD$4+A}8_^]<][<̃|$3҉D$+Dž~|$AB;rt$HT$(ЉD$<$T$(u =֋$ D$DL$ +T$8fLG$*ÅD$@D$fD$t]t$ d$t L$@D$8#;tD$73ۉD$D$ЋˋL$ Jtut H#ȋuT$(T$ȉ$_^]3[|_^][|̋L$S\$Wu1D$ʁrr_ [Vt$u ^_[Ãs3t FKur3Ҿ^_[ Án^U [IVVVVVVVVV V V V V VVHw3ҹǿ3MF]VVVVVVVVV V V V V VVʃHtt FKu3ҹǾ3^_ [QSVt&It3Ҋ3ЁP@3ANu߃ UW3܋,P@ҋP@3Ջ؉D$,P@Y3%3P@3Ӌދ,P@P@3ŋډT$,P@Y3Ł3P@3Ã܋,P@ҋP@3Ջ؉D$,P@Y3%3P@3Ӄދ,P@P@3ʼnT$,P@Y3ŋ,P@33ËЃҋP@D$3P@,P@3%3P@3Ӌދ,P@P@3ŋ,P@Y3ʼnT$3P@3Ã܋,P@ҋP@3ՉD$,P@Y%3Ջ,P@33Ӌދ,P@P@3,P@T$P@3Ń3à OrH3܋,P@D$|$"u:Fu:t<"u>"uFu:t< v]ЍEPp@EtE> vFuj XPVSSdp@PAEPp@E MPQYYËeup@%p@%q@hh YY3%0q@%8q@B2 اȧlTD|`4,8JXl|Τ0FZh|H$^4֣ȣn TL>6ک^nzΪB$0:Ωĩ~ĨΨب",6>FNV`jt|bئ̦vh`T>2&Хĥ΢CreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.3\`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checkinvalid distance too far backinvalid distance codeinvalid literal/length codeinvalid distances setinvalid bit length repeatinvalid literal/lengths settoo many length or distance symbolsinvalid code lengths setinvalid stored block lengthsinvalid block typeheader crc mismatchunknown header flags setincorrect header checkinvalid window sizeunknown compression method~@~@~@}@}@}@}@}@}@~@incompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionary inflate 1.2.3 Copyright 1995-2005 Mark Adler  #+3;CScs !1Aa  0@`@@0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfaFF Fn@1n@ޢXrh(pXp,(qt4p@Tp$rq(*pB2 اȧlTD|`4,8JXl|Τ0FZh|H$^4֣ȣn TL>6ک^nzΪB$0:Ωĩ~ĨΨب",6>FNV`jt|bئ̦vh`T>2&Хĥ΢SCoUninitialize CoCreateInstance-CoInitializeole32.dllIPropertySheetACreatePropertySheetPageACOMCTL32.dllqSetLastError-CreateDirectoryA GetFileAttributesAMapViewOfFile5CreateFileMappingACloseHandlelSetFileTime_DosDateTimeToFileTimeGetLastError4CreateFileAUnmapViewOfFilelstrlenA>GetProcAddressLoadLibraryAMultiByteToWideCharLocalFreeFormatMessageAFreeLibrary&GetModuleHandleAuGetVersionExAWDeleteFileA4GetPrivateProfileIntA:GetPrivateProfileStringA,ResumeThreadwSetPriorityClassGetCurrentProcessGetCurrentThreadSetThreadPriorityDCreateProcessA$GetModuleFileNameA'RemoveDirectoryAGetFileSizecGetTempFileNameAeGetTempPathAKERNEL32.dllMessageBoxAGetFocusSendMessageAEndPaintFGetSystemMetrics BeginPaintDefWindowProcAPostMessageA,SetDlgItemTextAwsprintfA5GetParentSendDlgItemMessageAReleaseDCGetDCMoveWindow\GetWindowRectGetDlgItemDispatchMessageATranslateMessagePeekMessageA&SetCursorLoadCursorAUpdateWindowjShowWindowYCreateWindowExARegisterClassAUSER32.dllSDeleteObjectSetTextColorTextOutASetBkModeSelectObject6CreateFontA0CreateDIBitmapMCreateSolidBrushGDI32.dll[RegCloseKeyrRegOpenKeyExA{RegQueryValueExAgRegEnumKeyExAzRegQueryValueARegSetValueExA_RegCreateKeyExAbRegDeleteKeyAdRegDeleteValueAADVAPI32.dllrShellExecuteASHELL32.dllstrchrmemcpymemsetstrncatstrcatstrlenstrcpystrcmpstrrchrXfprintf_vsnprintfmalloc_snprintfstrncpy^freesscanf_putenvremove]freaddftellbfseekWfopenLfcloseOfflush_freopen_iobffwritestrftimelocaltimetimesprintf_fstatstrtol_pctype_isctypea__mb_cur_maxqsortreallocRfgetsstrncmpc__p___argvb__p___argcMSVCRT.dll_exitH_XcptFilterIexit_acmdlnX__getmainargs_initterm__setusermatherr_adjust_fdivj__p__commodeo__p__fmode__set_app_type_except_handler3_controlfpPGetStartupInfoA_strnicmp_strcmpi_strdup_tempnam_close_read_open@D@@D@@D@@@ز@D@@IJ@@IJ@@D@@@ز@D@@ @@l@T@<@,@@@@@@б@@@@@~@@@@@Software\Microsoft\Windows\CurrentVersion\UninstallSoftware\Microsoft\Windows\CurrentVersion\Uninstallmessage_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBsno such folder (%s)unknown CSIDL (%s)function not availableSHGetSpecialFolderPathAshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissi100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Runtime ErrorTimes RomanThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Don't know Python's installation typeStrange\python%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Py_OptimizeFlagPySys_GetObjectPyRun_SimpleStringPy_FinalizePy_SetProgramNamePy_Initialize%s%cimport py_compile; py_compile.compile (r'%s')SOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOut of memory!rbRunning the pre-installation script failed Can't load Python for pre-install script (%d)aPyErr_PrintOSErrorValueError__builtin__PyLong_FromVoidPtrPyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleUninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** %s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINEPostinstall script finished. Click the Finish button to exit the Setup wizard.*** Could not load Python ****** run_installscript: internal error 0x%X *** freopen stdoutfreopen stderr300 Run Script: [%s]%s \Scripts\-installPlease wait while running postinstall script...Installation failed.Running Script...Could not open postinstall-script %s PySys_SetArgv*** Installation finished %Y/%m/%d %H:%M *** IsUserAnAdminSetupFailed to start elevated process (ShellExecute returned %d)runasBad user_access_control valueoopsnoneautoforceuser_access_controlinstall_scriptmetadatanametarget_versiontarget_optimizetarget_compilebuild_infoinfotitleSetup %sCould not register window classSetup.exeSetupWindowClassif exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removedYou do not seem to have sufficient access rights on this machine to uninstall this software%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %s%d Root Key: %sAre you sure you want to remove this package from your computer?Please confirmOut of memorycould not open logfiler2. arg is not -u-uWrong number of argsSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archiveCould not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py) 8nhklmn     0 8Z@(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:Phn@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}(PKq|]g6,ddcommand/wininst-10.0-amd64.exenu[MZ@ !L!This program cannot be run in DOS mode. $,fBfBfBv(fBfBfBfBfBfBfCDfBhfBfBfBRichfBPEdܯO#  F@e`@.textDF `.rdataL`J@@.data\@@.pdata4@@.rsrcP@@Ht9t9/\DˆHuH\$Hl$Ht$WH IHHH;\H|HHtuH4Ru/3H*RuHtHJUHL Hֹ@u!QHtHULƹ\HmH\$0Hl$8Ht$@H _H\$Hl$Ht$WATAUHPH$EMHDHd$0E3E3HD$(l$ QHHQuLIHuwPt ,QFHtcH׹ӅtKHd$0E3E3HD$(D$ PHHu)HtHHTLǹ H׹3Ht H׹$$LD$@YPLL$@LD$@HT$@HIPHEuCPHd$(E33EADl$ /PHHPHuHrHSPHd$ E3E3AQHOHHOHuH3H.SHL\$PI[ Ik(Is0IA]A\_H\$Hl$WHAHHA3HL$ DBXzGH\$ D$($L@SHL$ DKWSD$8Hl$02UH$tHt2HRHL$ iW;tHtHRD3HL$ mtHtHRD3HNL$I[IkI_EuLc$9zH\$UVWATAUAVAWH$`HHz.H3HLIEADE+dED+LHT$xAA|PKHL$HB Ll$`t3E3Dl$@fE;lHcHHc~*B'LcL>PKuA>PKuN .HcHHD$PFFIFH ;T$DIVHIcHHUHDII+HD$p HuH3H}HUHHр|\HT$XtH}HHQfGHM MHcHD HD$hHD$HH8t?LI9HT$PH3HLAI IMILL$HI9uMFHT$PHMH|Ll$XHM:H3H}H|$hHB|)\Ll$`tXF DNLl$0fD$(FHUL3fD$ Ht*NEFDNHT$pLl$(L$ H3MtDL$@EDHAAՋL$@ADL$@;T$DLD$xE3HT$HMIJ\HNHHH>LD$ HNH\H=>t3H=*'HT$ HMitH rH /lHPNGH&HcE3H3DHT$0}>tHT$0H 1NonH oHMLD$ t[3H$@H3ByH$`HP_H\$UH$@HH(H3HHeHd$hd$XHd$xHd$PHd$`3HUJyHOH oDZHD$XLMLEHD$@HD$hHNHD$8HD$xHHD$0HEHD$(HD$pHD$ Zu3HD$PL ȌH 3DHD$ Iy H>N_HL$PLD$`H0Hy HM9HL$PHUHy HMHL$PHUHP8y HgMHUHtHL$PHPXy H#MHT$hHt#HL$PDD$XHy HLHT$xHtHL$PHPHy HLLD$pHEA33D$(HD$ EHL$`HHUDP0yGLD$pH FmHLDYHL$`HtHPHL$PHtHPXHcHL$`HPHL$PHP7HH KkHH3vH$H]LHHIKHMK IKMCHLHvXu3-FDL$`LD$hHT$0HFH L)kHHH m"H%vhH\$H|$UH$PHH$H3HHLkHpLHD$ [FHoH>DHD 6jDgHKHL$0FLL$ LEHT$0HAt#LL$ LEHT$0HAt3?3HH}HHHfG3H}3Ɋ HDuHMCHH3tL$I[I{ I]H\$UVWATAUAVAWH H%LHTCHKHHACHKHL.CHKHHCHKHLCHaKHHHD$hBH9KHLBHKHLB3HD$pHHMMHMMH JHHt[HJHHpJHH>fH-!HHiHc3HHAHHLAH rHl$hHD$pH-thL%UHe3L-}UH\$`H A_A^A]A\_^]@USVWATAUAVAWHHl$ H"H3HE`HHJMMcHHMAHJHHEAHJHLmAHJHHHE VAHIHLHE?AHMHIH+AHMHIHEAHMH[IHE(A3H9MMHM{HrH9M(hH_H9MUHE8 =3Hu H~ILHH`FH fLDI!CUHMH 63A!k3E~0L56M+IJ 0Htr3IHI;|LuL%c6AIA3E~I Ht5yHI;|HU0λ}uMDEDA@HcHAH;w HH"H+H|$ H~HHf8 U A֋S HM`H3pHexA_A^A]A\_^[]H\$Hl$Ht$WATAUAVAWHPI!DL33IM$Hd$0E3DHȺD$(LD$ >H؋==H$*=HӋHD$@=Hӹ=H QHHtMEIHHϋ<赁HGHH`H$<HT$@<3H7=;s 3H#=GHcwE3HHtDE3E33HD$=HL$DHLl$ =D$HE,H=I=L\$PI[0Ik8Is@IA_A^A]A\_HHXHhHpHx ATAUAVH LHFLL=HFIL9=HRFIH&=HOFIH=HFIH=HMt;Ht6Ht1Ht,Ht'H `AIXIՋ؅t׋H\$@Hl$HHt$PH|$XH A^A]A\H\$Hl$VWATAUAVHHH3H$H33M"Hd$0E3EAHD$(LD$ [<H:L:H֋Lu:H֋j:H kNBHHu-<HEHL$PD=HL$PHH2Hˋ :Iչ:Iֹ93H:DG-HcDuHHtgd$@HEH+Š H„uE3E33H;Hd$ HS,LL$@DH:D\$@HA,AHGt H DH ;I:H$H3%lL$I[8Ik@IA^A]A\_^H\$WH`HH3H$P3HtEHD$0D$(HD$@DD3ҹHD$ 8HT$@HL$PDHL$@8D$PHL$P/:LHcH+HL PHH ]LDHT$PA;3H$PH3@kH$H`_LISMCMK VWH8HH3H$ IsLHL$ L蟂tmt$H `HHCH _Hc~DE3A;L$XH _LǺ;9HT$ C:L-CHT$ HA0:yH \`HtHBL$XzH$X.赀HtBH=BHu/H$X| H `HtL$XHwByH$ H3iH8_^HHXHhHp WH@H`E3H@EA@ 8HHu3iHT$`H6Hd$(d$ E33HEA7HH7HtHd$ E3E3AQH7HH7.HH\$PHl$XHt$hH@_H\$WH0H=JHtQH=^uG9LJd$(EH IPHMAHHT$ S5HHH^9H\$@H0_@SUVWATAUAVH`H#H3H$PL$E3+TM+TMuM1"HcHف|PK;{V4tH#A3D9stHcCHH+HcCH+H I+SH{+AHcH+pHHHT$@4H@HL$@LE34tgDE3Lt$0AHHfDt$(fDt$ {HHtPLcHH}|H3HHH觺HIEI4$55H?3H$PH3fH`A^A]A\_^][HhHL$07HL$07HL$0E3E33D$ 7uHh@SUVWHHQH3H$Ht X7&HT$pP7HJ7E3ɋиgfffE33H ~?HL$h3ɉL$`L$XL$PL$HL$@L$8L$0D$(D$ 2HH2HHv2H3H=CL CPHDHɉL$ HO2HI2H3P H=qCL jCDHHɉL$ H2HH1H 2HT$pHG63H$H3 eH_^][H\$Ht$UWAUH$@yH+HH3HHQH33D$`HD$hHt$p13HuHD$xx5HEq1L-B>HL$`LmHuHES5fuH VL>H=E34H=HML43\1H65)5Ht$XH\$PHt$HHt$@|$8D$0LEE3I3ɉt$(t$ 4HȺH4H4HHH3cL$I[(Is0IA]_]H\$WHPHkH3HD$@HT$0H=43}4p4DT$0L$"H L 2HL$ LH3t H8fH=2u ~H~ H8H 6\SHt%Ht H!AH=Hn!tH;!3H8H|$DLDAAu,DиD;rDED;D}HuBzAsFEtAIDEAuD;rDиqAkAA .qAn^A AP[AIDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDEEAiDAiDHE AAHAAIDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDACEDEH@EtAIDEAuAiDAiDAE AH|$H\$DADAqADAEAEqi+DAiD+ںED+CD;r DD;rD=r;rH\$A _WH!H\$Ht$H|$DEHH5AEt#t AHH3DD3AuA !AHD3AHADHAD3HD3AD3 D3CEAHADHAD3HD3AD3 D3CEAHADHAD3HD3AD3 D3C EAHADHAD3HD3AD3 D3CEAHADHAD3HD3AD3 D3CAEHAHDAD3HH D3AAD3 D3CEAHADHAD3HD3AD3 D3CAHADHAD3HD3AD3 HArUEID3AHEAHADHAD3HD3AD3 IuEt AHH3DD3AuH\$Ht$H|$AAHHXHhHpHx DѽD#EDЋAH5#DDAEt+t&AHHH3ADD3AuHZA AAHD3SAHADHAD3HD3AD3D3CEAHADHAD3HD3AD3D3C EAHADHAD3HD3AD3D3CEAHADHAD3HD3AD3D3CEAHADHAD3HD3AD3D3CAEHAHDAD3HH D3AAD3D3CEAHADHAD3HD3AD3D3AHADHAD3HD3AD3HArYEIHAD3EAHADHAD3HD3AD3IuHEt&AHHH3ADD3AuH\$Ht$H|$ AAA#AA#Hl$A3tt3HuH(LLLL+A CIAIIuH(HHXHpHxUHhH0HVH3HE AED$ L HH |HT$ HMgHUHL$ YHT$ HMK@t HM"t&HUHL$ &@tHL$ u3ދHM H30L$0I[IsI{ I] Hu3@SUVWATAUAVAWH8Hi(DqH9LALMXHu`Dm4]@DUDLII+DMhIHH+ЋE,A$E0HT$$HE8HD$LMlMLL$H4$$HT$ AsGAHAJAH#"uG@ʸA#AEAAD+EuIAEAt+D;sHAAʸ#DD+AsGAHAJA$H#ȋ4'@A$ʺH $#Ћ4@։$D+tD;s'HAAD;sHAAʸD+#A+D$;-+;$v HT$LJEu*$+LA;D+IIAAulA+D;sG$A+LA;sXD+M+ICAuLJE;s;AE+IIAAuLA;sD+IIAAuML+Av7AKJAAIIA@AAAHA@AAuEtuAAH4$IAAv AAIALL$YIH+ȊAHIA@AAA@AAwEt#AH4$IAAvAIA LL$H4$I;sBM;s=HT$ t E %H2Ht2HK2ID$ EAE+AE|$H+D+D+HGAI$I@Et$ID$ADUD#ÉE@H8A_A^A]A\_^][3HtaHQ(HtXBAA HA D@DALHB HB HB,B4HB@HHHHB`HBX3BDøH\$Hl$Ht$WH HHtZHy(HtQy3Ń0}t |/*HW8Ht9_(t HI@V8Hg8HΉo_(H\$0Hl$8Ht$@H _H\$Ht$WH HMA81AXHuAHa Hy0uHa@H!HA0HA8H !HAHDHK@HC8S0HHuF1HC(H`8HtHK@HS8Hc(H\$0Ht$8H _ELºEHtJLI(MtAy Aa@AaD3Ã+EADEA wʸEQDAA#AA@͸H/Ah AlHAXH7HA`HHXHhHpHx ATH HY(E3HL9c8u!K(DHN@V0HC8HuD9c,u K(Lc0{,+n{,HV;rHK8DH+#Dc4C,S+{4K4;GHK8H+D#+tHVHK8DI+#k4{4C4K,;ADĉC4C0;sljC03H\$0Hl$8Ht$@H|$HH A\ÉT$USVWATAUAVAWHHXE3ۋLHHy(HL9YL9u D9YDg@wD D]HDENMVM.E~LUDMXLmD}EDM`C ;8t`vHXA_A^A]A\_^[]EAEIALmD;rDgAt H7`At H7KHO Ht AGt$DeAHUDeًOAE3ۉGEA"E@AEIALmD rHG HtD`Gt6ADeHUAEAADeۈEڋO&E3ۉGEA"EAEIALmD;rHO HtAĉAHG AH Gt(DeAHUDeًOAE3ۉGASEAGHG HtLXG_HA;AG߅HG HLHMPH+WH;vs+qEAEIALmD;rHG DgHHtD`Gt$DeAHUDeًOAE3ۉGEA>DIIGtODIG)_HD+LE3LmD9_HD_HGtyEAMHG E(IHtHP HtOH;H(sD,GHEtA;rGtHUODE3ۉGD+HEELm HG HtLX D_HG1EtjAMHG E(IHtHP0HtOH;H8sD,GHEtA;rGtHUODbE3ۉGD+HEEDmHHE]`E~IFEXAFHEIwD3Dg@9w,u?|A;^rI`SD9_u) 9EtAEIALmD;rGtRAuIE333HUAGfDe؋OGE3AEDE`DMXLUHG D_HtH@GAAȸB+k;uzA$<tH2IF XAÃD9_(u7O(E333ɉGgAAԉGAFLAA D'7;O(vHM2떺H'2IF HG HtLX0LmDE`DMXLU]PGtSt g΃A+"EAEIALmD rAA;t H>12OHEAgDoHE<E;EGE;EGE8HUEIAH]DMXLUE+E+LD)oHLm]PDMXLUEAEIALmD rAAĺ#AAA#AEGAFL D9_  E333eDE`DMXLUE3ۉGAFL ASZQD9_t;θ#A+E)AEIALmDrAA΃GAătBttuHF$tMt*OJD9_"E/AEIALmD rE+EFDGEt4OAIH+D9_t4DMXLUE3ۉGASAFLAAEDM`A%AD9_AE;Ot H3#7EAD9_D9_"EYAEIALmD rD;gH"EGHAIADMXLUG4;v W,+++ЋGHHW8;v GHIH+ыA;AGD++I+DMXGHBAIuLUQAD9_HGtTVDE3ʃf@+щVDr%N@LL$0F@AIAN@VDsHN|HT$0!DGHHN|G )GDW H~|t#DOHDW DO 3H\$8Ht$@H _3HtHI(Ht9 u9ADu øH\$Hl$Ht$WATAUH HLH=H4Hz(H'HB0HHz8HK@AAAHHu 3H9o8t&O(AEHK@S0HHu HK@HS8IHAXu AHHd L_XHHHL;rMu\L}Et A|A$E'LE3I_A ~LEA̺pLEI@AHtD#HuPA-uA+uD#HEWAMA$CEu(A0tA 8;xt ;XtA&A AuA0u;xt;XuDcHM@3҃ADAEJAȃt Ã0At.AD$A<w A;sA;r"u;vMuH@uMIE3\AD#HA@u@u<ƃtw u)A;v$["@t@$AMtI@t߀}t HMMtM>@8}t HE3L\$@I[0Is@I{HIA_A^A]A\]H83EL9D$ Hu H 3iH8H8d$ IELHHGH8H8=QELHD$ u H 3H8H8IELHHD$ H8Ht7SH LH 3<uYHoYH [@SH HH Hu 肂?H HALE3H [H%H\$Ht$WH HHw|HHEH MHu K?H (L3uHHu,9GtH荂t X X HgX 3H\$0Ht$8H _H\$UVWATAVHH0HeH=1HHu@HukXXHHu_Dr=A1Ht HȻH+H;}HH H;sHTHHH蛌HEHHtLHSHzʎHL轎L;hH;_J\ HIHEHH3LHHHEHA=E4HEHII+LI HHMHAtHMHHkH= d$(He@Hd$ L3D3DuW*Ht$d$(Hd$ DL33tEdIc̺^HE@HtDL33Dd$(HD$ su HM@Ht>HM@>HM@DfD4AHM@HD+HAL33Dd$(HD$ %tHM@3BtHM@H2P(3H\$`H0A^A\_^]@SH Hٹ)3HbعH [H\$Ht$WH HH3ۋHuUE-ƑHHtU腐H\$0Ht$8H _H\$Ht$ WATAUAVAWHHkH3H$HHct$L3ۋHuOU(U"3DB0Hu%UT ;5eLLIL=bAMkXKBL AA#fK Ft!uT oJ !A;t ttKT8u fO7wfDwf__ H_(H_ H_u_K H\$(HD$HHD$ E3E33J !#L$HO_ _fDwK HT$`J !MTGDt$`t $ fG9\$tu 9\$xuH_ hHT$@HL$tYHT$PHL$@AD$\DT$ZDL$XDD$VT$RL$PL$0D$(DT$ 輕HG 9\$lu 9\$puHG dHT$@HL$lHT$PHL$@fD$\DT$ZDL$XDD$VT$RL$PL$0D$(DT$ BHG9\$du 9\$huHG \HT$@HL$d tiHT$PHL$@tUD$\DT$ZDL$XDD$VT$RL$PL$0D$(DT$ ДHG($GGfG_y(RR AH$H3L$I[@IsHIA_A^A]A\_HHPHHL@LH SVWATH(H33HuQA3HtLd$`G@H讦t*t%HcHHLHkXIH H HLB8u%ttHcHHHkXI A8tP@u*HtME3HT$XH諛H׋'H^H(A\_^[LD$LL$ H(LL$H@H(LD$LL$ H(LL$HDH(HHPL@LH H(LHE3H(LD$LL$ H(LL$H$H(HHPL@LH H(LHE3H(H @SH u;LHcȺ<HHu$PHˉHhHuv3HHH0HHt H;E3HEHILIHIHkXLIt ItMuIH0Iu3H [H(;=t艦H H(@SH HH H;r>HtH;w2HH*H+HHHH?L謊kH [HK0H [H%@SH Hڃ}zkH [HJ0H [H%HaH;r5HH;w)qH+H*HHHH?LH0H%} rވHJ0H%ffHL$L\$M3LT$L+MBeL%M;sfAMAM;uL$L\$HLD$LL$ USVWHHXHeH3IHDB(HMHu0M=\HtHtLM@HMH;HEBGE3H}؉]H}ڗHtMx HE HU3HX_^[]LL$ H8HD$`HD$ H8ffLM t$H+t(HItu IHHHIv&I~LLIM3IMtIHItx$tuHItiHtbHItV$tSHItGHt@HIt4$t1HIt%tHIt$tHIu"-/H HL$ *3LEHHHHHH\$HHt$PH|$XH0A\A@@SH ILHHu.$AHIHHt3.H [HT$LD$LL$ USWHHPHeH3HHMDB(Hu;.(KHtLM0HME3HEEBH]H]xM؋x HM HU3.HP_[]LD$LL$ H(LL$H8H(LMCMK H8IC E3ICH8LL$ H8HD$`HD$ H8LMK H8IC(ICIc_H8LH8IC0ICIC(IC<H8LMCMK H8IC E3ICH8LL$ H8HD$`HD$ H8HHHHPL@LH H(HPH(HHHHPL@LH H(HPH(HHPL@LH H(L@`H(HHPL@LH H(L@lH(@SH@HcHL$ yHD$ ~LD$ ?DH@DXA|$8t HD$0AH@[@SH@=HcuH3X%YHL$ 3HD$ ~LD$ A?DH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ >DH@DXA|$8t HD$0AH@[@SH@=HcuHKXVHL$ 3HD$ ~LD$ [>DH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ =DH@DXA|$8t HD$0AH@[@SH@=#HcuHgXVHL$ 3*HD$ ~LD$ w=DH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ =DH@DXA|$8t HD$0AH@[@SH@=?HcuHXVHL$ 3FHD$ ~LD$ <DH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ .<DH@DXA|$8t HD$0AH@[@SH@=WHcuHX%YHL$ 3\HD$ ~LD$ ;DH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ B;DH@DXA|$8t HD$0AH@[@SH@=oHcuHXVHL$ 3vHD$ ~LD$ :DH@DXA|$8t HD$0AH@[@SH@HcHL$ HD$ ~LD$ ^:DH@DXA|$8t HD$0AH@[@SH@=HcuHςXVHL$ 3HD$ ~LD$ 9DH@DXA|$8t HD$0AH@[@SH@HcHL$ -HD$ ~LD$ z9DH@DXA|$8t HD$0AH@[@SH@=HcuHX%YHL$ 3HD$ ~LD$ 8DH@DXA|$8t HD$0AH@[@SH@HcHL$ AHD$ ~LD$ W8DH@DXAW|$8t HD$0AH@[@SH@=HcuHX%WYHL$ 3HD$ ~LD$ W 8DH@DXAW|$8t HD$0AH@[@SH@HcHL$ UHD$ ~LD$ 7DH@DXA|$8t HD$0AH@[@SH@=˕HcuHX%YHL$ 3HD$ ~LD$ 7DH@DXA|$8t HD$0AH@[@SH@HcHL$ iHD$ ~LD$ 6DH@DXA |$8t HD$0AH@[@SH@=HcuH'X VHL$ 3HD$ ~LD$ 76DH@DXA |$8t HD$0AH@[3Ã@SH@HcHL$ qHD$ ~LD$ 5DH@DXA38L$8t HD$0Eu_uH@[@SH 3҅u_uH [@SH@HcHL$ HD$ ~LD$ 5DH@DXA38L$8t HD$0Eu_uH@[@SH 3҅u_uH [LH;t MtL+A HIADJuH;Hl$ WATAUH H\$@Ht$HLt$PN4MIHLffIIL;wDHHAՅHOHH;vLHH;t$HtH+fD HIȈDJuH+I;wLt$PHt$HH\$@Hl$XH A]A\_@UATAVHMILHu!HtHA^A\]MtMtHH$0H$8H$@L$LjL$LLE3ff3III+HHpHw&MLIINt NHHIHAԅ~6LHL;t+ML+fffffA HIADJuIIAԅ~3LIM;t(MM+ffA HIADJuIHAԅ~3LII;t(LM+ffA HIADJuIIfH;vHH;sHHAԅ~H;wHI;w HHAԅ~H+H;v HHAԅH;w6LHt!LL+A HIADJuH;uH{HH;s#H+H;vHHAԅtH;rfDH+I;v HHAԅtIHH+I+H;|&L;sNt JII;"LI;sJ\ NIL;LL$H$@H$8H$0L$HA^A\]H\$Ht$WH HHHu HjHu\HwCH HHDL3LHHuo9tPHIFt+HvH7F 3H\$0Ht$8H _qHTXH;H@SVWATAUH0I؋LLHHut 3!3t3Ht҅tH\$xHC@H#qt*t%HcHHLDHkXIH zH zHLB8u%ttHcHHHkXI A8t[H 3H|$ HtTΉt$htGKxHHH HȉL$`uM;u3H|$ A $ILd$( tA$HHH0A]A\_^[ffMtuH+LItB H:uWItNtJHuJ ffwHJ H;uHII~vHLI3It H3HHÄt't#HttHtt tuH3@SH H HtHHHtH [@SH ̹U̹T@SH })HHBHH2HBHHH [H;s-H\$WH HHHHtHH;rH\$0H _H\$WH 3HHH;suH HtHH;rH\$0H _H(HuHAHtH3H(H(HuHHtH3H(H\$WH H=.tH #覾tսH&H uZH *HˇH=̇HHtHH;rH=ǮtH 9tE33AP3H\$0H _H\$Ht$DD$WATAUAVAWH@EDS="D%H $>HHD$0HH  HHD$ LHt$(LHD$8HH|$ H;rp 'H9uH;r_HH&HH ƄHH L;uL;tLH\$(HH\$0LHD$8HHD$ HH GHH 4EtpQEu&WQASA"H\$pHt$xH@A_A^A]A\_E33fE3APX33DBK̺3D9@SH >x<E3AP@SH =su>G<H [MZf9 t3Hc @ HHȁ9PEu f9Au3v 9H\$WHHL$00AMZH=fD9t31HcHǁ8PEu f9Hu3ۃv 9É$:u"=u=`;'u"=bu=5;躹Yy `HHy Zսy Gt21D$lT$pA DEL3H$uD$ u$uH$HĠ_H(/H(RHL$HH H؀HD$XE3HT$`HL$XCdHD$PH|$PtAHD$8HD$HHD$0HD$@HD$(HHD$ LL$PLD$XHT$`3c"H$HdH$HHHJH~H$H~ ~H_HD$hH_HD$p€~3H =~u } H^HĈH }H\$Ht$UWATH$HHH_H3HAكtEd$pHL$t3A覩L\$pHEHML\$HHD$P LHT$@IE3bHt7Hd$8HT$@HL$`HL$0HL$XLHL$(HMMHL$ 3\bHHHHHt$p|$tHEi3ɋWHL$HDuu t`HH3IL$I[(Is0IA\_]H\$WH HH ~HHHHH\$0H _H H%~H(AAHP|HH(H%~H8HD$`HD$ H\$Hl$Ht$WH0HH ~AIH'~DLHHHt!LT$`LT$ H\$@Hl$HHt$PH0_HD$`HD$ JH8Hd$ E3E333wH8H8Hd$ E3E333WHd$ E3E333H8HD$`HD$ -H8@SH +H [@SH H [@SH H [HSVWATAUAVAWHPE3EADpDpDpAN@KLH$  H$M H$h  D5AD=_D=_H ȿHHD$@HD80H wHt$HHH XHt~HDHHeBH6HHuDLHPH AhLt$ E3E333RH Ht L5H ')|! k<$LfD956tk<ȉ$fD95rt#xtDŽ$+k<$D$D$H$HD$8Lt$0?t$(I$HD$ ELy~3ҋk{tD9$u I$Dp?I$D0H$HD$8Lt$0t$(ID$HD$ ELz~3ҋ{tD9$u ID$Dp?ID$D0$Z $< $6 GD~ELǍV@I $(I?-uDnHH聻DEiD$0@9<+:| @:?:udHHCkR3H(HHXHhHpHx ATH IHHHt?Ht?HtHt2EtAu'IcL%vRI 6HHHu35HtH;v"MHH3H\$0Hl$8Ht$@H|$HH A\HyQHuQHeQHQL Q3ID@; t+IЃ-rAw ÁDAFHADH(Hu HSHH(H(Hu HRHH(@SH Hu HRHLRHtLP;AH [@SH cHu RHu HjRH3H [@SH HHu !CHu H/RH3H [@SH Hu Hu HQH3H [@SH HHu CHu HQH3H [H\$Ht$WH 3HHHugS\A$HtDA@W}.ʸy-AЋFiyD3D;|%D+D;|D+D;|D+SE.L w]AAH]SD[iҀD…LDȺIIHD9|ʸE.HcʉSE+D[ /c L$Iиųk+AKA иSiDAAЉSk聅Hd;PAELl;XHd$ E3E333@SUVWATAUAVHH7,H3H$IHt Ht 3HcHHDH"3DfHA8LAAxC6Ax_+HtHHHLL+x8;oAL%.I $MHuI $L;tHfIAL;~HHHxHHu }; A4HL$0LLź藍uaLD$0AHψD0HtH݀;t HÀ;HhH$H3{HA^A]A\_^][Hd$ E3E333!t$(H!t$ HT$0E3AHHt3HoHt-HUHL$0輍tLD$0HHuE3H ~EQD3MHHXHhHpHx ATH Hw+Ht&AAAL$iHHu( 3H\$0Hl$8Ht$@H|$HH A\IԹ`,HHu H褂IԹ  HCHu H 脂H;Ht%H7H;tHA`t'HH LƋHtHHSHt%HK'H H H3HCD HCD HH\$Ht$H|$ ATAUAVH0LD3v3eHHD$``HH' uHHtH;tHA`s'H MAHHHD$ HMt)HT3IX MAAẺ LA HHHuLD%2uCHH 7L 7I(H:I@H6;A 9; KHIHHH\$PHt$XH|$hH0A^A]A\H(E33D$0HHLHt)H<sH KLD$0A3\HH(H(H KGH%KH(HKL)3I; tHr3HHIDH\$Hl$Ht$ WATAUHPHb&H3H$@3HHNuNu =)\H-KALhHA3ɅL-KAf5MInDA|$u*LItE3E333Ht$ I#HHHtH(H5?Hu H>HtH(H5>HHtHM+HILl$pMcHtE=MHI?3ɅuHfB94hfB9 hHHHuH5u>H+HE3L9mHcHLxEtfL9ltHLHHHDHL9luHcHH;H >A%Ht{rH5=H+HsLdM.\EyߍG;tLcHL;^HHHHcL$LlM.Hy=D9l$xtuIH zHHtUIMHHuQHD$pHHGfD*HEIE>u*HwEt IwM.E3E333Ll$ IqwM.HHfuH+HHH\$Ht$WH H~<LcHHHHt4ILHuH<=t4<t.HHHuH9<H+HHt$8H\$0H _H+<HH\$Ht$WH H3HHt[H9 t HH8uAHcHHHuH hH HtH+HHH ;HuH'HH\$0Ht$8H _H\$T$UVWATAUAVAWH0E3LAHuL!M=IHHD$pHL;D8hH5 ;EAH;5;utHAHu IYHL9.uHcHHHuH hHEHtH+HHHH/HuL/H|$pl$xH5:Ht8L9-:t/Ftj H$H0A_A^A]A\_^]Et3߹H*:HtL(L9-+:uH:HtL(H59HHtHHA+LcHt?HMI0uHA|=A8\HHHuH59H+HE3L9mHcHL,tEtfL9ltHLHHHDHL9luHcHH;H .9A_Ht{rH59H+HsLdM.\EyߍG;LcHL;pHHZHcL$LlM.H8D9l$xttIlHHHHtVINMHHP{uRHHI+HT$pD*HEIE*:u*HrEt IrM.E3E333Ll$ IrM.@SH Ht HtMuDs_H [LM+ACItHuHu:"3@SH R9;gDG؋H [ËVD PDHHXHhHpHx ATH =-D3HAHhrHHu(t$8=DDD;AAGA;uHl$8Ht$@H|$HHH\$0H A\HHXHhHpHx ATH 3HHAE3HHiHHu*9Cv"]8DD;sCAAGA;uHl$8Ht$@H|$HHH\$0H A\HHXHhHpHx ATH 3HHAHH謭HHu/Ht*9Cv"7DD;BAAGA;uHl$8Ht$@H|$HHH\$0H A\H\$Hl$Ht$WATAUH 3IHALLHIHHu/Ht*9xBv"J7DD;`BAAGA;uHl$HHt$PHH\$@H A]A\_ffHHHtfHt_uI~IHMHLHI3I#tHPtQtGHt9t/Ht!tt uHDHDHDHDHDHDHDHD3Ht9t HHH;rH\$Ht$H|$UHH@HًHMIk3Hu8@8ut HE3H\$PHt$XH|$`H@]HU9ruH_@8utHM ft3DtH@83t ;u HC;tH;l@8ut HEHfE3 LI[IkIs ISWATAUAVAWH@MyM1AIy8M+MLHfIcqHIKMCH;7HH\ CL;CL;{;tHL$0IIЅ~t}csmu(H=]tH ]mtH]KAIIrYID$@SLcMHD$(ID$(ILIHD$ 3sYH;793MA 3E3M+Ǩ t;39v5HOAL;rL;v H;sHLul DIcqHH;7sUHHHߋCL;r9CL;s1EtD;+t1t;kt(;uHT$xFAD$HDCMAH;7rL\$@I[0Ik@IsHIA_A^A]A\_H\$Ht$H|$ATH L%"33Iu&HcƺH H:>H HU2t&H$|ɸH\$0Ht$8H|$@H A\HcHI$3H\$Hl$Ht$WH $H$"H+Ht{tH1HckH#HHuH!HKHt ;u1HHuH\$0Hl$8Ht$@H _HcH!HH H%2H(H3]1H( H\$Ht$H|$AUH HcپH=6uN,ʪHHL-9!I|ty({HHub 3X fHI|u-0uH?j& 3 I\$jH \!1H\$0Ht$8H|$@H A]H\$WH HcH= HH<uuH轭H H\$0H _H%H1HHXHhHpHx ATH MQ8HMAHIHHII\L:_DDUAA#AfDDEtLMHHH\$0Hl$8Ht$@H|$HH A\H\$Hl$Ht$WH Hڅxg; oWs_HcH-wWHHHkXHDH<u;=u%tt u -HDH3 H\$0Hl$8Ht$@H _H\$Hl$WH xq; VsiHcH-VHHHkXHDDtEH<t>=u'tt u 3-HDH 3 H\$0Hl$8H _H(u Mx1; Vs)HcH VHƒHHkXHDtH| T AHH(HHXHpHxL` AVH HcLIL5UHkXK4|3 u4O |3 uHL3k-#D3 tK HL\.H\$0Ht$8H|$@Ld$HH A^HcH "UHƒHHkXHHLH%.H\$Ht$H|$ATAUAVH@HDE3^ suI3HT|$$@LcJHH\$0JH H;C{ u< { u!HKN,u DhDl$(C EudHK;-Ct HK3-HHEu?CH3LTK+H.袋.HLIIH?LDDd$ HXHHSD;XJHD$0HtsHcLSIЃmS I H H;s@H0@ ` HXHD$0|$ HcHHHkXID[DD|$ }AH\$`Ht$hH|$pH@A^A]A\HHXHpHx ATH0HE3D`AAD$ Esˀy+u+Su@uHc|$HuD H֋HHHLIRHkXIȈ\IȀd8IȀd8D$ H\$@Ht$PH|$XH0A\@USVWATAUAVAWHHxHe H3HE3McHc}}}F\LPF DA:LcmhA;,LcupA;DWE;H AQDL A+A;}b%} A+ƒA…uAkd;u#lAiҐ;AG$%} A+ƒA…uAkd;ulAiҐ;u~E謶HMKHMjHM艺+AQDCADe]D}DmDuDAAADAAD+ʙALHcHFHcHimHIcHHcEH RIIE3҅D$@A tfD$\YA@A T$HDt MI:A rIA tLt$pA@tMFEFA@tMcFEFLt$pA@t MyIADu A rEEyA AE;EODt$`IHH#ʉL$HAAυMt 3IIcHLB09~AƈHLt$pH+HÉD$DEt ;0HD$D0uAgu=A5E;EOA~%A]HcEHEHtH؋AIH IAHcHEHMDHL$0L$xLƉL$(HMHD|$ AtEuH tHUHAguuH L~HUHЀ;-uAHHE3҉D$DD9T$\FA@t1AsD$L- AtD$L+|$HAtD$L |$HDd$THt$hD+d$DD+A uLL$@LAԱ LL$@HL$LLƋIAtAuLL$@LAԱ0|$D39D$Pti~eHDHHMAHE3҅u+Ut$LD$hLL$@HE3҅uHt$h%Ht$hADD$@LL$@LƋHE3DD$@Ex AtLL$@LAԱ +E3DD$@HEHtH*SDD$@E3LUH}T$XAL fD'EYD8Ut HMAHH3JH$ HA_A^A]A\_^]AIt7Aht(Alt AwuA 뗀?lu HA AA yA<6u4uHAZ<3u2uHABIEDC AD|HEA*uAID$TfAD$T AčDHЉD$TFA tAA#t1A+t"A-tA0$AAA AADT$xDT$\DT$TDT$HEDDT$P迪謚38EH(Hu蚪臚AH(HHXHpHx HPATAUAVH MMHL33HuD13MtHA[G@Hbt*t%HcHHL>HkXIH H HL^>B8u%ttHcHHHkXI A8t蚩臙u(H(LL$`MIHA֋H׋H[H\$@Ht$PH|$XH A^A]A\H8LL$ MLHH H8H8LL$ MLHH zH8H8LL$ MLHH #VH8H8LD$ LHH E32H8H8LD$ LHH E3H8H8LD$ LHH E3H8H\$Ht$WH03Oc_\$ ;1O}eHcH ?H<tPH At `tlj|$$|1H>H H0zH >H ML>I$돹H\$@Ht$HH0_H\$Ht$WH A3H$<u?At69+y~-HSDNj0;uCyCK HKcHt$8H H\$0H _@SH HHu H [4gt C@tH]^3H [H\$Ht$H|$ATAUAWH0D33N3A\$ ;MLcH=J<thJBt^XHc=J At3Au6A;t#Ɖt$$EuAtA;AD|$(H=J@XpADH\$PHt$XH|$`H0A_A]A\H\$HL$WH HHuWHHWH\$8H _̹HHXHhHp HWH HHKHcu肥 K 4@t f"3t{HCHKC{C u/7UH0H;t)UH`H;u QuH譿C+HS+kHBHC$ȉC~Dŋ&.W K?t#tHHH49HHkXH H |A t3ҋDBEHHKD$0HT$0D-;D$0H\$8Hl$@Ht$HH _H\$Ht$WH IIHH; udM9u=H HHu3KHD$PHLHtmE3tfHe@?lHuE3E|$kt$\E3߃E|$<t>D$Lt$\D9D$`tD+t6H\$hD$4HD$ AcAd* RAg~vAitXAn<Dt$4AƄuDt$LHME HEHDt$4Ht$pLd$`ADl$9I3Ht$pR Ad-$T$@ Iك-u HD$xH@8+u(Ll$`Dd$HDt$4ID+DQE3ɋD$<Dd$HLl$`Dt$4D9L$P@EDb3^AĹD+tSHD$xL$XLM@<HHELD$xHUHHD$ $IAȋD$D$Xt$\D9L$PtD+t6H\$`D$4H&D$%~nA;HT$`辛E~fD D 螀 A;t HT$`芛ArE3 E@t fD#qD#iA;t IԋIA;IIsE>Au' pD8et HMD$h\$h38Mt HEHpH3H$HĀA_A^A]A\_^]H\$WH HcHtYH+u @u ;u@`tH贽H;t訽HWu 53ۋܼLHHAHH MkXBDt N3H\$0H _H\$L$VWATH Hcكu~ ~ xe;As]HHHL%BHkXIL8t7RID8t v~ ν}~ U~ BnH\$PH A\_^@SH AHt"AtHI.$c3HHCCH [H\$ UVWATAUAVAWH$0"0H+HH3H 3EL!|$DHcEu3Hu}!8}mLLHIAJ Ld$PMkXAt8L|$`@@@t@u AШtAD t 3ҋDBgtqHJAD耎3HT$\HH9YJ I ?}t @p,!|$XI݉D$\EM@ 3 D$LH"JA|Pt ADLL$aAD$`AdPHT$`It4IH+IHHL$@AHHAHHL$@Hd$8Hd$0L$\HD$`LD$@A3D$(HHD$ DNHL$PHd$ HEH LL$XHT$`I E"A+|$DD9d$X|$LLd$PHd$ HD$` J LL$XHT$`I A|$XD$Dz@t@uE3f fD$@AHDd$LDd$L@t@u:L$@Θf;D$@ugEt!A AfDd$@諘f;D$@uDD$DLd$PA+A;s&H!J ADLJADP\$LR\$LHJ AD3M@ES D|$DH 3AA+A;s'A$I< u AHHHHHrH!\$ H DD+HD$PH [H D|$DL|$`I LL$HH /|$HH H+HcD$HH; Aĺ A+A;F@EH D|$DH 3AA+A;s2A$If ufAHHHfHHrH!\$ H DD+HD$PH y H D|$DL|$`I LL$HH M|$HH H+HcD$HH;*Aĺ A+A;;EpA HL$p3AA+A;s/A$If u fDHHHfHHrHd$8Hd$0HD$p+LD$pD$(U +3DH HD$ %D3HD$PHd$ HcH EH X H HD$`LL$HH D+t t$HD;D;AA A+A;L|$`t\uK]w rw1I H!|$ LL$HEI{|$H3뤋PwxHD$PH HAD@t A}2vv =+|$DH H3H$H0A_A^A]A\_^]H\$L$VWATAUAVH ALHcuv pv xs;= skHLIL5 HkXKLtEKDtDIԋ v v Z v u eH\$XH A^A]A\_^@SH@HL$ HD$ DH@BY%|$8t HL$0H@[@SH@HL$ 3HD$ DH@BY%|$8t HL$0H@[̺骓̺鞓̺钓̺醓̺z̺n̺b̺V̺J̺>̺2̺&̺̺̺̺̺W̺Wޒ̺Ғ̺ƒ̺ 麒̺ 鮒3f;@SH 艒3҅uf_uH [@SH ]3҅uf_uH [@SH 13҅uf_uH [@SH 3҅uf_uH [LEIA@wA  HAw EtD;tD+AH\$Ht$H|$UHH@HHHMI?Hu(rb}t HEkHtHExuHHT}tKHM>H+ >HU虑HU苑HDžt;t+؀}t HMH\$PHt$XH|$`H@]H(=]u-Hu=r*bH(HtH(E3H(H\$Hl$VWATAUAWH0-IE3E3E3ۀ: EyEHLuI߀; t;at/;rt#;wtqa37 3A  IA׊A@ȃSytj  tGt>t' tuEE׃@@@Ez@utmEu`E׃ `TtMt:t) tu4A 7Eu*E)EuEA u  s3 Iߊ EI߀; tH ]AHHI߀; t;=I߀; tHd]AHBu HMHM]AHu H*H:]AHHI߀; t;HL$hEDID$ 袙D=!FD$hH&HfHf(FnHH\$`Hl$pH0A_A]A\_^H\$Ht$WH03ۍKS3|$ ;="HcHH<tfH@uU@uLGwO$HHb LI@t HЋ H|yX賢HHcHvH HtUH0uH SH LCI$$H5H H0L IcHtccHcH#Hc(KHH\$@Ht$HH0_ffHM3M3Hd$ LD$("HfDHL$HT$DD$I ffHHXHhHpWHPH`H3IHDB(HHIHuJm7]RHtHL$ LLHD$(D$8BH\$0H\$ L$(x HL$  HT$ 36H\$`Hl$hHt$pHP_ME3=HHXHhHpWHPH`H3IHDB(HHI4Huls\,Hd$0Hd$ HL$ LLHD$(D$8BH\$`Hl$hHt$pHP_LHH E3[MLHH CLHH ?sE3+MLHH $sH\$Ht$H|$UATAUHHP3MLHHMDC(3IH]<Huk{[vMtHtLMHLE@L;AHGHMEBHuHuЉEAՋHt3x!MxHEЈHU3kt9]B\&ÍCL\$PI[ Is(I{0IA]A\]H8LL$(Hd$ MLHH HH8H8HD$`HD$(LL$ MLHH HH8@SH0HMtGHtBHt=HD$`HD$(LL$ MLHH adpyu 3j" &jZH0[H8LL$ E3H8HHXHhHpHx ATH0IIHHMMuHuH3HHI;vMiLFH cHD$hLHD$(HD$`HHD$ ul^i8"Pi~GiH XcLD HD$hLHD$(HD$`HHD$ GDuHui8"u3hD )y(uh" hXH\$@Hl$HHt$PH|$XH0A\H8HD$`HD$(Hd$ H8H8LL$(Hd$ MLHH oHH8H8HD$`HD$(LL$ MLHH o`HH8H\$Ht$WH HHuhWA@t AA uxHAHH DG$HW\GGu_Hڼt=u5H uacHqAσtl t?tt^H\$ H $HHH^HvH HHt`H6HNH HHt8HH&H ~HHtHH_3褝EuH-t$t t~~bqRHH\$@Ht$HH|$PH0A\H\$Ht$WATAUAVAWH03|$`3уtbtMtXtSt.tt5 bQ@L%H L%H |L%H lrHHurHHLcP9YtHIHHH;rIHHH;s9Yt3LaM,$ L%H |$`*LIu3Mu AMK̅t3<t t tL|$(,LL|$(HuDdžDt$`u9 %OщL$ O;}*HcHHHd‰T$ NpI$t3肛;u AA;t t L; DH\$hHt$pH0A_A^A]A\_H H\$Hl$Ht$WH HH HHu_OeHu~H @MHHtHMHjHHu+_HI_Op5_JHHZoH7H;t HyHׅuB_ 7_3H\$0Hl$8Ht$@H _@SUVWATAUAVHHH3H$H$0AEL LL$@DAH|$@3D$ GDu\zux!l$ E3DAI Lct\UIHHtILDAIνDl$ DtIcHؒHHHu1tHIH$H3FHA^A]A\_^][AELHLc utH3Hd$ E3E333M̽;uTH#E3E3AHct'Hϋ1HHtDLAuH H#B:!T$0LD$0DAD$0SH H\$Hl$Ht$WATAUH LH H HHH;HH+LcIHȔHI;sOH;HBHH;r HđHuHV H;rGH讑Ht:HHH<H=IHOHHI3H\$@Hl$HHt$PH A]A\_@SH J轐HHQHHHuCH#3H [H\$Ht$H|$ATAUAVH L/BH LH {HI;HI+LoII艓HI;sUH;HBHH;rI腐3Hu3HV H;rIIiHt9u ǃ*9u ǃ9ǺD‰AЉ LIIAH3H\$0Hl$8Ht$@H _øcsm;u 3H\$WH 39=u+cH|H]HHD؀; w ;t3t);"u 3 tHH< w HÊuHH\$0H _H\$Hl$Ht$WH0=%ubH3Hu<=tHjH\uGHc觊HHmHtH;tPH,;=pt.HcHlHHtsLHH:uKHHcH؀;uHLHH%<H'>3H\$@Hl$HHt$PH0_Hd$ E3E333DH mH%H HHXHhHpHx ATAUAVH Ll$`MIAeLHAHtLI3;"u3@"HË9AEHtH3HËtAEHtHH@tu@ t@ uHt GH3;; t; uH;MtI<$IA3H;\t;"u6utHC8"uH 33҅Ht\HAEutOu< tG< tCt78HttHÈHAEH tHAEAEHYHtHAEMtI$$AH\$@Hl$HHt$PH|$XH A^A]A\H\$Ht$ WH0="u_H=4A3H&ԾHH=Ht;uHHD$HLL$@E33HHD$ Hct$@HH;s\HcL$HHsQHH;rHH݆HHt8LHD$HLL$@HHHD$ gD\$@H=A3D۽H\$PHt$XH0_HHXHhHpHx ATH@E3HHHfD9 tHfD9#uHfD9#uLd$8H+Ld$0HL3DK3Dd$(Ld$ :HctQHHHtALd$8Ld$0DKL33ɉl$(HD$ u HIHH H3H\$PHl$XHt$`H|$hH@A\H\$WH HHd$0H2-+H;t HHtvHL$0H\$0dDI3DI3THL$8DI3KL\$8L3HL#H3-+L;LDLILH\$@H _̃%I3DB %L3DB F3DB L3DB *3DB L3DB @SH 3MMuHuHu3-HtHtMuMu;P'@H [LLIuM+ACI„t*Iu#L+CAIÄt ItIuMuAMyIu \A@P뚈O"ffH+LtB :uVHtWHuIJ ffwHJ H;uI~LHHI3ItHH3ffft't#HttHtt tu3HHH\$Ht$WH =H+HtmHuH9*t_@uVHHtJHtEH΄HH Ht2辄H;vH <9=uLH-@tHHHD83H\$0Ht$8H _H\$Hl$Ht$WH0IHHHu(!N >H\$@Hl$HHt$PH0_H!HtHuHuHtIHHu3HHHEHtH;v"LHHtHd$ E3E333IAI)IAIH0HtD u?H8H`HHHPHPH@H04HD$X0H0IH@IH8HHIHPD$P $HL$XIIIITH0HtH5H0H@Hi:H8HHH; HP3H$H3eL$I[8Ik@IsHIA_A^A]A\_H(WHH; tOulUHȋ H(HuH H(CWHH; =tuUHȋAH(H( WHH; tǝuTHȋAH(H(VHH; ͡tuTHHA H(˅tȀ9t Hu+ЍB@UATAUAVAWHPHl$@H]@HuHH}PHH3HE]`3MEU~*DIA@88t HEuAA+;ÍX|DexEuHD`DMẢ|$(H|$ 0Lcu3I~^3HBIHrOKL-Hw*HAH;wIHbH+H|$@HtHHt HHtDMƺADl$(H|$ LDu!t$(H!t$ AELAįHc"AEt7Mp ;HEhL$(ELAAHD$ |~g3HBHHrXHL6I;w5HAH;w HHfH+H\$@HHHtH3HtnELAAΉt$(H\$ 3ɅtHM HDAHD$ =EM?HM HDAHD$ EM@HM HDAHD$ EMAHM H DAHD$ EMBHM H(DAHD$ EM'HM H0DAHD$ EM(HM H8DAHD$ w H@HD$ EMHMEAVEMHM HHEAHD$ 5HMA HPEAHD$ HMA  H\E3HD$ EM0HMEi HpDADXHD$ EM0 HxHMDAHD$ EM1HM HDAHD$ EM2HM HDAHD$ aEM3HM HDAHD$ @EM4HM HDAHD$  HhEM5HMDAHD$ EM(HM HDAHD$ EM)HM HDAHD$ EM*HM HDAHD$ EM+HM HDAHD$ zEM,HM HDAHD$ YEM-HM HDAHD$ 8EM.HM HDAHD$ EMBHM HDAHD$ EMCHM HDAHD$ HHD$ EMDHMDAEMEHM HDAHD$ EMFHM HDAHD$ rEMGHM HDAHD$ QEMHHM HDAHD$ 0EMIHM HDAHD$ EMJHM HDAHD$ EMKHM H DAHD$ EMLHM H(DAHD$ EMMHM H0DAHD$ EM6 H8HD$ HMDAjEM7HM H@DAHD$ IEM8HM HHDAHD$ (EM9HM HPDAHD$ EM:HM HXDAHD$ EM;HM H`DAHD$ EMHM HxDAHD$ bEM?HM HDAHD$ AEM@D HHD$ HMA EMAHM HDAHD$ EM&HM HDAHD$ EM'HM HDAHD$ EMHM HEAHD$ EMHM HEAHD$ {HMA HEAHD$ X H\$`Ht$hH|$pH@A]A\]HSH HHIRHKIHK@HK 7HK(.HK0%H HK@HKH HKPHKXHK`HKhHK8HKpHKxHHHHHHHxHlH`HTHHHH [HHXHhHpWATAUAVAWH@3HHHHX9Yu9YuDDH-AAVcHHuAH(HLLbLHu Hȉ9^HbLH~>HL$0AADHl$ .HMHL$ HL$0ADAԋ L}HL$0ADA L|$ A HEXHL$0AQDHD$ A HE`HL$0AQDHD$ tH(AHII3<0|<9 ,0I8uQ<;uLA@AIuHLHEHHEHHEHЍHEXH͍HE`E&MtEeHHtHHt uHH(LLH(3L\$@I[0Ik8Is@IA_A^A]A\_E3HD8 t<0|<9,0HD8 u<;uLA@AIuHSH HHIH; tqHK H; t_HK(H; tMHK0H; t;HK8H; t)HK@H; ~tHKHH; ttHKhH; tHKpH; xtHKxH; ntHH; atHH; TtHH; GtH [H\$Ht$H|$UATAUAVAWHH@3HHMDH]9Yu9YuDL%eAA_LHu )_LHu I؉9^=H^LHu IIщ~8AID$HMAQDHD$ IL$ AHL$ AQHMDNj]IL$(AHL$ AQHMD ;AHM ID$0AQDHD$ AM|$8HMAQD L|$ AP ID$@HMAQDHD$ AQ ID$HHMAQDHD$ HMA ID$PD3HD$ HMA ID$QD3HD$ sHMAT ID$RD3HD$ S ID$SHMAUD3HD$ 3HM ID$TAVD3HD$ HMAW ID$UD3HD$ HMAR ID$VD3HD$ HMAS ID$WD3HD$ AHM ID$hAQDHD$ AHM ID$pAQDHD$ oAHM ID$xAQDHD$ MAHM I$AQDHD$ (APHM I$AQDHD$  AQI$HMAQDHD$ t InIIII3<0|<9 ,0H8u)<;uLA@AIuH·IM3H(HI $H(HHIL$H(HHIL$H(HHXIL$XH(HH`IL$`AMtAEH HtHHt uH(H L LL(3L\$@I[0Is8I{@IA_A^A]A\]H(38H 4H9t~u 6HH(HUH(7HH; t~u5HH@H(3@SH E3LHt HtMuD& H [D8tHHuHuEI+ABItHuHuE%"3H8HrH3HD$ E3LL $LL$LL$LL$LDIBIAu$ AIEAIBtIcHL$ H3ZH8HHXHhHpHx ATAUAVH 3MLx?t=IM>+HcLMK舲u KLIM y}u;~Hl$HHt$PH|$XËH\$@H A^A]A\@SH IHC$C H [H\$WH HHHtS9tNH&t>H &Hu!O$DHLD$0 lt-D$09HB/O$LD$0A ?u3D$0u)H\$8H _E3Hz%A@f; tDHA r3̊LE3'BI<w B<wAEFLЄuA3ҊHCtCtCucH [H3ҊHA|Z~aw@SH HH #S3H‰St*SH CucH [H3ҊHA|Z~awH\$Hl$VWATH0MHH-H@Hu KHF@H3HCHt8tLCH HcHti8tdHCHt8t HsH{H $Lú@trHCHt8t H1ZHPHKHt49t/Q3ɺHKH BCucCC C${HHHH#tZ?tUHHtBHHu%K$DHLD$P [;|$P;H-/K$LD$PA * |$PuK {HtC fEC$f}fEMf9Eu.L@IMt1Hd$ E3E333e ̋K A@Mĺt=K$MD$@A@t A I$EAZ3H\$XHl$`H0A\_^ffH+Ir"tf: u,HIuMIuMt: u HIuH3ÐIt7HH; u[HAH;D uLHAH;D u=HAH;D u.H IuIMItHH; uHIuIHHHH HHH;H8HeH3HD$ E3LL$L\$L\$L\$L!DIBIAuAAHuIEEu3HL$ H3iH8I@SUVWATAUAVHPH6eH3HD$HALL'3H9HH OAHHH&HHzHHHHdH˅HHHDHH|HHr$HLHiHt"H5HHcH<H3H*L+H;tbL;t]HH HЄLHt@8uH\$H|$DYAًLAp"ApE3ҺAst AASuAst AASu…iAdtfD:t;Aot5Aut/Axt)AXt#AdtD:tAotAut AxtAXukAdt D:tAotAutAxt AAXuAdt D:tAotAutAxt AXtA;t3MAI3r3 uA99,;uAAAA;tAҋ E3E:AAH\$H|$@SH B@It HzuA%Jx HHSu H [̅~LH\$Hl$Ht$WH II@LH@?tH\$0Hl$8Ht$@H _H\$Hl$Ht$WH A@@IIHt IxuA7~3MLHHŃ?u8*uLHֱ?H\$0Hl$8Ht$@H _HHH@H\$UVWATAUAVAWH$H` HEH3HX 3HHMLHUHL$`IM}D|$P|$D}蓚AAH}Hu+B/@8|$xt HL$pAOC@HbMHVA;t(t#LcL cIAHMkXM  LL @A@8u)A;ttHcHƒHHkXI B8t,@8|$x]HD$pLMtH]D߉D$L}Aum|$TME$$McËH}ED|$@}|$HD}ȉuLEEAMLM[AD$u AI%Ac" IcH @M HED\$TE3H]DD]A A@A;MvAc IcH @HD9-DD e~g~inopslu`x:'Ac/ IcH @MuHD9HHAt0HD]HD]QH A+fD9tHuH+HHHD)QH A+D8tIÅu+A|$HEAEAQQD$X0T$PD$YAEyuD ku I>I%Ac: IcH @MHH8uE3D$LA tfD$DA@A T$PAsHu MIAcIcH @MueHD9u ;KA sLtAc~IcH @Mu"HD9u HLA A@tQu MIAcIcH @MuHD9AHLu EIAcIcH @MtHDlA@t4u McIYAcIcH @MtHLc2u EI%AcYIcH @M@HDA@t MyIAAr A rEyA A;OD}IHH#ʉL$PA+Mt 3IIcHLB09~ALjI+D}H|$H+IۉD$TDt ;0I+D\$T0uEEĺHNE31LEH]y D$HIu AguAD\$H:;O|$H~)]Hc;"E3HEHtH؋D$HD9Uu IIHE AcIcH @HHHMH nMAHc[HL$`DHL$0MLƉL$(L$HHӉL$ HMAt|$HuH 8Mb[HT$`HAgu E3uH M>[HT$`HE3;-uAHHr#D$TAtD$X+|$PAtD$X |$PDeHuD+d$TD+A uLL$LLAԱ NLL$LHL$XLƋAtAuLL$LLAԱ0|$T39Et^~ZHDHP HMAHu&UЅtLELL$LHP uHuHuD$LLL$LLƋHD$LxAtLL$LLAԱ E3HMHt Le؋|$H|AItJAht;AltAwA A9lDT$@u MA AA AD <6uAy4u ID <3uAy2uIAIDHUA I耐HMLELIAA+LMMHH @H8DT$@|$H|$HDƄ*D Ač|HЉ|$HADT$HA*u AIHUA ȈHMLELIAA+LMMu\#9$AdDT$@A;DOHE3H @DT$@HD9 7EA*AHgHH @HDT$@MAىME AčLHЉMA tEA#t5A+t'A-tDT$@A0AAE AADUDT$DDUDT$PE|$HDUpMuA;tfM;ut\HT$`ADUNst(HULD$LAHED HHEEHULD$LAM|$HLMDT$@E!uD$LUEA3t A;D]uNEuILMcEx>HJtttt t tu]L2IIHM;~3D$LAD]A}LLeA|$xt HD$p*@8|$x@8|$xt HL$pHX H3H$ H` A_A^A]A\_^]H\$L$VWATH Hcu ;={s}HHHL%{HkXILtW%IDt+s%H Su T3ۅt% V& H\$PH A\_^H\$WH HcAHT$8$Hu HWT$8LD$EA IcEHTE+bDE;D}AHc DeXHAHHkXIƀd8Dd8HcHƒHHkXI Ƌƀd8D8@8}u @tHc HHHkXIƀL A#;AHMEEDEHMPH|$0D$(ALMD$ A=EHu59ELcIAHMkXIBd sHcHʃHHkXI H .E3E333H|$ *HĉPL@LH SWHHH`E3HAEuHD$pHD@DD$(D$ @DLHT$0HL$4D$8|$4t9t(Hc\$0HHHHkHkXH€d\$0\$0t #8oHH_[H\$WH@d$03H|$pHu3Htك|$xtAtDL$(DD$ DLHHL$0؉D$4|$0t,t!HcHHHkHkXH€drjH\$PH@_LECMK SH@d$(MKIC MKD\$0L$0EˋH@[H8ADL$`ELD$(HL$ DAIH8HHXHpHxL` UHH@HHHMIIwE3HuD8et HE3|HMD9auLHHNHu+M:D8et HE/HtAHHDL tWHuADLlD8'uACfHf f;Qr f;QwfQ$f;Qrf;QwfQDtDHAELtPHuA_HD8&uAQfAHfD AfD;Ar f;AwfA+f;Ar%f;AwfAADt Af;ufHD8et HMH\$PHt$XH|$`Ld$hH@]E3HHXHpHxL` UHH@E3IHHMu3HMIuL]E9cuLHHHu+n[D8et HEHtAHHFDt/HuAFDu^JD8'uA ff HHFDt%HuAHD8&uA ff Hf;u$ftHuD8eHED8et HMH\$PHt$XH|$`Ld$hH@]E3HT$L$USVWATAUAVAWHHXHcAE]uV38- 3;fHLL sIK HkXD1lv8_D>6HtDl18AEAADm`tu ШtL`ШtA;AB؋lLHuS hMH3DBgL LK L\0@K IA D0HL0 A:AK AAIVE`DD0 EtbK L09A:tQtM K AHE`DD09Au.K L0:A:tt K HE`ADD0:K LMDH 1H|$ <HcU܅|H;qLDK D05At A> uL0d0IcIMIHEL;A AE<A:t HIHEHL;sIE8 uI~LK LMHUXH 1AIH|$ <u A<uf9}taLK D0Ht}X tD#K EXD1 ;I;u }X u +MHAH2}X LctLXD#HL;m K D0@uL0 AEHDE+}`EHuHI;rHB8Vt BVuR*u;uHcH]K D0Ht;HÈL0 |K HÈD19uK HÈD1:HcH+MHAHcELmPA+DMƉD$(3ҹLl$ u:Du:;Ë]HJ @E|0HҺ t fA9uL0d0IcIMIHE`L;eA AEf.fA;tfHI HE`HL;sIEf9u ILK LMHUH 1AIH|$ f9u99}LK D0Ht; f9Ut@fD#EK D1 EK D19K T0:LI;u f9Uuf7MHHDBf Lf9Ut LfD#HL;m`"K D0@uL0 AEfHDE+]LmPM;tIqAD܋Y8u Amu뵋,38h UHXA_A^A]A\_^[]H\$Ht$L$WATAUAVAWH ALHcu:3ۉ 3ۅ;=v_LLIL=s_AMkXKBL tiAuW] KBD tDIՋz  zS @H\$XHt$`H A_A^A]A\_H(dHt g,tA@AH蟷ų̋+D#AD#D D+@UATAUAVAWHPHl$@H]@HuHH}PHH3HEHEDD`ME3E3AA35Hcu3~g3HBHHrXHL6Hw1HAH;w HHz{H+H\$@HtoHHtHHHtDLAA:5t9E`A3H|$8LAH|$0u |$(H|$ D$(L|$ 6HK9unHMH3fH]@HuHH}PHeA_A^A]A\]H\$Ht$WHPHHL$0IAjD$HL$0LDNjD\$ e|$Ht HL$@H\$`Ht$hHP_H(HuHH(LH :3H(H%3̹αH\$Ht$WH@HHL$ AAiHD$(DA|utHD$ H@BY#3t|$8t HL$0H\$PHt$XH@_H‹AHE3n̋AE33ZH‹AHE3B̋AE33.H‹AHE3̋AE33H‹AHA̋AA3H‹AHA̋AA3H‹AHA̋AA3gH‹AHAWK̋AAW33HAEAHA3EAH‹AHE3̋AE33H‹AHE3̋AE33H\$WH@HL$ HgL\$(Mt2A{u(AE3Hl|$8t#HL$0|$8t HD$03H\$PH@_3HHXHhHp WATAUAVAWH@LHHHEMfMtM.Mu*螴|$8t HD$03Et A|A$AuLD$ 3I]A ~LD$ @κLD$ I@@Ht@3H뾋$@-u@+u@3HEu&@0tA 6;xt ;XtA$AAu@0u;xt;Xu@sHM@Mc3HILL@EOAȃt @փ0At/F@<w A;sI;r%uI;vMu H@uMIE3pIHϋH@3HH@u%@uFŃtHH;w u,H;v'"@tH@$HHHMtI@tH߀|$8t HL$0HL\$@I[0Ik@IsHIA_A^A]A\_H83EL94D$ Hu H 3mH8H8d$ IELHHKH8H8=A4ELHD$ u H 3H8H8IELHHD$ H8@SH d$@LD$@HHu9D$@tHt L$@HH [LMt;E IAAwA  HAw It EtD;tD+A3HHXHpHxL` UHH@MHHMHMIScHu+ }t HEHtIwHExu!MHH)}tTHMGH+ 7HUHUHItt;t+؀}t HM3H\$PHt$XH|$`Ld$hH@]H(=U2u6Hu5"H(HtIwH(qE3H(H\$Ht$WH AMLҋHuؿįMtT$PHHHL;w 袿"AA";w3M…t A-MBKM3ҋ vW0AHItI;rI;rA@hAIAAAA IIM;r3H\$0Ht$8H _H8A uy D$ d$ H8H83A uyAAD$ H8H8d$ H8H\$Ht$WH AMLHHu胾oMtT$PHHHL;w M"ȍF";w3M…tA-MBKHM3HHH vW0AHIHtI;rI;rAdAIAAAA IIM;r3H\$0Ht$8H _H83A u HyAAD$ H8H8d$ H8HHXHhHpHx ATH0IcIDE~HIh HHcD$hH|$`~ HHL t tD$(DLƋAH|$ )+ظHHDH\$@Hl$HHt$PH|$XH0A\̋…tȀ9t Hu+ЍB@USVWATAUAVAWHhHl$0H H3HE(L3DEMULLeA~CIA+׃8t IDžuы+~)IA+8t Iׅu+;}3;|DEuIDpt;u WA;~AJA;~ ;HUA)t~)}r8]HEt8XtAM:r:HvH8~-}r8]HEt8XtA $:r :HsH8DMź AΉ\$(H\$ (LcI~f3HBIHrWKL?Hw0HAH;wIH7mH+Ld$0MA$waLHtILMDMźAD|$(Ld$ Y'LEDκ AΉ\$(H\$ 3'Lc~g3HBIHrXKL-Hw1HAH;w HHmlH+H|$0Ht{`HHtHHHtRLEDκADl$(H|$ &tUMEMDl$(H|$ &HO9u_IL$9u_HM(H3WHe8A_A^A]A\_^[]H\$Ht$WH`HHL$@IA[D$$HL$@D\$8D$0H$HD$($LDNj։D$ V|$Xt HL$PH\$pHt$xH`_H\$Ht$H|$UHH`HHHMIIZHu8]t HE3Hu(蒸}t HExHtHwHEPuLMLHH:@HMLΉD$8\$0AH|$(\$ u 넃}t HML\$`I[IsI{ I]̃=)uE3H\$Ht$H|$ ATAUAVH MMHLgHx0H|$H3Hu脷q9HhH MMHHA֋H׋HhH\$@Ht$PH|$XH A^A]A\MLHH CMLHH +MLHH (LHH E3LHH ˰E3LHH E3HHHd$0d$(AH HE3ɺ@DD$ -"HVHHH(H EHt Ht;#H(HHXHhHpHx ATAUAWH H33DG9LHtPDG3ҋ#Ht=HH+H #AWHE/#HHu1讵 裵H\$@Hl$HHt$PH|$XH A_A]A\ú^DDI;HEMNj_7t HH+H~i8u ? HAԋa"LH3"Uy]E3HՋ>HTAH HHHHu%ִ H!HE3IՋH3H\$Ht$ L$WATAUH HHcu葴 G ;=Hs~HLIL-HHkXKDL0tW3Hu> IKDD0tHӋ B ˳ 跣H\$HHt$XH A]A\_H(HcH(H\$Ht$WH HcAHug RDE3Hu* 3t oHHHGHHHkXdH\$0Ht$8H _H\$L$VWATAUAVH ADHcu Ȳ xs;=3GskHLIL54GHkXKLtEDKDtDAԋb w a 9 &H\$XH A^A]A\_^H\$LcHFMAIMkXJ BD8F\ADA@tXtHt(t uHBLJBd8BL80BLJBd8BL8BdBLJ Bd8EuA%@H\$H(@t'tt' 7-3H(H(Hu  -3H(H\$Ht$ L$WATAUH Hc@t0t(t tt菰u z }xi;=DsaHLIL-DHkXKDLt:KDDt Ӌ  q H\$PHt$XH A]A\_E3AHtfD9t HHH;r%%%% %"%$%&%(%*%,%.%0%2%4%6%8%:%<%>%@%B%D%F%H%J%L%N%P%R%T%V%X%Z%\%^%`%b%d%f%h%"%%%%%<%.% %%%%%%%%%%%%x%j%\%N%@%2%$%%%%%%%BH8Mхt+;tA;u"HD$xDL$pLD$hHT$`IHD$ ̋H8H\$WH H3HHW0LHt4HȊt&<"uH AIHÊutAH|S3H\$0H _HHXHpHx ATAUAVH0HHE3L!pANYu3L3HL$`atuL!t$ E3E333.̅uHL$`Ht3uH\$`5Ht3Ht"3H HH FHEHt HLHBL0 DHHLAHHuLd\A8$u9H%L;t_LAH҅tIHd$ E3E3339A<$/t,LIH蟅tHd$ E3E333Ht(LIHrtHd$ E3E333ٚHL$5 D95'B5n D5'Z Z  R +=v:HDQ3BMM+LA IYu3 3Ht8 t,Hd$ E3E333 Hd$ E3E333HL$`P3PHH\$PHt$XH|$hH0A^A]A\H\$Ht$WH03O3ۉ\$ ;RQ}\HcH.AH<tGHBt=[HAH AtHy(talj|$$H@H \똹H\$@Ht$HH0_H\$Ht$WH@HًHL$ I3KHu'跩褙@8|$8t HD$03~LD$(A9xuHh^@8|$8tbHL$0T BDt%HÊ t ;uH{Hu H;HDHÄu8L$8t HL$0HH\$PHt$XH@_E3@SH Hu ΘPuu譨'u!tt跨茨 3H [H(wH(@UH HAH ]@UH H&H ]@UH@HML}H@]@UH HHMPYH ]@UH HHM0YH ]@UH HHMHYH ]@UH HHM@iYH ]@UH HHMxOYH ]@UH Hꃽt gH ]@UH HHHыuNH ]@UH@H.H@]@UH HH ]@UH HH ]@UH HH ]@UH H H ]@UH H H ]@UH H H ]@UH H qH ]@UH H QH ]@UH H 6H ]@UH H H ]@UH H H ]@UH H H ]@UH H H ]@UH H H ]@UH H H ]@UH H eH ]@UH HHE`H ]@UH HH H ]@UH H H ]@UH H H ]@UH H H ]@UH H} u'HcUHHHHLA9HkXIdUHH ]@UH HHMH3VH ]@UH HTH ]@UH HHcM HH;H'L'\'l'x'''''''' ((2(D(Z(n(((*110'0000000z0j0T0D0*00///////x/`/8/*/'''&&&& 1&&&x&j&\&F&6& & &%"/:1/...+,,,4,N,l,|,,,,,,,---0-B-V-r------- .&.2.<.H.Z.h.v......+(((H*:*$***))))))))z)f)Z)F)2)")))((+++@@H@h@8?@K@@ܯObttCreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.5\message_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBInstallation failed.no such folder (%s)unknown CSIDL (%s)sSHGetSpecialFolderPathAfunction not availableshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissiSOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOSErrorValueErrorbuiltinsPyLong_FromVoidPtrPyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleRunning Script...Could not open postinstall-script %s Py_FinalizePyRun_SimpleStringPySys_SetArgvPy_Initialize*** Could not load Python ***PyErr_PrintPy_SetProgramNameOut of memory!Running the pre-installation script failed Can't load Python for pre-install script (%d)Runtime Error100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Could not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py)Times RomanSetup %sCould not register window classSetup.exeSetupWindowClassThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreDon't know Python's installation typeStrangepython%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:UninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** a%s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINE*** Installation finished %Y/%m/%d %H:%M *** Postinstall script finished. Click the Finish button to exit the Setup wizard.*** run_installscript: internal error 0x%X *** 300 Run Script: [%s]%s \Scripts\Please wait while running postinstall script...-installIsUserAnAdminSetupFailed to start elevated process (ShellExecute returned %d)runasif exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script*** Could not run installation script ***-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removedYou do not seem to have sufficient access rights on this machine to uninstall this software%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %s%d Root Key: %sAre you sure you want to remove this package from your computer?Please confirmOut of memorycould not open logfiler2. arg is not -u-uWrong number of args%s%cimport py_compile; py_compile.compile (r'%s')Py_OptimizeFlagPySys_GetObjectCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Bad user_access_control valueoopsnoneautoforceuser_access_controlinstall_scriptnamemetadatatarget_versiontarget_optimizetarget_compilebuild_infoinfotitleSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archive0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfainvalid distance too far backinvalid distance codeinvalid literal/length code`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checktoo many length or distance symbolsinvalid distances setinvalid literal/lengths setinvalid code -- missing end-of-blockinvalid bit length repeatinvalid code lengths setheader crc mismatchinvalid block typeinvalid stored block lengthsincorrect header checkinvalid window sizeunknown header flags setunknown compression method inflate 1.2.5 Copyright 1995-2010 Mark Adler  #+3;CScsI !1Aa  0@`@@incompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionaryХ@@h@@@@x@h@P@h@fFK I*TK ITTK IO :i+00SBi+00@_dP/N !:i+00'":i+00 E%6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF΋!  Hx5i+.b`ODV A H FM^2mFT d_N" (2W]/4*&{-zeG'{-ph}OUBl OU3(9O> G e+.bchOU4^ ;ݧB}/NKfNr@"=3H$Oڠ'my4[ J1B&M[Or G:ᠷqEJ ǬMWs5i+.bs5i+.bs5i+.bw~s5i+.b%e{HqC,40L]0RO$[Dt.+*U6F:(Y;a-kQG^)|I)sO>+dWnO@;>V;>V Wt חb@J7<}iFϦODa'wj5Ob0wDObAGQ`{FL!mv`[c'wj5Obd'wj5Ob6J[CAVgqe'wj5Ob5i!Lz)zR88`[|^1/`[@L\J7@呰 חbu`ެ@`ެ.PRO—-T'tE`ެA`tpZdl?<W4plTI?rPB,ɨ=O${aPo0p,oiyŜ?Oɝa4Oص,OꙠς`RWpO6OyѦjc(=O0%G`묡51Mlg~6JNfsv]=D%Ocg3K@~Oq!2)wKL+2V4K@~OqT'B6Q:.7V`ƆEz5K@~OqiI~+.ͩ pO]_eOkm'WFAOлP0 P0 P0 M]`gI6FOEг]K $^5N$̈&HS3M17i;'$9Y:Oh7%9Y:Oh7&9Y:Oh7'9Y:Oh7ի|I˃(9Y:Oh7!FsGF{H@FS2IEt$#CȫR e.{ JOe/P($IZ^9$\E9 O奄`OO\;x8WFTpj zO1I( @wiKw^ևA)!\_[C+dWnO4DLe+.bSmb`ߌ #Or'>O.jxO^QmOd4'>Or3߷;`[MO KLb`wG:J'i>VMYFDAt;&OF} Ҩ\I;%S| *E yЎf|txM NI{@ >KJ\FЗ4mc-NvEc7VfCNItwׄ8A!ӱJ'8EK}4@ VqC(DW@XzvF@S>LNdL֬+ o.Eцݷ"JL :̿,LB)隇A }jL^6CTw]+.DJQS[bHNAFPCU .4zl'K@-tК#FlHiawhM0Y3S!AbostA^?UX2NfHyu 5ꥂG)]/qNnN9jI=W.I|Kg 4cH~%]bM I]7BWGCQl2$HܨEye64ۅ>eL:er='oOU{p OsCů$53QB`ϝ]v+qAO;ل.CZ0YcwN]ND.Q1RWHΨ}'CBg (#l^"`G3qs03NvFZ9\;û@Z|KJ$M>MEQ wmjKDWw? ec E kjO}c^NIe2mG)f\"gJ]lV`W0\"F-V pNr-O&oO}N8úGˢ)qKmHB" C[E|tKpȞ&Aõ*iG2 HNOiNㄫ9O'HKlqto%yL%4FxWObDcq# (O\iN`|\1IkLICN_3haO1FI&I}!<OGFVXia;B8n29֔hJuAtXJQ xd_w~8ƏWU]O Ɋ36(A#)V)F#Ϋ>%'GoGG+}.аvLX] p`OK #7 EC)t0ō*ƾ{,D Jև+DW^ Oor9tRNNgɆ>!OL'`g+$%|QOz)(B _@^A% xSDMt Nn 8Åm]rLwx,4Ku@ +׉#G`` WG 35A AlG ؂تI`FtQ<[MEĀd_NM&uf4L3lEZIC~"@0(9A8L"k1%B T #=E\\GNˇbR FHspSi)!@'QL.JiFFFFFF F F!FFFF&FF F FFk!Pi)?F0:s *Dw= F F F F F FFFFFPF%FQFFFF`k;Yi+-z1OY ȿ4<OV% X$5I?#3:O4j;Yi+-zj;Yi+-zi;Yi+-zv nr=F>F@FDF[Fʙ^AiXשFh Mm8gh z0Gd<O8m xO4yO"FFFMm8gh 0F1F2F3F%F)F*F0:s*Dw=IF y.Y+F&FEFGFHF:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/Oǝv\Wސy(_FFFFFFU 8r+C+n44FâRX0eu{ڮP9Vu{0ne0E Kvne yOܦϫ|x O jIOQnO09$-1.E^*onePone |~|?ne? PE^#1$-?W2$-?W2$-pw~?neg@ne˳j@ne˳j@ne?W2$-~{S^BEy|KDphKΔӳOհrIOC'zO{TxhO{lhO6ǀ_`\`OOrOh7y) Oh7BTyI6 E&jnLFB}sg'Dx+h\t<6M>?i]?9A!8ҏFs%E~2]r?jdN&6u^gO!B> 9}Nr*GݓkFN]ͷghhϓgAc*^Z%Ȕ2AeqKW';?B@ J$SQ`Ɔ(œO>1s-O(hHjxOi QD(ߥl+ rˆLmCBUa{Ӱ~C.`1 y/DĊY F;aAdƼ403bpc(Jg Дէ{E] E)ПS-oEH?syYz(y K@AXGA'qQU AJ s Y!WOZ{*lg(M2(TfC'>|a.  O;O.K[K8H]҇26 -&{-r: %wCjW'tVamy!@iaWBVm`ɠI-`:Bn5OC(K鞟^ﯘ=ѕK0:ښL%2J4{[kYs=BMQ!B\[/B{NsASÖ.̆I#t9JDf?kјH"tŻ-Gs?zZAe!`[ǽ6NXX$  KiiőԞ(LqmjK H(.~,-Y@o3\.Q Cpg{LKI s<_z\ LKo(t;sM|@)^vJYӞ~+IzÊChsxDpWJ?,CP0DOAoZ\q"tDk׾ TLrTIkE a`NNe76_I|kHrYM>s: .jxOˡd:aDX7iii9P5}+EutX(T6QB~ۜC]_#ͼ_Ld=xr|խhG2`?uIp4Bf6חKt3OtaG'"v0 SNwL1"(iv@ YGح+ObC4`[ԄLr?RJ{,AsEOWL"O7v8yOhKKt&1Zs~:6 B}Ftr⋪GMv2̤ pDʹfD.b[GvtH; zr\GڙYkH?FA&OA;,Ui6 IJ"x9J4ܵ;EfDװqmrE.1!YuY&HxHϣ'GVBeUNOخ|)IE@0lyדسDg,ݠeL3"5/QqCAwSk5 X;-3B{_41lxpOh6ǾƱLb VBPoz5zD #D@Fgm[M/BT|\?@zpDF[0 49Z I}AaB}KX䌠%D|DZ#`ڽWvGE>ςZ#@k{X8&oI Qd5CvSdn0@DH&'E4VwҁnB*O&-bfMlV!j hFXapf_:qJ?򥸿2cpF^W5}3ƔHjiOY<0G== 6eFpqFwHҶe_K#q}kdO-p;z5Og5е.Í}DwMm3sG%`4n.8E40PpZdFK6eJ7`, :i+00Fh3MnMܙS{5)xKt O3CKsw`$D&l;0MHֿRUBu(dT&arrCuƋ.|uU:WPHw[ێ Z܊M`* !sG3^F0MJSkyZ 8y M3,/KqI\M;TQ'CHCh4-6C$/`zLbeLWwR"!5C34a@Y?JTwZ8KMn錕Ra/pam/pmCorExitProcessmscoree.dll@a@a@TZSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunLC_TIMELC_NUMERICLC_MONETARYLC_CTYPELC_COLLATELC_ALL@t @@M@H@@M@L@@M@@@M@h@@M@$@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_.,._;=C=;runtime error TLOSS error SING error DOMAIN error R6033 - Attempt to use MSIL code from this assembly during native code initialization This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. R6032 - not enough space for locale information R6031 - Attempt to initialize the CRT more than once. This indicates a bug in your application. R6030 - CRT not initialized R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data R6010 - abort() has been called R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point support not loaded @`@ @ @P@@@@@@@@@P@@@@ @!@x@y@zx@p@P@Microsoft Visual C++ Runtime Library ...<program name unknown>Runtime Error! Program: (null)(null)EEE50P( 8PX700WP `h````xpxxxxccsUTF-8UTF-16LEUNICODESystemFunction036ADVAPI32.DLL  ((((( H h(((( H H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~united-statesunited-kingdomtrinidad & tobagosouth-koreasouth-africasouth koreasouth africaslovakpuerto-ricopr-chinapr chinanznew-zealandhong-konghollandgreat britainenglandczechchinabritainamericausausukswissswedish-finlandspanish-venezuelaspanish-uruguayspanish-puerto ricospanish-peruspanish-paraguayspanish-panamaspanish-nicaraguaspanish-modernspanish-mexicanspanish-hondurasspanish-guatemalaspanish-el salvadorspanish-ecuadorspanish-dominican republicspanish-costa ricaspanish-colombiaspanish-chilespanish-boliviaspanish-argentinaportuguese-braziliannorwegian-nynorsknorwegian-bokmalnorwegianitalian-swissirish-englishgerman-swissgerman-luxembourggerman-lichtensteingerman-austrianfrench-swissfrench-luxembourgfrench-canadianfrench-belgianenglish-usaenglish-usenglish-ukenglish-trinidad y tobagoenglish-south africaenglish-nzenglish-jamaicaenglish-ireenglish-caribbeanenglish-canenglish-belizeenglish-ausenglish-americandutch-belgianchinese-traditionalchinese-singaporechinese-simplifiedchinese-hongkongchinesechichhcanadianbelgianaustralianamerican-englishamerican englishamerican@ENU@ENUx@ENUh@ENA`@NLBP@ENCL@ZHHH@ZHI@@CHS(@ZHH@CHS@ZHI@CHT@NLB@ENU@ENA@ENL@ENCp@ENB`@ENIP@ENJ@@ENZ(@ENS@ENT@ENG@ENU@ENU@FRB@FRC@FRL@FRS@DEAh@DECP@DEL@@DES0@ENI @ITS@NOR@NOR@NON@PTB@ESS@ESB@ESLx@ESO`@ESC@@ESD0@ESF@ESE@ESG@ESH@ESM@ESN@ESI@ESA@ESZx@ESR`@ESUP@ESY8@ESV(@SVF@DES@ENG@ENU@ENU@USA@GBR@CHN@CZE@GBR@GBR@NLD@HKG@NZL@NZL@CHN@CHN@PRIx@SVKh@ZAFX@KORH@ZAF8@KOR @TTO@GBR@GBR@USA@USA  6 - OCPACPNorwegian-NynorskGetProcessWindowStationGetUserObjectInformationWGetLastActivePopupGetActiveWindowMessageBoxWUSER32.DLLEEE00P('8PW700PP (`h`hhhxppwppCONOUT$TMPRSDS# ,H0FHC:\python-dev\porting\cpython\lib\distutils\command\wininst-9.0-amd64.pdbdT42p dT4pT4 p0 4=4 p`PȑT42 p20  4 2pd T 4Rp 4, *pȑ@&4ZXPȑ+tZ4YV Pȑ 4 2 p`P' %# p`0Pȑ dT4p t d T 42+ T$4# p `ȑ 4 pȑP*p`ȑ d T 4 rp  4 Rp$ , p`P0ȑP p`P0ȑ4 #d#4# p Pȑ 4 pȑ@!0ȑ0& 44, p`PȑP  4 Rp204 "t1"d0"4/"*ȑ@3 "tY"dX"4W"RPȑ+ȑ@) t3d241.Pȑ`Bȑȑȑ&4dbPȑd T 4Rpd T 4Rp2020d 4 r p= ,t,d,4, PȑP' T9482 p `ȑ t d T 42BB&p`P0ȑ04$"P/ d T 4 pȑ0bt4t d4td T4B) t*d)4(&Pȑ  b p`P0dT42pd42 p t dT42  p`0P20dT42pd42 p d T 42p* 4 p`Pȑ20B  R0  rp0Pd42 p2020 td4rPbbbb  2020d42 p4 R p`P2P20x-|0M2Pd42 px-ߟKMrP, d4 p1tfM2PBp`0x-$MBBBBB20B2020p ` 0 P  bdT 4 pbdT 4 pbbbb  4 2p2P42 px-íͭM d T 4 2p2Ptd42x-ƯگMB tdT 4  tdT 4  dT4p  t4 t d T 4 R' E4C p`Pȑh# #t#d#4#Pbbb2Pt d 4 Rx-UwM|M20p0PBb  b  bbb  bBBBBr0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r020r020!! d 4T 2p!0!, , ԁtd40  Pd42 p2P  Rp`0x-M20202042 p  4 2pBB  4 2p2P d4rpx-N20202P  4 px-%NB  . d4 p Pȑ  4 2pBbd T 4Rpbbb202020rP p`0x-eCNeCNT 4 R p ` dT4p2PBx-L`^N2PBx-yN2P20x-NdT42pd42 pBBB t dT42BB2020202020d42 p20d42 pdT42p/ td4Pȑp2P  4 2px-"yNr04r p`Pȑ82P  t d 4Rx-NBd42 p202P20x-CYNB2P2P  4 2px-&0OEl O  4 2p202P2P42px-;O B[O2020d pP  20202P2P2 0x-< ` vO{  O2P2P  4 2px-0 9 OP W Obp`P0 t d T 4Rd 4R p dT 4 Rp&  p`P0ȑ0 4MB p`Pȑ$  p`P0ȑ t dT422P2P2P t d 4 Rx-0[O/ P L,PBB- dQTP4OJpȑ@B  4 2p20dT42pd42 p 4R p ` Pd42 pd42 p 4R p ` P2020 t dT42 t dT42 t dT42 d T 42pt d 4 rP d T 4 rptd42dT42pB2Ptd42x-?1}1GP  4 2p t dT42dT42pT42 pB2P  td42x-44eP2P2P td 4 rx-55P\56P2Pt d 4Rx-78P"  p`0Pȑh tT4d42 pt42   2020dT42pdT42p0 4dZ p`PȑB2P t d 42x-pK,LQbbbbbb2Pd 4R px-BMMQd42 p202P2P t d 4 Rx-NBO8QN[OhQ2P42 px-OOQd T42pd42 p20BBd42 p0 4ZP p`Pȑpd42 p20BBd42 p0 4ZP p`Pȑp  4 2p2P4 2 p `x-vwQ206 %4q%f p`Pȑ 2P4 2 p `x-aQr0r020202020t d 4 rPB T4 R p `2Pd 4R px-RrQdT 4 pdT 4 p td4PbbR0b t d T 4Rbbbd42 p Bx-юՎՎB Bx-B2Pd42 px-͏QBB2Pt d 4Rx-ǑْR2P d4 R px-iRdT42p$  p`P0ȑ d T 42p202P t d 42x-t8RB  4 2p  4 2p  4 2p2P Bx-PRBBdT42p  4 2pd T 4Rp t d T 42d 4 R p t d T 4 r  4 2p20d42 pd T 4Rpd T 4Rp2P20x-)4rRRP  t d 4Rx-xR*RRP  t d 4Rx-u R/R1 dT4pȑBBBB- Etd4C PȑHd4 p- 5td43r Pȑ0d4 p td 4 rP2 0T42 p  20 dT4rp2 0 td4rPBB20bȑ  t d T 4220  4 2p$d4 pȑd T42p$T4 pȑ 4 pȑ202020T 4 R p `bȑ  p`P0ȑH202020BdT 4 pBd 4R pT 4 R p t d T 4RdT42p td4Pd 4R pT 4 r p  4 2pd42 pB2PBp0x-RBBBBB4p ` Pbd 4  pd 4R p20dT42pdT42p0 4dZ p`Pȑ  t420dT42pdT42p0 4 p`PȑX 2P4 2 p `x-SR  4 2p2P4 2 p `x-S20  4 2p2P42 px-S td 4 P  b2P20x-6S  20t P$ $4$p`PRPp0x-QSRP  4 rpx-Sr 0b  t d 4 rP  t d 4 rP  p ` 0 P2P d 4 2px-*"+SB- Etd4C Pȑ@d 4  pBd 4 r p  4 rp dT4rpbbbb20  t d 4 rPBd42 pbbbd42 pbb t d T 4R$ 53 p`0PȑXd4 ptd4P2P t d 42x-!>G>TB t d T 422Pd 4 2px-AATBd42 p2P4 2 p `x- C;C4T4BB2Pd 4 2px-UE|EMTb  4 2pRP t d 4 Rx- JJfTJJfT2P2Pd 4R px-SK}KT"KKTd 4 r p20B %P`0!(`$T*Hd *h` +`$+8d%+ e:+*+n+^+L++*+*%%*****r*`**>'L'\'l'x'''''''' ((2(D(Z(n(((*110'0000000z0j0T0D0*00///////x/`/8/*/'''&&&& 1&&&x&j&\&F&6& & &%"/:1/...+,,,4,N,l,|,,,,,,,---0-B-V-r------- .&.2.<.H.Z.h.v......+(((H*:*$***))))))))z)f)Z)F)2)")))((+++PropertySheetACreatePropertySheetPageACOMCTL32.dllSetLastError|CreateDirectoryAGetFileAttributesAYMapViewOfFileCreateFileMappingARCloseHandlexSetFileTimeDosDateTimeToFileTimeGetLastErrorCreateFileAUnmapViewOfFile`lstrlenAiMultiByteToWideCharLGetProcAddress>LoadLibraryADeleteFileAReadFiletSetFilePointerGetFileSizehFreeLibrarySetStdHandlekGetStdHandleJLocalFreecFormatMessageAGetTempFileNameAGetTempPathAGetModuleHandleAGetVersionExAResumeThreadSetPriorityClassGetCurrentProcessGetCurrentThreadSetThreadPriorityCreateProcessAGetModuleFileNameARemoveDirectoryABGetPrivateProfileIntAHGetPrivateProfileStringAGetModuleFileNameWKERNEL32.dllMessageBoxA.GetFocus:wsprintfASetDlgItemTextA{SendMessageAiReleaseDC#GetDC6PeekMessageADispatchMessageATranslateMessageEndPaintGetSystemMetricsBeginPaintDefWindowProcAUpdateWindowShowWindowmCreateWindowExAORegisterClassALoadCursorAMoveWindowGetWindowRect9PostMessageAfGetParentvSendDlgItemMessageA)GetDlgItemSetCursorUSER32.dll6CreateDIBitmapDeleteObjectSetTextColorTextOutASetBkModewSelectObject<CreateFontATCreateSolidBrushGDI32.dlllRegQueryValueANRegEnumKeyExA0RegCloseKeymRegQueryValueExA`RegOpenKeyExA}RegSetValueExA8RegCreateKeyExA=RegDeleteKeyAGRegDeleteValueAADVAPI32.dllShellExecuteASHELL32.dllpCoUninitializeCoCreateInstanceBCoInitializeole32.dllGetSystemTimeAsFileTimeHeapFreeHeapAlloc+FileTimeToSystemTime*FileTimeToLocalFileTimeGetFileInformationByHandlePeekNamedPipeGetFileTypeEnterCriticalSection;LeaveCriticalSectionGetDateFormatAGetTimeFormatAHeapReAllocGetModuleHandleWExitProcessDecodePointerGetCommandLineAjGetStartupInfoWTerminateProcessUnhandledExceptionFilterSetUnhandledExceptionFilterIsDebuggerPresent&RtlVirtualUnwindRtlLookupFunctionEntryRtlCaptureContextEncodePointer WideCharToMultiByteGetTimeZoneInformationxGetCPInfonGetACP>GetOEMCP IsValidCodePageZFlsGetValue[FlsSetValueYFlsFreeGetCurrentThreadIdXFlsAllocHeapSetInformationGetVersionHeapCreateHeapDestroy4WriteFileeSetEnvironmentVariableWdSetEnvironmentVariableASleep%RtlUnwindExInitializeCriticalSectionAndSpinCountDeleteCriticalSection&FatalAppExitA|SetHandleCountGetConsoleCPGetConsoleMode;SetConsoleCtrlHandlerALoadLibraryW GetLocaleInfoWgFreeEnvironmentStringsWGetEnvironmentStringsWQueryPerformanceCounterGetTickCountGetCurrentProcessId/LCMapStringWpGetStringTypeWGetUserDefaultLCID GetLocaleInfoAEnumSystemLocalesAIsValidLocale]FlushFileBuffers3WriteConsoleWHeapSizedCompareStringWCreateFileWaSetEndOfFileQGetProcessHeapSoftware\Microsoft\Windows\CurrentVersion\Uninstall h@h@h@h@h@h@h@g@g@h@ h@g@h@g@h@h@h@g@g@h@g@ g@g@xg@`g@Hg@8g@ g@g@g@f@@f@@@f@@f@4N@f@xN@f@(@Software\Microsoft\Windows\CurrentVersion\Uninstall2-+] f@@pPSTPDTF@F@        ! 5A CPR S WY l m pr   )     abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZH@`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~C@@@@@@@@@@@x@l@`@\@X@T@P@L@H@D@@@<@8@4@0@(@@ @@L@@@@@@@@@@@@x@ p@h@`@X@P@H@@@0@ @@@@@@@@@@@@@x@p@h@`@X@H@0@ @@@@@@@@@@|@t@`@8@ @M@M@M@M@M@U@@@@M@P@P@H@@ X@H@-@-@-@-@-@-@-@-@-@-@;Zx0Nm:Yw/Ml..U@U@xq@xq@xq@xq@xq@xq@xq@xq@xq@U@|q@|q@|q@|q@|q@|q@|q@@@.$ $Y4lXJh`p=|@&(o p # #$ $%<%'X'(|(%*(***c+d+,,<-<-..!0$00(01<13P3"4p$44|4"9$9G=H===2@4@t@t@AAeAhAA$BC4CDLDE`EFtFPF|PFbGdGKK-M0M4N4NvNxNNN-R0RS$SV4VWTWZ\Z&[d@[I^lL^a|a'b(bc0cgghh]iijj3 4$d,փ@Ph00ddǑȑϓГ ehŗȗi  BDwx$ݛ,040<hLhhƣȣ(508\8\y@|HPX`EhЧp ѨxԨrgh~&(]`ɬ̬z|np@/l0htp0  EH (08H:<]`9<'(  opS T(:0<8#@$HPX`shtp_x`KL.DY\{{}0j jwxK@LX78klW0 H*P4Xx14104oPpx  ;<kl"$N,P4<DL\1dht0080@Py`,,_`$ 1 , 4  4 P  D   L   d  l  x     & ( @, @ML Psp t p p  y |D L 0cX d` { t | 7$ T$$ $_% `%( (]) `)) )* ** *!+ $++, +h,H ,p-L x-u/` x//| /0 00 01 11 1|2 |2)3 ,33 3L4( L448 5$7x $78  8: := =3>(4>?8???H@??P??X?Z@l@JJ K KPLPLsLtLLLLLLLMM'M (MMMMNDPNNTNOlOOOeQhQQ R2R4RYR\RoR pRRR(c$(ccHccXc d`d#dh$dhdphduuvvSwTwww~~@[HtṔX́`$h`6p8~68ćЇȈWъ,Ԋ 4 z<|D܌L܌d-l0eth|ߎ%(EhH\ \pp-$0bXlppKTHH ( V4!H$ehhpx @HӥA Dܨ0ܨGLHEtHJLll$,+4,d<JDLlB|Dµĵ34"$hh , G4L<[D\Tpx<!$QT\,\HPX ``hh$|$ad!DFPNP7$84X)`,ShTupxx34!$OP E H4 H tY\?@u4Dvdl|y|NP!!# #C*,D*_+L`++|+--z-|---?.000230303R3T33 3333<4?5$@55<56D66T66\66d67l77|88888<<<<==k>>7? 8?Z?(\?@0@ATAAABBsCtCBDDDDDDDEGGG1H 4HK4KKKLLMM"M0MKM`KMfMfMMMMMMMM8MM@MNPN%N%NCNCN^N^NyNHyNNpNNNNNNNOXOO O;O;OVO[OvOvOO\ OOT OO OO OP  P'P ,PGP GPeP ePP0 PPp PPh PQ QQQ8Q8Q`QdhQQ\QQQQQQ QQQRRRR8RP8RNRPRrR@rRRDRRlRRRR,RSlSSS6S6SQS<QSSSSSTDTTT4TL4TMTMTfTfTT,TT|TTt(@pnklmn ( 8 H X hx  $ZZ(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:PhnPA@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}( PAPADDINGXXPADDINGPKq|]A[command/wininst-8.0.exenu[MZ@ !L!This program cannot be run in DOS mode. $tpj\VXq@YYt_Wp@؃u'jWp@utWhr@jՃ WjYYuhp@t Whr@jՃ \Fu[_]3@^U SVW=p@39uuEVhuVVSu ׃Ep@uu uu  uPt Pp@/9u u jU YYt.VhjVVSu ׃Eu%9u u hs@u jU YY9u t u jU YYEPuup@}EPPPWp@9uu Wp@\VuVjVWp@W=p@׃u9u t8u hr@&VVVjSq@SE׋E;u9u tu hr@jU 3_^[U8}S]VWj8EjPdSE EȋE@E̋Ej8hhs@E؍Ej3P]F2}t t*PhPs@EjP4;YYtt PhPK?PKV. uMN VGF*OȋEˍDEEPUQEHEEPQM <\tEhps@PQYYEPq@eDEE8t;EE0sQPuE04q@EEMȃ8EuGPuEPdq@ EEPQYM<\tGuF PFPvEuPjt"uOvvQuPF}tE@PE@ PujUE@ E9EkKM3PsEEPvP_EM+؍EPMbPM<\t#EPMPYM</tEhps@P/PYYM<\tjPq@S8VVq@$ hPx@Yt$q@D$Y_^][ U|@3ʼnE39EVt>PPQVuPhp@VPq@ p@Pq@+WVPq@ jhx@P5@@{V4tRDy@Y;N;t +V+щ0@+FM+F+~hq@YEEPh\p@tnuEjh@y@PXp@tV3PPPvPujEtKvWPq@uB|WHq@MuE q@3@p@P y@Y3_3^RBŔUV5r@W3EPr@EPr@jWWWEPօu_^UP|@3ʼnE} EEtuuu Pxr@SVWMQP|r@j]r@j Yhxy@3QQQQQQQjhQQQPHp@=Dp@PSjSE4p@ @VsAYPVjjSPp@hu8p@VOAYPVj j uuuPUl$|@3ʼnElExSVW=p@xQh3ShE|hz@Pd\tׅt3\SSSSpPEPSxDžpPp@\t;DžpPt8tEPVZ>YY5Dr@EPEhhz@P֍EP|hh~@hWuE~@ur@h@P4h~@P4h@Pu4@;tQh @h~@Pq@SVV4r@5q@E֋=q@@Px@Su׃uPPh~@@r@PEEPEPh`@Wփ;t֍EPEPhL@Wփ;uWgPp@;tGtBE=EPEPh8@Wփ;uWEPEPh$@Wփ;uW YEE;Eu3vp@tEEp@~P}Y9]Etuuuh@PDr@uuh@PDr@j@h@EPS9ut99ut49ut/;t+39uh@UuuJ U^[UQEPh4u@u $@ uujht@@ UQEPh4u@u $@ uujht@@ ø'|@3ĉ$$ NU$ V$-tX-t0H~j$hhUPr@VhUr@VjhhUPr@b3@6@tPjhrhUPr@h@D$ hЂ@PDr@5r@ D$PhUh@hUv1t(8jjhpUTr@PXr@5Tr@W3WWhpU-@D@PXr@WWhkUPr@@WN%<0\Yt hps@W%YYW%U0YY(S5`@5H@5r@ء,@t8th@hU5,@Y=D@h@hUh@5@5@WSTu hd@uY=D@=t@ @t9hH@hUh4@h5@+tjpYWp@=D@tB=p@t9h@hUh4@h5@tj%YWp@[_3$^]3^$UtSVWj,3ۍESP&$3]}j0^VESP] $Su}`p@5(p@EȍEP]E%@Ek։EEP}ElEP)@։EEP}EmEu>@։EEP}EnEf0@SEE4`p@EEEEEEPE ]]]E,p@_^[ø#|@3ĉ$SUVW5@=p@UD$Pt@Sh@؃@VjPYD$ @5@D$UPShЃ@V׋͍D$@@5@jPh@Shă@V5@-p@jh@V5@t@jh@V5@p@j hP@Sh@V5@jPh@Sh@h@5@hh@Shp@Vh @$P@@YY5@ q@@_^][tPp@@tP u B J^8e~0NlFLRFTPQv` FpPj EtCE@@NhfUHfTNpFhuFdF`9Fh 닋E@@^NlFPRFXPQvdF`DFpPj EtE@@}r\}rSEMuH MHMMHP^8~<E^8~}'EM;AtE}t j}E+G]+_G_^~Et,t(G S+Ã~PvtB FG0Eԃ > u3ɋV҃@VH@H@OI@I@PJ@J@K@L@L@M@&M@3M@M@)MMMAGMu+MM#+MM;Ms)MMAGMu֋MUvLBj3YM@mAGAGAGHuE +ʃmAGAGAG}w}tAG}vIG;]s7;}#,@0@@P@ t @h@M +)M 3AыM JʋU#эKOH M+˃HM+ρHE _V8F<^[Ul$|@3ʼnE\E|UxS]lVutWjE3Y}<339}p]ԉUvKDEU3B3ۃ}h]JEUUMur3@MM*MMM;M} EfU)~M UɊUUf fM feE`3ҋ+MBMMM M] )U+˃}]u3ҍHBMut Z#3ۃELEEMM 3ҍHBut J#ʋ3ۅuEME؉3M\_^3[`US]VuW3@;u$E ;r+;+M û3]E[QQQQQQQQQ Q Q Q Q QQHw3Ҿǿ3MIQQQQQQQQQ Q Q Q Q QQHt+KAu;r+3&KAuƹ3ҋNj3 _^[]UQ}SVWйtt3#3@BMu} j_UU3#ы@3@#3@3@3#@3@#3@3@3#ы@3@#3@3@3#@3@#3@3@3#ы@3@#3@3@3#@3@3@#3@3#ы@3@#m 3@3@3#@3@3@#3@Mk9}rDUU3)}#ы@3@3@#3@MuŃ}t3#3@FMu_^[ËT$u3t$ D$Y%\q@%`q@%hq@%lq@%pq@; |@uQL$+ȃ Y*QL$+ȃ Y%q@QL$+#ȋ%;r Y$-h!k@@$@5@@h@h@h@q@@}jYjXh8@3ۉ]]EPp@EEdp@jVWp@t;u3Fhp@3F@;u j]Y/@u 5@hr@hr@*YYt .5@@;uhr@hr@YY@uSWp@=@th@dYt jjj@r@0u< wLt}uBt < wFuEtEj XPVjh@ @=@u[Pr@<"u 39MMP r@YtFuF놋E MPQEYYËeEܣ@=@uPr@=@ur@E@3@ËeE-f=@MZt3Q<@@PEu@ t uԃ@v39@t@v39@j@Pq@jTq@YY@@0r@ @,r@ @(r@@=@u hl@$r@Y=@u j r@Y35U(@ @@@5@=@f@f @f@f@f%@f-@@E@E@E@(@@@@ @|@@p@ @jlYjp@hȰ@p@= @ujHYh lp@Pp@%q@jh`@5@5$q@YEu u q@YajYe5@։E5@։EEPEPuEu5Tq@֣@uփ@E EjYt$XYHVW(@(@;NjstЃ;r_^VW0@0@;NjstЃ;r_^%r@̋L$f9MZt3ËA<8PEu3fx ̋D$H<ASVq3҅WDv|$H ;r X;r (;r3_^[jh@ne@RsYt=E+PRYYt+@$ЃE E3=ËeE3T%r@%r@hl@d5D$l$l$+SVW|@1E3PeuEEEEdËMd Y__^[]Qt$t$t$t$he@h|@Vhh3V t VVVVV^3U|@eeSWN@;ǻt t У@`VEPp@u3up@3p@3p@3EPp@E3E3;uO@ u 5|@։5@^_[%Lq@%q@%q@%q@%(q@%,q@%0q@ȹֹ>. nRB0zbrζ 2@Tl0@TdԵzʾt`B&ڽĽĵRF8"jLVdlv6$ƺкں$2<JT\dlt~ʻԻ޻",BP`jrм  ظȸzjXJ6*޷ηp^+f@Uh@CreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.3\message_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBInstallation failed.no such folder (%s)unknown CSIDL (%s)sSHGetSpecialFolderPathAfunction not availableshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissilSOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOSErrorValueError__builtin__PyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleRunning Script...Could not open postinstall-script %s Py_FinalizePyRun_SimpleStringPySys_SetArgvPy_InitializePyErr_PrintPy_SetProgramNameOut of memory!rbRunning the pre-installation script failed Can't load Python for pre-install scriptaRuntime Error100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Could not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py)Times RomanSetup %sCould not register window classSetup.exeSetupWindowClassThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreDon't know Python's installation typeStrangepython%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:UninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** %s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINE*** Installation finished %Y/%m/%d %H:%M *** Postinstall script finished. Click the Finish button to exit the Setup wizard.*** Could not load Python ****** run_installscript: internal error 0x%X *** freopen stdoutfreopen stderr300 Run Script: [%s]%s \Scripts\-installPlease wait while running postinstall script...if exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removed%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %sYou do not seem to have sufficient access rights on this machine to uninstall this software%d Root Key: %sAre you sure you want to remove this package from your computer?Please confirmOut of memorycould not open logfiler2. arg is not -u-uWrong number of args%s%cimport py_compile; py_compile.compile (r'%s')Py_OptimizeFlagPySys_GetObjectCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.install_scriptmetadatanametarget_versiontarget_optimizetarget_compilebuild_infoinfoSetuptitleSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archive`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checkinvalid distance too far backinvalid distance codeinvalid literal/length codeinvalid distances setinvalid literal/lengths setinvalid bit length repeatinvalid code lengths settoo many length or distance symbolsinvalid stored block lengthsinvalid block typeheader crc mismatchunknown header flags setincorrect header checkinvalid window sizeunknown compression methodincompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionary0@$@t@@@@@؎@@t@ inflate 1.2.3 Copyright 1995-2005 Mark Adler  #+3;CScs !1Aa  0@`@@0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfaFF F@(@H|@ @l. nRB0zbrζ 2@Tl0@TdԵzʾt`B&ڽĽĵRF8"jLVdlv6$ƺкں$2<JT\dlt~ʻԻ޻",BP`jrм  ظȸzjXJ6*޷ηp^dPropertySheetACreatePropertySheetPageACOMCTL32.dll(SetLastErrorKCreateDirectoryA^GetFileAttributesAhMapViewOfFileTCreateFileMappingA4CloseHandleSetFileTimeDosDateTimeToFileTimeqGetLastErrorSCreateFileAqUnmapViewOfFilelstrlenAGetProcAddressRLoadLibraryAuMultiByteToWideCharFreeLibrary\LocalFreeFormatMessageAcGetFileSizeGetTempFileNameAGetTempPathAGetModuleHandleAResumeThread1SetPriorityClassBGetCurrentProcessEGetCurrentThreadDSetThreadPriorityfCreateProcessA}GetModuleFileNameADeleteFileARemoveDirectoryAGetPrivateProfileIntAGetPrivateProfileStringAKERNEL32.dllMessageBoxAGetFocuswsprintfASSetDlgItemTextA;SendMessageA*ReleaseDC GetDCDispatchMessageATranslateMessagePeekMessageAEndPaint]GetSystemMetrics BeginPaintDefWindowProcAUpdateWindowShowWindow`CreateWindowExARegisterClassALoadCursorAMoveWindowtGetWindowRectPostMessageAEGetParent6SendDlgItemMessageAGetDlgItemMSetCursorUSER32.dll3CreateDIBitmapDeleteObject<SetTextColorNTextOutASetBkModeSelectObject9CreateFontAPCreateSolidBrushGDI32.dllRegQueryValueARegCloseKeyRegQueryValueExARegEnumKeyExARegOpenKeyExARegSetValueExARegCreateKeyExARegDeleteKeyARegDeleteValueAADVAPI32.dlliCoUninitializeCoCreateInstance;CoInitializeole32.dllWstrchr/memcpy3memsetastrncatUstrcat`strlenZstrcpyz_localtime64_time64nstrtolfree$malloc6_putenv_fstat64i32fprintf__iob_funcDremovefreadftellfseekfopenfclosefflushfreopenq_snprintfdstrncpyXstrcmphstrrchr_vsnprintfSsscanffwrite_strftimeOsprintf isspace>qsortCreallocfgetscstrncmp__argv__argcMSVCR80.dll_amsg_exit__getmainargs/_cexit_exitg_XcptFilter+_ismbbleadexit_acmdln _initterm _initterm_e?_configthreadlocale__setusermatherr_adjust_fdiv__p__commode__p__fmodem_encode_pointer__set_app_typeN_crt_debugger_hook_unlock__dllonexit|_lock"_onexitc_decode_pointerv_except_handler4_common_invoke_watsonB_controlfp_s)InterlockedExchangeVSleep&InterlockedCompareExchangeGetStartupInfoA^TerminateProcessnUnhandledExceptionFilterJSetUnhandledExceptionFilter9IsDebuggerPresentQueryPerformanceCounterGetTickCountFGetCurrentThreadIdCGetCurrentProcessIdGetSystemTimeAsFileTime_strnicmp_strdup_stricmp<_close=_read#_open_tempnamt@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@t@Software\Microsoft\Windows\CurrentVersion\Uninstallt@ t@pt@Pt@8t@ t@t@s@s@s@s@@s@t@s@@s@>@s@<>@ts@@Software\Microsoft\Windows\CurrentVersion\UninstallN@D(@pnklmn ( 8 H X hx  $ZR(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:PhnPA@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}( PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXPKq|]@command/wininst-10.0.exenu[MZ@ !L!This program cannot be run in DOS mode. $[ɏɏɏQɏqb;ɏqW ɏJɏZɏȏɏqcɏqSɏqTɏRichɏPEL{O  50@Pg02@0.text `.rdata0@@.data$M@.rsrc0@@tt /u\@uUVu S]W2B>toj\VgYYt_ST1BE u&jSX1Bu9Et SWjU SjUYYE uh\1B}t SWjU \Fu_[3@^]U SVW=81B39uuEVhuVVSu ׉E<1Buu uu  uPt P\1B/9u u jU YYt.VhjVVSu ׉Eu%9u u h@3Bu jU YY9u t u jU YYEPuu@1B}EPPPWD1B9uu WH1B\VuVjVWL1BW=H1B׃u9u t8u h(3B&VVVjSP1BSE׋E;u9u tu h3BjU 3_^[U8}S]VWj8EjP,jE EȋE@E̋Ej8h3BE؍Ej3P]FF}t t*Ph|3BEjPHYY;tt Phh3Bj׃ 3EP7[Yt,t PhP3Bj׃ 339uuuu S!f FS41B_^[U@B3ʼnEEMEW}L8+A Q+ƒ9PKt33SVf;Q |3@^[M3_jËs*;PK>PKS. K SFC*NȋύDM +AuP@u+I<\t"OGGu3BfP,1BGP@u+PQ ȃ8uFPP$h 6P@u+€<\tVC PCPsPjt(NssQPt$@P@ Pj@ 94ȋx@uN+NjAu+΍OOGuʃ󤋍ȉI+ȍp@u+Ɗ<\tj@9BY3tu%u %YCtu h,9BPf M3_3@^XUQQVW3VhjVjhu81Bu3NSEPW0BVVVjVWL1BW=H1BE׃}u3VVVjuP1Bu׋E [_^U=Ct@=Cu7Vu|2BCP jHQRjQVL0BVuC2B^]UB3ʼnEEL+AV+A W} "43҉9PK>{V4tR9BY;N;t +V+щC+F+F+~h^YPhp0Bjh9BPl0Btn3PPPvPjt]vWPh p@u+ƍD8PfY41B3@<1BPx9BY3M_3^VUV5p2BW3EPt2BEPx2BjWWWEPօu_^UPB3ʼnE} EEtuuu P`2BSVWMQPd2BjEh2Bj Yh9B3SSSSSSSjhSSSP40BPu80BjuE<0BCƍx@:u+Nj=@0BPVjjuhuD0BƍH@:u+PVj j uuu80BPH0BEPul2B_^3[M3uUU0iB3ʼnEESVW=t0B3VDžDž'@hVL2BhP0B:BPP2BfuVh:Bh9B5 C,2Bh9BP$2B VV׋=h2BPVVjPjPVVVPSVT2BjVX2BV\2BM_^3[UTUB3ʼnESVEPWD2B5h2Bjj֋UȋE++EjRU+UR+PE+EÙ+PWH2BM^3[SUgB3ʼnE} NS]} S=CYtPjhrhS82BVWS<2B+h`Ch(:BP$2B52B PhSh ChSh`ChS_^#Ex8ujjhpS<2BP@2BM33[SUB3ʼnEESQh3SE h:BP0Bt3~SSSSPEPSDžP0BAVW=2BuDžP;t48t0E:u:tN:Hu:u3;5$2BEP\h:BP֍EP h:BPփPhS P0Burh XYDž;tKPVSSS0Bu0\PSh׋VPh0BSSSSPEP0B_^0B3@M3["QUQVEPjjhdBh0Bu u0B3^UBV;t?=uu/5B'jh,;Bh;Bu,2BƣB^]U}~4B]u } 4B}B]UdB3ʼnEE NS]VWZ-=82Bt)HEf;sHdCtPjhrhS׻0CShV42BP ShV42BP jjhV׉ttjHPhV׀=0Ct.Sh;BP$2B Ph2Bu@=0CtSh;BP$2B l;Bjh\;BP,2B<2BjjhpP@2BjjhV׉uSjjhpP@2B=2B5BVhVhנ5BCCjjhpP@2BjhV׋ BC+Њ@uQh2BjhV@PTYtZShVhHCh(ChD;BSxbu5HC5(Ch4;BhC$2BSTY 5BC5HC5(C3ɊC AuqAu+΀ \tOOGu3Bf@Њ@u+OOGuȍPh2B@Ex8u43VVhhS82BujjVhpS<2BP@2BM_^33[LU(B3ʼnEEBDž=B=t Dž=BSVW=0B3SQSjSSSHBVP;t5ujSh=B(2BP,2B3Sht=BV(2BP,2B`CVh`=BPth\=BP^tCPNPlNP`NPh,=BhP#sP5CYhCh =B5CXHh =B5CX5HC5(CVh=BPt PPShSSSPׅtShBhPnpP5C_VC$tPc^YM3HU B3ʼnE} NVuW} u} =$C=@CS2Bh>BhVDž>B3C@uOGGu>B@CfЊ@u+OOGuȡCtQhCh>BPDUhjL2B502BP։PjP tPh>BV@PT thh@>BhMY[FC3;tPWhrhV82B9=$CuPhV2BWWhV@2B3@%Ex8ujjhpV<2BP@2B3M_3^Fh5B 1Bu3h ?BP$1BBtUXB3ʼnE=0Cu3Ah0CEh:BP$2B EPhjEPh0Buu0B3@M3EUB3ʼnEhPDžhx0Bt3@lw u9ps3M3EUB3ʼnEjjh5BhCht?Bj2B ,P|h8?BP$2B jh0?B|Pj,2BM33EUEE :utP:Quu3]]U`B3ʼnESVWhP3W0BPh?BPmh?BP6mh?BS1RP?BVSRPh|?BS RPVSQ@S ZjD^VWPB3fPPh3BWVWWWPWDž0BtO50Bjj0BPh0BP0B5H1B|0B֋M_^3[CUQQSWuj[PE=3ۃ ;VGj]W=YY;Fj V|=YY;tEPhSW5B0BtSht=Bu(2BP,2B2Vu0B;ttSh?Bu(2BP,2Bu0BupIY^_[UQQSWuJj[PE<3ۃ ;VGj]W<YY;Fj=V<YY;tpEPhSW5B0BtSht=Bu(2BP,2B2Vu 0B;ttSh?Bu(2BP,2Bu0BuHY^_[UVj:u.<YYtFPoYuV1B^]UVj:u;YYtFPPoYuV0B^]Uj[u;YYuV@j]P;YYSFB΋Ê:utP:Quu3tweeWEPjV}E,@Bu th@BVP@PNYY}t?tjh?BW(2BP,2BW}GYӋ+_ @u3@[^U(TB3ʼnEE 3Ƀ}Sj [tQQhHBBQ,2B3@1VpWjDBBY3t3PPh0BB)h,BBph3YY;u VVhBBVj(3GY;uVhhPt P@u+‹ND7PYmYuPƄ55Y9| PQsYYhPQt f3U$8@jpj$hBBhABV,2BBDž5B9j[4Ί:u*tP:Qu˄u3jABYVPPhABV5S;uMj=BY3uBM2@jPh@AB(2BP,2B3@PPh,ABVR;uVYPPhABVR;uVYtSPPhABVXR;tʍPPh@BV8R;uVj<1B;tat\TPPh@BVQ;uVR+PPh@BVQ;u HY9v1Bt<1B~PYt#hp@BP$2BhH@BP$2Bj@h4@BPj,2B\3_^M3[J<UXB3ʼnEESV3BW3@A;u=82BPVhS5CVVhS5C׉5BE  c6hhBBP$2BPt6h`BBP$2BPj%jhS5C6h5C2BvmM_^3[;USV5$1Bh\8BWh8BWh,8BWEh88BWEhBBWEhBBWE395Bu3J;tC9ut>9ut99ut49ut/;t+39uh@CUuu3 U^[UQEPh`5Bu C uujh5BC UQEPh`5Bu C uujh5BC UNB3ʼnEE NVuW}-tS-t+HPuhhW82BVhW2BVjhhW82B3@eCtPjhrhW82Bh`ChpCBP$2B52B PhWh\CBhWv1t(8jjhpW<2BP@2B5<2BS3SShpW=C$CP@2BSShkWP2BCÍp@u+ƀC\t{GGu3BfÍP@u+WCgSYY85HC5(C52BCt8th33HUBFMuҋ#Ƌ#_^[3tt3uUSVW}j +[ 7UKu_^[]UB3ʼnE} V33ADž| @|@ ||PP|rYY|P^E Yt΍5} t-P|1E Yt΍|} u3EM3^)UuMu YY]UuMu YY]UU u3]uE}Y]U@EHPSKLMԋ+M VpWx OωMč:MЋN(M܋N,MN0MN4M؋N8MN)MMMAGMu+MM#+MM;Ms)MMAGMu֋MUvTBj3YM@QmWQWHuE$+ʊQmWQW}w}tQG}vIG;]s7;},@|eB@deB t @HeBM +)M 3AыM KOH M+˃HMJUU#U+ρHE _V8F<^[UM3;t\A;tUV3PQQQFq00PP @P P(P,P0P8P u H 8^8MH@}~E@PoB,$ } u2   σ+} EME r܋ˋ%;tE@0oB} 33} F@ F@EE9EvEE9EvE} uuu E)EE)EE )F@ }T EMEr܋ÃF`Ã@FdÃ~`F\w~dw fhQE@ oB}EMEr܋Nh M nBÃfDNpFhFh;F\rFhE nB3fLFpFh~hr卆0NlFLRFTPQjFpPj E܅tE@nBfh}EMENT3@NLH#ËɉE;wfsK"}MME;r̋Fh+fMfLFpFhf}uW}|MMEH;rڋ+FhDFnEÃf}uZ}EMEB;rڋjÃ7}EMEB;rڋjà eY+VdNhV`;w6tNhfUfTNpFhHuFdF`9FhsE@nBE@nB>fpuE@nB0NlFLRFTPQv` FpPjf E܅tE@nBNlFPRFXPQvdF`DFpPj! E܅tE@xnBX} }ri}r`EMuH MHMMHP^8~<]> E^8~}'EM;AtE}t jm}E+G]+_G_^~Et,t(G S+Ã~PvtW2FG0Eԃ  u Eet t3V҃@UVb@b@b@ c@c@e@f@f@h@h@ j@Uj@j@k@k@Ol@Xl@l@UVut0Ft)N$t"@4tPv(YYvv(V$fYY3jX^]USVW}3;tw;t ] 9Ft > t jX_^[]Ã> uPPPuSP;Ftj׋Gt jF(};v+PSv4Z F(F,N4W+SQC ~, F 3UEt@t@tM H a03]jX]U39E v?SWs6Uځ;uAt3jZ+ы@;E r_[]US]3VW;{;9Su <sjjX9tGG<ȃg8+G<rO8G8DBO8w<sREwh&P5YYswh3&)CC>CYYEtjsSvECsY 3jX_^[]UEt@t8 u x<u3@]3]jX]UQQSVW39}u ;^;F ;9~$hjv(Ѓ E;uj}9{4t(K$3@jPv(V E;u uv(V$YYɋ}jYhuSV%CL0 0;r/;w%++0FLCP++0FPCl}++0FltK$3@Ps4W E~4p3jX_^[UEt@tǀjjX]UEt2@t+uH@u +H@3ɋ]ø]UB3ʼnEE UEESE3VuWj Y}3ɉt9MvEHDEfA;Mrj[3E]Gf|]uK];s;v]uE@E:SljE;vf|Eu@E;r9EsE׋DM+Av~ }tu;uq3jfEYfD fD ܃fD r}39Uv(EPf8tLMfOLMfB;Ur؋MtAItMEpBEpB7pB+щUPpB+щUE }}EMEM>3B3ۃ}]J|]UUxuTs}uPr3@MM*MMM;M} EfU&~M UɊUUf E`3fM3ҋ+MBMMMM] )U+˃}]u3ҍHBMut Z#3ۃEfLE܉]u;EEMA|U;,x#ˉM;M}uUM<ȋE3+B;Es)EDEE+Ӆ~AEEE;Er3@UU9Eu }T}u }PE] UT+EfT|k*ME@M3fMK}tx#;Mt Ee>EMM 3ҍHBut J#3ۅuEMt3M_^3[Sø3BjUXUEqB+ȋ]UE EP Y]Uu Y]%,0B%(0B%\1B%X1B%T1B%P1B%L1B%H1B%D1B%@1B%<1B%81B%41B%,1B%(1B%$1B% 1B%1B%1B%1B%0B%X0B%\0B%`0B%d0B%h0B%l0B%p0B%t0B%x0B%|0B%0B%0B%0B%0B%0B%0B%0B%0B%0B%0B%,2B%(2B%$2B%2B%2B%2B%|2B%x2B%t2B%p2B%l2B%h2B%d2B%`2B%\2B%X2B%T2B%P2B%L2B%H2B%D2B%@2B%<2B%82B%42B%02B%L0B%H0B%D0B%@0B%<0B%80B%40B%P0B% 0B%0B%0B%0B%0B%0B%0B%0B% 0B%2B%2B%2B%2B̍B[Í$d$3D$ST$t :tτtQu WV ؋ ~333ƃu%t%uu^_[3ËB:t6t:t't:tt:tt^_B[ÍB^_[ÍB^_[ÍB^_[UWVu M};v;r=CtWV;^_u Aur)$`z@Ǻr $ty@$pz@$y@y@y@y@#ъFGFGr$`z@I#ъFGr$`z@#ъr$`z@IWz@Dz@Wr1كt +шuʃtt uD$_ËD$̋L$ W|$VStt9u~Ѓ3ƒtGt!tt uσ t$u u\"t=t)uu8˃ttu[^D$_ÈD$[^_ÉtȺ~Ѓ3‹t܄t΄t*tuĉD$[^_f3ҋD$W[^_fD$[^_; Bu=U}tuuuuu ;@]ËUVuW3}}};u|Lj^0z@TSj$hV] ;uQLj^0O@(C ;|;r|o@v"Lj^0[_^vGEPJYEPJYEPJYK;|jv`E+EPV}MGYYu9E;VGY,E)EEPUVGYYYF SVGYY<9Et,V8GYt!EEF ȋU+]Eڙ+jjYttȃ CBA$u)ttCB@$t>2M9]u#W|EPSu W~EWV}E EpuYËUEPuu u訋]ËUEPuu u謋]ËUEPju u葋]ËUEPuu u蕋]ËUEPju uz]øBá -CVj^u;}ƣ -CjPpkYYCujV5 -CWkYYCujX^3ҹBC  B|j^3ҹBWCt;tu1 BB|_3^词=Bt(5CYËUVuB;r"Bw+QnN Y V1B^]ËUE}PcnE H Y]ËE P1B]ËUEB;r=Bw` +P)mY]à P1B]ËUME }` QlY]à P1B]QL$+ȃ YQL$+ȃ YU SW3j3Y}]9]u;/uM Vu;t;uo;l/PE;wMEPSuEPEBuu{;tMxE EPSYY^_[ËUEPuuu uk]̋L$ WVSًt$|$u 't+t/uuatt7uD$[^_tuutu[^D$_Ét~Ѓ3‹t܄t,tt uĉ3҉3t 3uwD$[^_UW}3كE 8t3_ËU eWj3Y}9Eud9a-xM Vutu@9=-SE;wMuEuEBuuPu\ytMxE EPj賉YY^_ËUujuu u<]QL$+#ȋ%;r Y$-U eWjY3}_uf8c,9E tV9gYEIuuM;wEuEuu PUËUVuEPju hAv^]ËUVuEPuu hAS^]ËUVuEPju h.A1^]ËUVuEPuu h.A^]ËUVuWuy7v+ DF t8VJV蹭V貃PyFt PfYf _^]j hBDiM3uu6* F @t f EPiV YeV +}O;]rOt V܄Yu}}t 3ҋu+WuV2YPZ ta;wM+;rP})EVPpYYt)EFKEEAEN +3u N Ej hByg39u t!9ut39u;u.5+)3guHYuuuu uPEEEuYËUEtM ]ËUEt8uPaY]ËUSVWuM3E苸]utec4EZcE}YYM\rՍCPbYutdeE:4EF+ƍDPVCa uTVcE:tEF+ƍDPVau*VbE}Yr}_^[tE`pE3PPPPP\'jYËUSVWuM3E䋸w8uE v0nb6EdbuYYMÃM\uuՍCP aYutbehE:wF+ƍDPVH` uRV bE:7F+ƍDPV#`u-VaE} Yr}_^[tE`pE3PPPPPc&j YËU$SVWuM3E܋}]t{a4EpaE}YYM|rՍF8EE ]s0Da3E:aEYYMM|uaaǍ|`|`|`ePE_؃hdVSdeF] )uEESvj [0A~wII@;r[ËUQSV3҉U9Ut597vj [0F ~w7NN@;r.;1s(NVtj [0ENuE)^[ËUQSVu WًY{Iv mtjtEHt"tFYPv@ 7UThv UT% vƙj Y…uQXQMjY+twHHt,HHt HiF;tHF;ȋFr=mg;}3j^;x@rA;8ZF(;F==jdYujkdtmZ%HHtUHt*vmuFjv ujZ>Yc}uSWVt#u@FPuEuMPUtBF9]w9]vE+}8]tTMapKME9]u 9]w%"9]vEy%v8]tE`p3^_[ËUujuuu uY]ËUjjuuu u:]ËUjuuuu u]j h0BW3ۉ]3};;u$3y3u ;;t38;t螩E;u $ʉ]8u $jEPhB裪 PuVWEE EVuYËUj@u u2 ]ËUVuu$j^0$huu t3#^]ËU SW3j3Y}]9] u#ME;tVEEEPSu EPEEBcMxE EPS9tYY^_[ËUEPuu uǪ]ËUEPjuu u2]ËUEPuuu u]ËUEPjuuu u膭]ËUEPuuuu ud]ËUEPjuu u{]ËUEPuuu u\]ËUE PuYY]ËUE PuYY]ËUEPu uݪ ]ËUEPu u ]ËUu MyE~EPhu5 MH%}tMapËU=BuE BA%]ju~YY]ËUu ME~EPjuB5 MH}tMapËU=BuE BA]juYY]ËUu MtE~EPju4 MH}tMapËU=BuE BA]juYY]ËUu ME~EPjuD4 MH}tMapËU=BuE BA]juYY]ËUu MvE~EPhu3 MH%}tMapËU=BuE BA%]ju~YY]ËUu ME~EPju?3 MH}tMapËU=BuE BA]juYY]ËUu MqE~EPju2 MH}tMapËU=BuE BA]juYY]ËUu ME~EPhu>2 MH%}tMapËU=BuE BA%]ju~YY]ËUu MlE~EPhWu1 MH%W}tMapËU=BuE BA%W]ju~YY]ËUu ME~EPhu21 MH%}tMapËU=BuE BA%]ju~YY]ËUu M`E~EPj u0 MH }tMapËU=BuE BA ]juYY]ËU}]ËUE]ËUu u9YYu}_t]3@]ËUuoYu}_t]3@]ËUu u~YYu}_t]3@]ËUEPYu}_t]3@]̋V;tt+S@Nu[^̋UQUW;vlM  SEVIu;w"$SVU~u ;vM U;t!t+I@NuM U+;w^[_]̋UVu W}ut_^]S]t}u[_^]ÃrNE}u+3@wEPSW SWU~,U;t#+JUU U U@uVWU~,M;t#+$U U @Iu}VSU~*M;t!+U U @Iu}I;v};sSWU~;wI};}w SWU~+u;v SVU;w2Ut#+JUU U U@u;uu;s+u;vSVUt;rI+uE;vSVUtEUʋ++;|+;sM􉄍xAM;s9u]}=;sM􉼍xAM;s}]u]EHExUEU}u u Y]Vu u u(Y3MW0uFVuj5B1Bu^9Ct@V>YtvV>Y( 3_^]<1BPY<1BPYjhPB J]]3;u9M t 339M ;t3u;;t9M tډuVYeF @uoVcYttȃ CBA$u)ttCB@$t! e}t:M t2Nx AVYEu ;ue G}< uE E1IËuV\YËUQeS]u3VrustnM EtR:QuMPt<:Qu7Pt&:Qu!Pt:Qu E9ur.@IF@I<@I2@I(M Eu t:u @FA;r3^[ +Uh8B1Bth(BP$1Btu]ËUuYu1BjGYjFYËV6$V;VVҪV!V(V^ËUV tЃ;ur^]ËUVu3utу;u r^]ËUMu jX]áBt3]ËUMujX]áBt3]ËU=CthCOYt uCY胫h2Bh2BAYYuTVWhaA2B2BY;stЃ;r= C_^th CYt jjj C3]j hpBTFjFYe3@9BBEB} 5C51B֋؉]Ѕth5C֋}ԉ]܉}؃};rK\"9t;r>7֋I"5C֋5C9]u9Et]܉]ЉE؋}ԋ]E2B}2BsEtЃEE2B}2BsEtЃEE }u)BjDYu@}tjCYfEËUjju ]ËUjju ]jjj jjjz ËU8u7Yh̋U=Bu8u6hYY]øMZf9@t3á<@@PEu f9@uރt@v39@jXhB-uEFV,YiE<+t<0|<9F3ۋuj9YÀ>:u8FVYk<E<9F<0}>:uFVקYE<9F<0}9]t]E;tjVj@wt Gu-0u0:ËU e} SVW}%yH@Eu jd[ult B \BE +_jd_FjEÙU}[+ЉUGEim%Ek+E;Ut}}u jd[ult E B E `B;~D?%yH@u jd[ult 4B4\Buk<M k<M$iM(}u5B B=B_^[ÍEP5$B (BYuDEi(By(B\& $B\&9(B| )(B$B= B3PPPPP̋U VE3PuY9uXWS3C;Bu ; B95BB BPBPBPf95BuBVPBPRS BPVVRVBScRB LB$PPBPNBPf95DBuHBVPJBPwSJBPVVwVFBV$TjXjYE ]k}jXE EVVVVVQRSSjYEVVVVVuwSVjYH B$BW;};|";;~;}[^;|;;~;}3Gk<Gk<i;u 3;B 3;(BVVVVV8jhB6395Bu*jm6Yu95Bu BE6jL5YjhBn6j(6YeE6j5Yj hB66j5Ye}EE EP6j4YËUeVuuj^0 j$hVE tӋ@ME|@Ws sj^0뼃| &AwSWjh3PQ+HF+yjd}M؋Ǚ_jh+؋EDAڙRP+jQSRP}U}M|sGEǀ3UȁEyIAu jdYuEluAU2EȁyIAu jdYuEluEEjSuFW%jFhRP3U}`BuBF3A9B} A9|QIN+jF E Sp0jY3ShuWVjFhRP轪SUj_^ 3[^ËUVtuVYY#^]ËUEub_jX]Ë 4B3]ËUEu52jX]Ë 8B3]ËUEujX]Ë 0B3]ËUS] Vt4}v4tW}t Et1t,j^0K}tj^034B6q/@Yu3;Evj"X6uS~- _^[]ø4Bø8Bø0BøBËUE3;BtA-rHwj X]ËB]DjY;#]u0BÃu4Bà ËUVMQY0^]ËUuj X]M3]ËUVuu jX z3^]ËU|uj X]lM3]ËUVuu FjX G3^]WVS3D$ }GT$ڃD$T$D$ }GT$ڃD$T$ uL$D$3؋D$A؋L$T$D$ ud$ȋD$r;T$wr;D$vN3ҋOu؃[^_SW3D$ }GT$ ڃD$T$ D$ }T$ڃD$T$ uL$D$3D$ 3OyNS؋L$T$D$ ud$d$r;T$wr;D$ v+D$T$+D$ T$Oy؃_[UQeVuuj^0Sj$hV] u{j^0y @W}`j^0WiҀyʍF3;|+B;|+ȸB;|B+EVQ`BFiȃ}uBF3B9G} B9|] JV+QF j_jElBD;FG;v}>uЋuE}urlj{CijC CtBZf1f0JuL@;v~0C@IuCC Ss3ȋ {95BTM_^3[éËUjM߬Ext}@tMapÀ}tE`p3jhPBr(M}_hu3E;CWh #Y؅Fwh#SuvYYEuvh1BuFh=@BtPwY^hS=1BFp`Bj 'YeCBCBC B3E}fLCf EB@3E=} L`B@3E=}hB@5hB1BuhB=@BtP辮YhBSE0j %Y%u @BtS舮YeE*'Ã=CujVYC3ËUSV51BW}W֋tP֋tP֋tP֋tP֍_PE{dBt tPփ{t CtPփMu֋P_^[]ËUW}SV51BW֋tP֋tP֋tP֋tP֍_PE{dBt tPփ{t CtPփMu֋P^[_]ËUSVu3W;to=Bth;t^9uZ;t9uPuYY;t9uPƬ˫YY讬裬YY;tD9u@-P肬+Po+PaV=hBt9uP$-YY~PEdBt;t 9uPY9_tG;t 9uPYMuVY_^[]ËUW} t;Et4V0;t(W8jYtV>YuBtVsY^3_]j hpB#U`BFpt"~lt>pluj Y $j #Ye5BlVYYYEEj b"Yuj1B1BUu5B2B]BËV5B2Bu5B1BV5B2B^ËUu u5B1B]BtP5B1BЃ BBtP2B BF!jhB"hB1BuF\Bf3G~~pƆCƆKCFh@Bj D"Yevh1BE>j #"Y}E FluBFlvl~YEw"3Guj Yj YËVW<1B5BЋuNhjYYt:V5B5B1BЅtjVYY 2BN V8Y3W\1B_^ËVujY^jhBz!uF$tPYF,tPݨYF4tPϨYFtCuS~uMhTBudX u't ffGfG`t dC3PPPPPVYP;s,VhYYVXYYLlVPYYlPSP% CTlPWh >t P;r L5B@PVWXŃ%39\tjS\) 9`tjT` hud uh VVVVV3M_^3[ËUB3ʼnEESWphS\PPPhxPhu3M_3[腖sHxPzYYuCHӍxPPtYYltCHphD XHAkjPd8PڐFxQtLlQP lXCHPjPPdw p\tFdV;t6td@PH@td|-tt#PdHturjvxvPjhBjj t<3f!Ex@rh5BxP @Fpu \Fpk VBYt1hlCH輚HYXLFhdBt.p41Bu4ssTkcLYYplY3PPPPP̋UB3ʼnEESV3ۋWh;t;t PYɋDHDžpt;8L0xC&x_hXBWYY+ljp;;DžlBpPW6 u6Y9ptl B~ChLBS3YY;u ;;lDWSxhP~uTlh=xxPtYtt?t G? 39thVVVVV3xSSShxQP;t\~Ht57xP~YYtxPYu!ptC~39pu9tt3M_^3[蛑ËU}VWw$} t3GWjC YYu; 3_^]Wh YYu V͗YWh  YYFu6诗V詗YًBu MTYu66SVt 2vp4YYt#vT66V@3 F8F8>U]jh0Be}vKH39uRNpe3GWh YY؉]܅j Y}Nleu MXYE} thdBu |YYt=Bj YE~lSWqS Fpu?`Bu67hBMYYB (B ,B4Be.]܋u3Gj + YËuj  YSSYYE EnËufpjhj2B3ɅB5B2B%BáBËU3M; Bt @r3]ËB]ËUB3ʼnESVuWV3Y;ljYjYu =B6hBhBW h"BVSf*B0BuhBSV t 3PPPPPfV@Y ]ËVW3(Ct~t WW&YB|ܾB_t ~uPӃB|^[ËUE4B1B]t$j 1BhYj hhB3G}39BujhڸYYu4B9tmjWYE Ej YËUEV4B>uP#YujBY61B^]h@d5D$l$l$+SVWB1E3PeuEEEEdËMd Y__^[]Q̋t O3 0葀O G3 0遀̋US] Vs35BWEE{t N3 8W1Bt3%>uN@ uNhF P`1Bt,F N@Ch5C1B3_[^ÃVWCt6;s!p ~tV1B@N;r7{'YC|_^h@d5D$l$l$+SVWB1E3ʼnEPeuEEEEdËM3tUVuV PվYYt|詃 ;u3虃@;u`3@BF uNSW^^N 3_@[3^]ËU}t'Vu F tVf f&fY^]A @tyt$Ix  QPGYYu ËUVMEM >t} ^]ËUQC @VEt {uE >'} ~0EM nE>u?*u˰?X} Ճ?uE^ËUE@]ËUEAQ]ËUEf@]ËUB3ʼnES] Vu3W}uu:u++(t `p7 F @u^V[ YBttȃ CA$uttȃC@$q3;g C39y B@Dž W @9} DžjugucDžW9~~=]VoYt Dž51BGPPSP5HBЋtuPS5TBYYguuPS5PBYY;-uCSDž*snHHXDž'Dž2Qƅ0Dž t@tGGG@t3҉@t|sځu39} Dž9~ u!u t-RPWS踷0؋9~N뽍E+Ftbt΀90tW0@?If90tu+(u BI8t@u+@t5t ƅ-t ƅ+ tƅ Dž++ u% OtPYYt.u%˰0Ostヽtu~qPjEPPOu69t.EPQYYu#P#YY|2t) Ot߃tmYtrt `pM_^3[fÐA A AK A A A AAUEu荳芧]Ë@]j hB3u3} ;;uTQ39u;t܉} WavYuG @uoW~Yttȃ CBA$u)ttCB@$t²迦M9uu"W=uuuWUEWVE Eu vYËUuuu uh< A]ËUuuu uh`A]ËUuuu uhA]ËUuju uh< A{]ËUuju uh`A\]ËUuju uhA=]jhB3ۉ]jY]j_};= -C}TC9tE@ tPIzYtE|(C P1BC4jYCGE EjYËUSVuF Ȁ3ۀu@t9FW>+~,WPVBYPj. ;uF yF N _Ff^[]ËUVuu V5Y/V|YtF @tVPBYY3^]jh0B3}}j8Y}3u;5 -CC98t^@ tVPVsYY3BUCH t/9UuPJYtE9}utP/Yu E܉}F3uC4VsYYE}EtEjYj hXB39uu V Y'urYuuYEE EurYjYËUQVu VE F Yu N /@t "S3ۨt^NF F F ^] u,q ;t q@;u u YuVYF WF>HN+IN;~WPu + EM F yM ttCB@ tjSSQ>#ƒt%FM3GWEPu |+ E9}t N E%_[^ËU9EuFjP;M u+YYu3]ËE6u 7[ Q tՉ&3@]ËUE]ËUEPEYu߃]Jx A R)9YËU}t]|]ËUSU؃tP詍Yu[]ËUB3ʼnEMEVu W3|\PDž$^0l;u菬茠;t@ @SurPYBttȃ CA$u&ttȃC@$tuTbƅ[t4PzYt?\ttYt\PYYGP@Yu <%k 8GX 3/THdXYcsZkƅ{(3GP辊YtdHk DЉdN*tpFItLut{O6uG84u(8]u ]FE /F<-uqtm]tfF:s{{:{s,{*ЋσdzDGJu苝L{D2ȊЋDL<]cD@b+u.du t ƅs\t؉l0\t؉lxt_XtZLxDžTt&HtdusDžLo.tt\SYYj0[\tYH؉ltdd}sDžLxF@xGrtt\PYY;c4cZt@3f@ƅ{l-u ƅY+u.du t ƅs\te؉l(<sLxt]LptTPYLou88<Kjj <8"I0PEYtk8<SYlTCЙH8f>D[GDd<%u8GuG\tGlD;uwPYt%\tGD;u7tlu?%uNDxnuB4lt\PYYt\lYY0u PVYlu*4u 8[ut% apt `p4[M_3^PËU9EuFjP;M u+YYu3]ËE6u 7J Q8 tՉ&3@]ËUEP0|EYu߃]Jx A R[(YËU}t]]ËUSU؃tP|Yu[]ËUB3ʼnEMEVu W3|`PXDž(^0l ;u赛貏;t@ @SurPYBttȃ CA$u&ttȃC@$t85uzQƅ^t8P{YtK`ttYt`P%YYPFPb{YuPpP<% 8F 3<ƅ/T@d4ƅ]ƅ\ƅjƅsƅ_ƅkƅ{$FPyYtd@k DЉdN*tpFItLut{N6uF84u$HLm3u F82u\dtWitRotMxtHXuAj9ht(lt wts"F8lt{k {ksjPu3ۀkDƅsu ntPct{t`tZY`tl DP@t d6 juAct st{u2@D4 oUcdCg~Dit!njt jd_l-ƅ\3ۃl-u X-C l+ud`tl@udlkddtflXT 0P|PCSX( q `tslPvYu]:ldd`tXl] 0P|PCSX(k  lkddtfXlT 0P|PCSX( j `tllP|uYuT_let lEIdd5Xe0P|PCSX(  `tl-u,X-0P|PCS9  l+u/ddu!d`tqllkddtfXlT 0P|PCSX( `tlPtYutlt`l衺YYTjMX8QPD{HP5LB1BЃudDž@k~ƅ_tlt`lYYct4@tddv`tl=ctLsu | % u4{]3ҋȃBL 3υj4_ PYt`tF!PDž? PP1ffDǃpHHt3;l<^jL;k~ƅ_F>^uFƅ]j EjPdC >]u ]FE /F<-uktg]t`F:s{{:{s&{*ЋσdzDGJu{D2ȊЋD<]oDPU+u.du t ƅs`ty؉l0x`tW؉lxtPXtKDžTxt@tdusjo[tt`SٶYYj0[`t@؉ltdd}sjx_CDFtt`PdYY;rj8c_tD3fDƅ{l-u ƅ\+u.du t ƅs`t؉l$FsxtiptdPnYou*8HLHL_jj LH7HL<PoYtsHLSHLYlTCЙHL@tdt7`t؉ltt`S襴YY\HL؃ىHLsxt7pt2PmYou8}<58D<$tHLC{tfP^FPl<%u8FuF`t3FlP;P` Yt)`tFP;tlu>%Pxn-l~k~3f slt`lAYYDž K̋_ t3f0+t`PYYt`lYY0u X)EYlu*8u 8^ut>ap2 u0-t `p8[M_3^2>ËUVuWVAYtPCu u u@Dtjj YY;tVYPH1Bu <1B3V]CYD0t W蓊Y3_^]jhxB胼]u[ @ x;Cr4  ~ҋ<CD0tS裿YeD0t SYElj ME EË]SYËUVuF ttv8Cf 3YFF^]ËUPB3ʼnEE VuW34809}u3;u58}SCL8$$?tu'Mu׈ 輈|D8 tjjjVCVYD@l39H P41B3;`;t 8?P1B4 3,9E#@?g $3 ǃx8tP4UM`8jEPKPYt:4+M3@;jDSPa C@jSDP= n3PPjMQjDQP C@1B=j,PVEP$4t1B @089,j,PjEP$E 4t1B,08<t<u!33Ƀ @D<t<uRD@Yf;DI8t)j XPDYf;D80E9@8T4D83ɋD8?D49M3+4H;Ms&CA u 0 @F@FrՋH+j(PVHP$4t1BC(8;;+4;El%?49MH@+4jH^;MsCΉ u0j [f @@fƁ@rH+j(PVHP$4t1Bi(8;a+4;EGK4,9Mu,@+4jH^;Ms;,,΃ uj [f@@fƁ@r3VVhU QH++PPVh1B;j(P+P5P$4t1Bt (; <1BD;\,+48;E ?Q(Qu448t1Bt(D8 <1BD8ulDt-j^9Du݂ 0?DY1$D@t48u3$蝂襂 8+0[M_3^5jhB葴]ui N x;CrB ' $vҋ<CD0tS豷YeD0tuu Sn É Ձ ME EË]SYËUU VuWHFw  yBw t;t_+^]ËUSuM7]u#B?u8]tE`pVu u$u}tE`pRExu VSMYY1+W3MQPFMQP7Ft;t+_}tMap^[ËU39Bu'9Eu艀t]9E t]Pu u ]ËUu M6EMA%}tMapËUjuYY]ËUhu貪YY]ËUhu蜪YY]ËUju艪YY]ËUjuvYY]ËUjucYY]ËUjuPYY]ËUju=YY]ËUju*YY]ËUhuYY]ËUhuYY]ËUjuYY]ËUjuةYY]ËUjuũYY]ËUju販YY]ËUhu蜩YY]ËUhu膩YY]ËUhWupYY]ËUhWuZYY]ËUhuDYY]ËUhu.YY]ËUj uYY]ËUj uYY]ËU츀f9E]ËUhuިYYu f}_t]3@]ËUhu踨YYu f}_t]3@]ËUhu蒨YYu f}_t]3@]ËUhulYYu f}_t]3@]ËUCS3Vu E]]]F> t tjVhĬBu u~F> t>=unF> tjhȬBV u ?jhЬBVƱ u  jhܬBV觱 uF> t>ta{^ohuE SuP?t3"BEMH 3ɉHHHM H_^[jhB/33}jY]3u;5 -CC9t[@ uHuAFwFPޫYC4V>YYC@ t PVg>YYF둋}cj8&Y C;tNhC P`1BCu43YC P1BC<}_ ;tg ___OE ZË}jڪYSVWT$D$L$URPQQhQAd5B3ĉD$d%D$0XL$,3p t;T$4t;v.4v\ H {uhC"C4d_^[ËL$At3D$H3U,Uhp pp> ]D$T$UL$)qqq( ]UVWS33333[_^]Ëj33333USVWjRhFRAQ_^[]Ul$RQt$ ]U eWjY3}_9E u^x[lËEtVuEuEu EPEEBzMxE EPjYY^ËUuju ug]ËU Wj3Y3}U_9U uwkuEuEu EBPUUUËUu juh< A]ËUuu uh< Ap]ËUu juhAT]ËUuu uhA7]ËU SW3j3Y}]9]uvj}Vu ;t;uvjkE;w}uEuEBuuPuUE;t5;|"MxEEPS^_[ËUujuu uh< Ay]ËUuuuu uh< Ay]ËU}uui]Vut} w u1uuuu Vh`Ayuu"i^]ËUujuu uq]ËU}uSuPi]S]VuWuu9u u3t} uuuuuu;v*8CSVh`AuGt8"uYt8PWVh`AD>u}ut8"u%tyut"h_^[]ËUujuuu u]ËUujuu uhA&y]ËUuuuu uhAy]ËUVuusgF @t F F u VƙYFvvVYP. FF uQVѿYt0VſYt$WV踿V<C訿YY_B@$=Cu5jhXA0B3A;u Cp<1BEu +tyt tNt(H5C1BE;toV1BCa5C1BE;tNV1BC@5C1BE;t-V1BC5C1BE;t V1BCE}uE8]j/YÃt$t t~~ocqj hXB3}}؋] KtjY+t"+t+tY+uC~}؅uTCCUw\ YpQÃt2t!Htnb빾CCCC CCEP1BE3}9EujN[9EtPY3Et tuO`MԉG`u>OdMGdu, BM܋ B B9M}Mk W\DEZ|EuwdSUY]}؃}tj臞YSUYt tuEԉG`uEЉGd3ΟËUEC]ËUQV5C1BEu*mj^0(a WhB0BEulj^0`hBP$1Bu(l5<1BP|lY`PllYLSV1B={WhC0B;[t uX0Bjuօupl el3_^ËUB3ʼnE} ESVW}xth|QuuP̬ub<1BzuxVVuux襬ptXFVP˙YYtHptSuuxjtjV蔙3YY;u!9ttS8%YM_^3[ÍNQSVP u9ttS%Y3WWWWW^} uH50B3PPuu֋؅tjSYYtSPuuօu7$'Yp} fxjxPE Pu0BPumYYt/P41BCu=1B׉VףCE3_^[ËVjj ٗYYV1BCCujX^Ã&3^j hxBۛSeuYEE ESËUuYH]ËV`B`BW;stЃ;r_^ËVhBhBW;stЃ;r_^ËVW30B1B0B(r_^̋UMMZf9t3]ËA<8PEu3ҹ f9H‹]̋UEH<ASVq3WDt} H ;r X;r B(;r3_^[]̋UjhBh@dPSVWB1E3PEdeEh@*tTE-@Ph@Pt:@$ЃEMd Y_^[]ËE3ҁ9‹ËeE3Md Y_^[]ËUE8csmu*xu$@= t=!t="t=@u3]h=u Fd.=u Fd=u Fd=uFdvdjY~d`QY^`[_^]ËUcsm9Eu u PYY]3]ËVW39=Cup5Cu5B< wt.t$<"u 3ɅP¨YtFF< wFu_^Ã=CupV5BW3u<=tGV&YtujGWYY=Btˋ5BS3V>=YXt"jSYYt?VSP uG>u5B%B'C3Y[_^5B[%B3PPPPP(X̋UEB]ËUQMS3VU 9Et ]EE>"u39E"FE<tBU PFdYt} t M E FU Mt2}u t utBe>< t< uFN>}t EE3C3FA>\t>"u&u}t F8"u 339EEtIt\BuU tU}u< tK< tGt=Pt#Yt M E FM E  \YtFU FVtBU ME^[t ËU S3VW9CunhCVSC0BC5B;tE8uuUEPSS} E =?sJMsB;r6PY;t)UEPWV}E HB5B3_^[ËU SV0B3;u3wf93tf90uf90uW=1BVVV+V@PSVVE׉E;t8P膏YE;t*VVuPuSVVׅu ueYuS0BE S0B3_^[ËUBeeSWN@;t t УBeVEPx1Bu3u0B3 2B30B3EP0BE3E3;uO@u G 5B։5B^_[Ã%CËUj ju ]ËUu j ju]ËU]U]Uj ju' ]ËUu j ju9]ËUES3VW9]u;u9] u3_^[];t} ;wG`j^0ET9]uҋU;uك}u+ B:t"Ou+A:tOtMu9]u;u}uM jP\Xx_j"Y̋T$L$u<:u. t&:au% t:Au t:au uҋ3Ðt:u ttf:u t:au t눋U=CV5Bu3cWu95BtS[uJ5Bt@}t:uY'P֍Y;v<8=uWuP]Z tu3_^]ËD8USV3;u^j^0RCE;t9] w9] u;tWu3Y;t/WN@Y9] t ;E vj"X_^[]Wu uZ u3SSSSSQ̋UVW3;u^j^0ROE7;t09u tSu Y;tKSΌpjV3 ;u] ][_^]SVPNJ u E;t03WWWWW)QjhB讏39Euo]lQ3?VuˌYY;tj0YeuYEE E菏jYj hB4jY3ۉ]3};;u\j^0PujM ;t 9]w ;u 9]u3@3;t;tumY;t0V舋Y@9]t!;Ev E"Vuu 蓉 ;u]EE̎SSSSSOjEYj hBgj!Y3u3};;u\j^0Put7E ;t039u;tuY;tS̊pjV 3;u[ [ESVPň ;u!E ;t0}EEWWWWWOjnYËULB3ʼnES3VuW]ԉ]]]؉]܉u]9^F9u PF0hPESPj辈jWEjWEjWE݈jhEΈ$E9]9]v;n9]e9]\Eԉ3M܈@=|EPv1B2}(EEЃ~.8]t)E:t x M G;~8XuڋESSvPhu܉EjSv MESvWQW@PhvS$ESvWPEW@PhvS$bE}3҃}fU؉Mč_ZMMȈ~U8]tPMM:tDI҉M;(HMEfM̋M 9M~MM8YuhQPjPWEjQP$;tKP1Bu@-Pt+Pa+PSHEEEĉEEȉEЉuYouuuu3ۃCˋ;tP1BdžBdž@BdžBdž3M_^3[ PhȋAl;Bt`BQpueËUEu]] hȋAl;Bt`BQpue@gȋAl;Bt`BQpube@gȋAl;Bt`BQpuSEjP, Pj?SEjP Pj@SEjP PjASEjPP PjBSEjP PjCSEjP Pj(SEjP Pj)SEjPP PjuEjPl Pj uEjPS PhuEjP7 Ph uEjP EPPj1SEjP Pj2SEjP Pj3SEjP Pj4SEjPP Pj5SEjP Pj6SEjP Pj7SEjPk Pj*SEjPTP Pj+SEjP: Pj,SEjP# Pj-SEjP Pj.SEjPP Pj/SEjP Pj0SEjP PjDSEjP PjESEjPP PjFSEjP| PjGSEjPe PjHSEjPN PjISEjP7P PjJSEjP PjKSEjP PjLSEjP PjMSEjPP PjNSEjP PjOSjEP Pj8SEjP $Pj9SEjPyP (Pj:SEjP_ ,Pj;SEjPH 0PjSEjP <Pj?SEjP @Pj@SEjP DPjASEjPP HPjBSEjP LPjCSEjP PPj(SEjPs TPj)Sj[ESPZP XPjuESP? \Pj uESP'`Vhu ESP < _^[ËUVucvvv vvv6v v$v(v,v0v4vv8v<@v@yvDqvHivLavPYvTQvXIv\Av`9vd1vh)vl!vpvtvx v|@zodYN@@5* @ wla V$K(@,50*48< @DH@LPTX\`^]ËUSVu~ WhBtBhdjuYYu3@IƋRtWGWUYYLJ;t P1B3_^[]28tSV<0|<9 ,0A8u^[<;uX@8uUVutY;BtPYF;BtPYF;BtPYF0;BtPYv4;5 BtVY^]ËUSVuW3u}9~u9~u}}BejPjtYY;u3@jYj)t3YE;u SYыu89~jtYE;u3FSuYYD8v>SjVEjPCPjVEjP CPjVEjP C0PjVEjP}P C4PjVEjPf tS{YkC0|9 0@8u>;uNF>uBBCBCBC0 B}C4Mu3@Mt=1BtP׋tPׅuYYEE3_^[28tSV<0|<9 ,0A8u^[<;uX@8uUVuF ;BtPEYF;BtP3YF;BtP!YF;BtPYF;BtPYF ;BtPYF$;BtPYF8;BtPYF<;BtPYF@;BtPYFD;BtPYFH; BtPYvL;5$BtVmY^]ËUSVuW3}u}9~u9~u}}BjPjqqYY;u3@jqYE;u SY89~4jpYE;uSuY҉8v8C PjVEjPCPjVEjP CPjVEjP CPjVEjPtP CPjVEjP] C PjPVEjPI C$PjQVEjP5 C(PjVEjP!P C)PjVjEP C*PjTVEjP C+PjUVEjP C,PjVVEjPP C-PjWVEjP C.PjRVEjP C/PjSVEjP C8PjVEjP{P CujYBE IuKIKI0K0@4MC43@39}tM;tP1B;t#P1Bu5*YYEE3_^[PHl; Bt `BHpuZN(Bá0BPȋAl;Bt`BQpu,N3ËUMVWt} u?j^03AUu>tFOut+BtOuu?j"Y3_^]UV3PPPPPPPPU I t $uI t $s ^ËU3S3@9] |FVWt>E Ù+‹E<7E0fYYu M9 yNu ^;] ~_^3Ʌ[]ÁN0BFFËUQtP>tKhBVYYt:hBVYYujEPh w0Bt)EVYEjEPh w0Bu3Ã}u1BËU3fMf;Bt r3@]3]ËV3 AB<w A<wtЊ uڋ^3 BA|Z~aw@ËU|B3ʼnEVW}CN׋jxEP%PW0Bu !@AEPʼYYuWYtЃM_3^aUQVjEP%h P0Bu3);ut!}tE 0WVkY;_t3@^ËU|B3ʼnESVW}@M׍0BjxEPF%PWӅu f3@cEPvĻYYjxEPF%PWӅtEP6萻YYu N~RFuOF t,PEP6J u6N~jY;F u!~VuWYt V~N#;jxEPF%PWӅEP6Y3Yu0NF9^t FH9^ t<6LjY;F u/Vj9^u49^ t/EP6蜺YYuVSYYtN9^u~FЃM_^3[5U|B3ʼnEVW}pK׍jxEPF%PW0Bu!F@\EP6YYu 9Fu1Vj~u0~ t*EP6ֹYYuVP?YYt N~~FЃM_3^uv$iYj@hAF0BFuf6hv@Fhf@~YYFtjXjhAF 0BFt tuf6h@YFtjXjhAF 0BFufËUSVWIEu O@_t8tSjhмB gt[8tVt8t SWj@hȺB tft;t RIt0;t+SgYj@hAG0BGugG0BGGuƃ#uP1Bjw0BE tfOffOfHfp]th50Bf9u hBj@Sd t3PPPPP^+j@Shwօt,j@C@Phwօtj jSu݀3@3_^[]Åt 3ɅD  +t 3ɅD ff;t1+t3҅DuFI+t3ɅD 3Ë;tg+t3҅DuPFQ+t3҅Du5FQ+t3҅DuFI+t3ɅD 3ËVWN;tv+t3DqB+t3DqB+t3DqB+t 3t3A;BtwB+t3DkqB+t3DLqB+t3D-qB+t 3t3A;BtwB+t3Dq B +t3Dq B +t3Dq B +t 3t3A ;B twB +t3DYq B +t3D:qB+t3DqB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3mA;BtwB+t3DGqB+t3D(qB+t3D qB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3[A;BtwB+t3D5qB+t3DqB+t3DqB+t 3t3 ׃$AA;BtxBq+t3DqB+t3DfqB+t3DGqB+t 3t3"A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3A;BtwB+t3DsqB+t3DTqB+t3D5qB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3A;BtwB+t3DaqB+t3DBqB+t3D#qB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3uyA;BtiB+t3DuWqB+t3Du<qB+t3Du!AJ+t3ɅD 3u3_^ËA;BtkB+t3DuqB+t3DuqB+t3DuqB+t 3t3uA;BtxBq+t3D]qB+t3D>qB+t3DqB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3qA;BtwB+t3DKqB+t3D,qB+t3D qB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3_A;BtwB+t3D9qB+t3DqB+t3DqB+t 3t3A;BtwB+t3DqB+t3DqB+t3DrqB+t 3t3MAJ+=3ɅD -A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3A;BtxBq+t3D}qB+t3D^qB+t3D?qB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3A;BtwB+t3DkqB+t3DLqB+t3D-qB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3A;BtwB+t3DYqB+t3D:qB+t3DqB+t 3t3A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3mfAf;B]A;BtxBq+t3D3qB+t3DqB+t3DqB+t 3t3A;BtwB+t3DqB+t3DqB+t3DlqB+t 3t3GA;BtwB+t3D!qB+t3DqB+t3DqB+t 3t3A;BtwB+t3DqB+t3DyqB+t3DZqB+t 3t35A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3A;BtwB+t3DqB+t3DgqB+t3DHqB+t 3t3#A;BtwB+t3DqB+t3DqB+t3DqB+t 3t3qB+t3D{qB+3DVA AAAߛAAbA5AZAA٢AAњApAPA#AHAAǡAAA^A>AA6AԜAAAA[A+AAUVW}ǃHHlH!HM ESj Z20;1tt0+t3ۅÍt+pY+t3ۅÍt pY+t3ۅÍtpY+t3ۅÍt3p;qtvpY+t3ۅÍtpY+t3ۅÍtpY+t3ۅÍtepY+t3ۅÍt3Bp;qtvpY+t3ۅÍtp Y +t3ۅÍtp Y +t3ۅÍtp Y +t3ۅÍt3p ;q tvp Y +t3ۅÍtp Y +t3ۅÍttpY+t3ۅÍtUpY+t3ۅÍt32p;qtvYp+t3ۅÍt pY+t3ۅÍtpY+t3ۅÍtpY+t3ۅÍt3p;qtvpY+t3ۅÍtpY+t3ۅÍtdpY+t3ۅÍtEpY+t3ۅÍt3"p;qtvpY+t3ۅÍtpY+t3ۅÍtpY+t3ۅÍtpY+t3ۅÍt3p;qtjpY+t3ۅÍtuwpY+t3ۅÍtu\pY+t3ۅÍtuApY+t3ۅÍt3u"+;σ$RAP;QtiQ+t3҅tupQ+t3҅tupQ+t3҅tupQ+t3҅t3uP;QtuQ+t3҅t\pQ+t3҅t=pQ+t3҅tpQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3tP;QtuQ+t3҅tNpQ+t3҅t/pQ+t3҅tpQ+t3҅t3P;QtvQp+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3eP;QtuQ+t3҅t?pQ+t3҅t pQ+t3҅tpQ+t3҅t3P;QtmQ+t3҅Tu6pQ+t3҅TupQ+t3҅Tt@I+t3ɅD 3u3[ P;QtuQ+t3҅t5pQ+t3҅tpQ+t3҅tpQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tppQ+t3҅t3MP;QtuQ+t3҅t'pQ+t3҅tpQ+t3҅tpQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tbpQ+t3҅t3?P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3P;QtvQp+t3҅tpQ+t3҅trpQ+t3҅tSpQ+t3҅t30P;QtuQ+t3҅t pQ+t3҅tpQ+t3҅tpQ+t3҅t3I@+83ɅD (P;QtuQ+t3҅tcpQ+t3҅tDpQ+t3҅t%pQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3{P;QtuQ+t3҅tUpQ+t3҅t6pQ+t3҅tpQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3mP;QtuQ+t3҅tGpQ+t3҅t(pQ+t3҅t pQ+t3҅t3P;QtvQp+t3҅tQp+t3҅tQp+t3҅tQp+t3҅t3^P;QtuQ+t3҅t8pQ+t3҅tpQ+t3҅tpQ+t3҅t3fPf;QfQp+3҅TP;QtvQp+t3҅tzpQ+t3҅t[pQ+t3҅t<pQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3P;QtuQ+t3҅tlpQ+t3҅tMpQ+t3҅t.pQ+t3҅t3 P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3P;QtvQp+t3҅t]pQ+t3҅t>pQ+t3҅tpQ+t3҅t3P;QtuQ+t3҅tpQ+t3҅tpQ+t3҅tpQ+t3҅t3uP;QtuQ+t3҅tOpQ+t3҅t0pQ+t3҅tpQ+t3҅t3pQ+3҅TcMu +t3҅DAV+t3҅DAV+t3҅DAN+3ɅD Mu +t3҅DudAV+t3҅DuIAN뤋Mu +t3҅Du ANxEM  g3_^]ËAcA5AA.AܳAAAATA&AAAͲAAAAFAAAAAAzAA8A AAAAAkAUV3PPPPPPPPU I t $u t $sF ^ËU$B3ʼnEESEE VWE=e=CEu}hB0B؅=$1BhBSׅ51BPhBSCPhBSCPhнBSCP֣CthBSP֣CCM51B;tG9 Ct?P5C֋؅t,t(ׅtMQj MQjPӅtEu M 3C;Et)Pօt"ЉEtC;EtPօtuЉE5Cօtuuuu3M_^3[苾ËUVuWt} u< j^0:_^]ËMu3f݋f:tOut+f ftOu3uf j"Y몋UUS]VWuu9U u3_^[]Åt} u j^0݅u3fЋMu3fԋƒu+fft'Ou"+ fftOtKuu3fy3uM jPfDJXdf j"YjUVuWt} u j^0_^]ËEufߋ+f ftOu3uf j"Y뼋UMx~ uB]áB B] ]ËUEB]ËUS]u3}uA >Vu u W;vuMCE@uJU+2Ar Zw Ar Zw Kt ftf;t+7SVSuhPvSuo}tE`p}tMap_^[ËU=BV}u%"M t߾9uv_u+Ar Zw Ar Zw Mt ftf;t+juu u,^]ËUS39]u3AVWu{1pjVN ;tuVW< u SSSSS3_^[]ËUQQSV5B3ۉ]W;tP=(1BSSjPSS׉E;tAjP4YYE;t0uPj6SSׅt*ESPe.YYx;u3_^[Ã9]tugYV5BW3uf=tGV0YtFfuSjGWl4YYBue5B5V]0f>=Yxt"jW94YYtAVWP uI4~f>u5Bǿ%B#C3Y[_^5B衿%B3PPPPPn̋V0B3;u3^f9tf9uf9uS+ƍXWSP3Yu V0B_[^SVW茳 UEfU f;tfuf9t3]ËUSuM衻M3;u8]tE`p39]u&8]tE`p9] tV;v?E9XuuQu uR6pQu Quhp EPR ;u8]tE`p8]tMap^[ËUjuu u ]ËUS39]u3>VWu-3pVfYY;tuVW@1 u SSSSS3_^[]ËUQQSV3W=Bu;te1BVVVVjPVVӉE;tTjP1YYE;tCVVuPj7VVӅt6EVP.YYy9ut uLYu;u3_^[Ãu+YUMtj3X;E sT 3]M VuF3wVj5B1Bu2=CtV)YuҋEt 3 Mt ^]ËUM S3;vj3X;Es 3AMVW9]t uCYVu YYt;s+VjS _^[]ËUEuo 3]Åx;CrT Qދȃ CD@]j hBM4339u;u  _Uj [Pj`YYu>Pm@YE PVu&PBEPW@E E 4 PjkYYËUEPu u4Q ]ËUEPu u8Q ]ËUE Pju Q ]ËUEPu u$Q ]ËUE Pju Q ]ËU BU39 C#щC]áB39CËUSVu 3W};u;v E;t3{E;tvj^0VuMԶE9XfEf;v6;t;v WSVű ?*48]tMap_^[;t&;w j"^08]tE`pyE;t8]t} ^]ËUQC @VEt {uE >'} ~0EM nE>u?*u˰?X} Ճ?uE^ËUB3ʼnES] Vu3W}u~u+t `pa F @u^V7IYBttȃ CA$uttȃC@$q3;g C9 B@Dž GW @} DžjugucDžW9~~=]V2$Yt Dž51BGPPSP5HBЋtuPS5TBYYguuPS5PBYY;-uCS*stHH[Dž'Dž5Qƅ0Dž t@tGGG@t3҉@t|s؃ځu3} Dž9~ u!u t-RPWS}0؋9~N뽍E+Ftct΀90tX0@@If8tu+(u BI8t@u+@t5t ƅ-t ƅ+ tƅ Dž++ u% OtPYYt.u%˰0Otヽtu~qPjEPPu69t.EPsYYu#PEYY|2t) Ot߃t菫Yt3dt t `pM_^3[覤ÍIAA+AAAA%AWAUS]VuFt} ^]ËUQC @VEt {uE >'} ~0EM nE>u?*u˰?X} Ճ?uE^ËUEAQ]ËUB3ʼnEES] VuWu3dH`LX[hD;u+t `pRF @u^V;YBttȃ CA$uttȃC@$q;i(u93(lxTPpEG|C8Lp`Xà tIt5t%HHt *9u@j hPW轤h HQ|uL9$d;l~lŴ9j*V3Ÿ3҉p; p pk ˍDЉp *9u@WW6I" Ej[+PD=P6\L ;݃ CD$2M0 CD$M ʀ}u!Etȃ CD M#;u~EtxuH1BjuEjPuE%Pu 81B;u4<1BPȃ CD 6Y6 CEVSSSSSAjhBM3}39};u~{r}uj@u uEPE|EEu;t<6039}t+9}tEMCD u]YËEjjhB3}3u;;uj^0Y39};t9}tE%@tʉ}uuu uEPEEE;t3u9}t(9}t CD 6YËUQMjEPuuu utËEËUjuuuuu ]ËUSuM/39]u8]tE`p3E9Xu&uu u 8]Map9]u&zw8]tE`pfW} ;u&LI8]tE`p7VM MEDMte9]uD]fU:u]Tf EfMf;pr f;pwfp1f;pr+f;pw%fpU At ʉMfuGDMtG9]u]XM:tf GMf;Hr f;HwfH1f;Hr+f;Hw%fHU At ʉMfMf;u!f;t 9]8]tE`p3^_[H8]tMapUjuu u]ËU}u3WuM}u'uu u۲ }MapS]u#gd8]tE`p_Vu u$<9}tE`p2 MCD8t=}u 3D8tY}tE`p3^[_Êu3 f CFD:t }u3Mtf Ff;uft}pH}tMap닋Ujuu u]USVWUjjhBu ]_^[]ËL$At2D$H3E{UhP(RP$R]D$T$SVWD$UPjhBd5B3PD$dD$(Xp t:|$,t;t$,v-4v L$ H |uhDID_뷋L$d _^[3d yBuQ R 9QuSQ@B SQ@BL$ KCk UQPXY]Y[ËUUVujXEU;u }S3;|;5Cr ƺNW<CL0u hwN];9] t5D0$EHjYtHuШtU] ]zШu<"6M;rEuY]u njjjusD(T,AHtzI tr}tlM} CED tPL% tE}t?@M}ED% u%L& t}t@MED& jMQuP41BxMm;MdMD}t ; u ]EÉ]E;M<< t CAMEH;sA8 u M uEmEjEPjEP41Bu <1BuE}t?DHt} t ML%;]u} tjjju} t CE9EFD@uC+E}EK xC3@;]rK @PBtPBu *zA;u@D1Ht%CT1| T%Cu T&C+ؙjRPuE+]Pu Sujh(1BEu4<1BP:YME;E tP|YEEE3;EL0ƅt f; u ]EÉ]E;E tf EM;sHf9 u Ej MEjEPjEP41Bu <1Bu[}tUDHt(f} tj XfMLML%D& *;]uf} tjjjuf} t j XfE9Et@u ff+]]<1Bj^;u 0jmZe\3_[^jhB]u^ C x;Cr7  ҋ<CD0tƸ;E@u SYeD0tuu S E ME EË]SY OtjaQYPBtjh@j腲 j`̋UM PBU#U # ʉ PB]ËU B3ʼnEE@SVW=0B3VVuEu ׋ȉM;u3~Ej3Xr9D =w؃;tPyY;t 3;tuSuu ׅt VV9uuVVuujSVu1BS莊Yƍe_^[M3urËUuMuuEuuu P}tMapËU}u]uj5B0B]j$YËUuMuE MUTu}tMA#E3t3@}tMapËUjjuu ]ËUjjuj]ËUjjuu h]ËUjjujP]ËUjjuu 7]ËUjjuj]ËUjhuu ]ËUjhuj]ËUjhuu ]ËUjhuj]ËUjhuu ]ËUjhujz]ËUjhWuu ^]ËUjhWujC]ËUjjuu *]ËUjjuj]ËUjjuu ]ËUjjuj]ËUjjuu ]ËUjjuj]ËUu MrEt*xu!jjuu y}tMapÀ}tE`p3ËUjuYY]ËU9ur9w}v1ٹE"t MMEt e]MuE_^tMEtEM؃ىEM}tẼ`pEU[ËU3Puu u9BuhBP=]ËUjuu uu ]ËU=Bjuu uuhBj]ËUjuu uu]ËUQeVEPu uT u9Et貸t 詸M^ËU}SVWuMn]u'sp}tE`pu tҿ9}v!;8}tE`p]ExuuVS }tAMap8+3MQP]MQPNFMtt;t+3_^[ËU39Bu09Eu褷衫]9E t}w]<Puu u]ËUSV3;uVj^0TW9]w:j^08u39]A9Mw j"ۋM "wɋ9]t 3C-N؋3u vW0ACt;]r;]rIIG;r3_^[] U} Eu yjj juuM ]ËU3} u9E}@M PuEu]ËUM Ejuu]ËU 3V;u1j^0/9Mv39M@9Ew j"ӋE"wE S]M9Mt-wE؉uM u uPS]؋ƒ vW0MFAMut;MrȋM[;Mr脵j"YLNEN@E;r3^U3} u9E  |9Es3@W}Puuu u_]ËUW}juuu u_]ËUVu~ Vu YYE~ Pu YYttPuVuu u01B+ujX 3D^]ËUMI8t@uIE+H]ËU,B3ʼnEESVW}ىE܉U~?I8t@u+}u~*΋I8t@u+u}3|e}u@Et;ujX3C;~;~jEPu1Bt~-}r}Et؊PtыM܊ :r:v8u뺅~4}r}EtPtM :r:u8uw5(1BjjWuj u֋؉]ԅ~@j3Xr4D;w/wątP-mYt Ee}Suuujuօjjuuj u֋؅tx~?j3Xr3D;wvątPlYt 3t1SWuujuօtSWuuu u01BEWn}Yue}EYe_^[M3KeËUuMfhu$Uu Muuuu b}tMapËUSuM#hU3;u8]tE`p39]u&蚱藥8]tE`p9] tV;vebKEH;uEPRu u?pERu RuhQP ;u8]tE`p8]tMap^[ËU=Bu]juu u]jhBsp u39E u虰薤Jdp|,>L`n~"6F\v "0@4&xhXJ<* zn^L0 F@B@,@`A~cApB&B@{O]CreateDirectory (%s)MapViewOfFile (%s)CreateFileMapping (%s)CreateFile (%s)inflateEnd returns %dinflate returns %dinflateInit2 returns %d1.2.5\message_boxdirectory_createdfile_createdget_root_hkeyget_special_folder_pathcreate_shortcutCSIDL_FONTSCSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTUPCSIDL_COMMON_STARTUPCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL_APPDATACSIDL_STARTMENUCSIDL_COMMON_STARTMENULib\site-packages\DATAScripts\SCRIPTSHEADERSPLATLIBPURELIBInstallation failed.no such folder (%s)unknown CSIDL (%s)sSHGetSpecialFolderPathAfunction not availableshell32.dllFailed to create shortcut '%s' - error 0x%xSetWorkingDirectory() error 0x%xSetIconLocation() error 0x%xSetArguments() error 0x%xSetDescription() failed, error 0x%xSetPath() failed, error 0x%xQueryInterface(IPersistFile) error 0x%xCoCreateInstance failed, error 0x%xsss|sssiCoInitialize failed, error 0x%xissiSOFTWARE\Python\PythonCore\%d.%d\InstallPathPYTHONHOME=%sOSErrorValueErrorbuiltinsPyLong_FromVoidPtrPyErr_FormatPyArg_ParseTuplePy_BuildValuePyCFunction_NewPyObject_GetAttrStringPyObject_SetAttrStringPyImport_ImportModuleRunning Script...Could not open postinstall-script %s Py_FinalizePyRun_SimpleStringPySys_SetArgvPy_Initialize*** Could not load Python ***PyErr_PrintPy_SetProgramNameOut of memory!Running the pre-installation script failed Can't load Python for pre-install script (%d)Runtime Error100 Made Dir: %s .py200 File Copy: %s Error200 File Overwrite: %s Could not create temporary file~duInvalid cfgdata magic number (see bdist_wininst.py)Times RomanSetup %sCould not register window classSetup.exeSetupWindowClassThis Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.Software\Python\PythonCore\%s\InstallPathPython Version %s (found in registry)Software\Python\PythonCoreDon't know Python's installation typeStrangepython%d%d.dllPython Version %d.%dCannot installNo Python installation found in the registry.Python version %s required, which was not found in the registry.Python %s is required for this package. Select installation to use:UninstallString"%s\Remove%s.exe" -u "%s\%s-wininst.log"wb%s\Remove%s.exe040 Reg DB Value: [%s\%s]%s=%s Could not set key valueDisplayNamePython %d.%d %s020 Reg DB Key: [%s]%s Could not create key%s-py%d.%d999 Root Key: %s Source: %s *** Installation started %Y/%m/%d %H:%M *** a%s\%s-wininst.logCould not open keyYou do not seem to have sufficient access rights on this machine to install this softwareHKEY_CURRENT_USERHKEY_LOCAL_MACHINE*** Installation finished %Y/%m/%d %H:%M *** Postinstall script finished. Click the Finish button to exit the Setup wizard.*** run_installscript: internal error 0x%X *** 300 Run Script: [%s]%s \Scripts\-installPlease wait while running postinstall script...IsUserAnAdminSetupFailed to start elevated process (ShellExecute returned %d)runasif exist "%s" goto Repeat del "%s" :Repeat w%s.batCould not delete keyCould not delete valueuninstall-script*** Could not run installation script ***-removeUninstall Finished!%d files and %d directories removed%d files and %d directories removed %d files or directories could not be removed%d Run Script: %s%d Reg DB Value: %s%d Reg DB Key: %s%d File Overwrite: %s%d File Copy: %s%d Made Dir: %sYou do not seem to have sufficient access rights on this machine to uninstall this software%d Root Key: %sOut of memoryAre you sure you want to remove this package from your computer?Please confirmcould not open logfiler2. arg is not -u-uWrong number of args%s%cimport py_compile; py_compile.compile (r'%s')Py_OptimizeFlagPySys_GetObjectCompiling files to .pyo...Loading python...Compiling files to .pyc...Failed to unzip installation filesInstalling files...Running pre-installation scriptReady to installClick Next to begin the installation of %s. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.Bad user_access_control valueoopsnoneautoforceuser_access_controlinstall_scriptmetadatanametarget_versiontarget_optimizetarget_compilebuild_infoinfotitleSetup program invalid or damagedThis program is normally started by windowsRemoveCould not open archive0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-A1b62S-+ldEw}ZVǖAOIъ OM~-QJ#SpxAaU׮.7׵Y-6]]wll?AԞZ͢$ Faw$eڪ]]FD(koipvk19Z* ,  m86F߲]qTp0ek*1u4yީ%8S1bSWĔՖk1**ykʬHpo].*F6fcTT"eM©g0&):{ϼkZ> 8$,52F*sw1pHkQ6Fzw]cN̵J #pAF]#l8?1(BOgT~yUbL8^#ܖTZ1ObbSyOIV~P-{b-R4٠~^eGnHl/Su6: #jT$+e?yHf'*b#ٽЧ ?&~?$pi;FBzw[keZ~7 Sv8H 3?r$7jnԄYFܨ |OQ;օ U d S - =G\ p&Gw)` /a߫i5&LsZ<#0zMzFM8,9; :R:(q-v,.7/pXqYs3r%w+OQvrtEux܉~OK }!b|tyBxʠz{.lD~m8onlk[wjR1h58ib?mcf+aQ`צedd"fig HINSKyuJcO NZLݘMFGN@E$DD2AsX@*IBCPhTg3U>uW ַVS:R|P~Q9ZS [fYX4])\ZEo^m/_5qϱ٥s\ۼqދ!K7 kfֶԁ-b3Πjp]$^'~*I@VW<âM˟ŏ{ tDCm-@wm.B+(铜>Td"ŀǼϭ~8y$owJ1}05_K^ iϏ은BI#ƈdX܁T̓cQ: rՆ⩗ fn|xK)o%ƭ/3vUuA?)C:|sĵ@͂ Ͳ;bIUeh"׻_HS1޼^Z4eg Wb27_k%8ם(ŊO}do׸Jj3wVcXWP0qB{߭gCru&op-?'Bs ưGz>2[Ȏg; i8P/ _Y=чe:ZO?(3wwXR @hQ+ğH*0"ZOWoI}@mNП5+#*'G| AH=XX?#1jvʬ`p^Y<L~i/{kHwâ hs)aLoD~Pf7VM'(@ﰤ ہg9x+n&;f?/X)T`D1 ߨMߒ.FgTp'Hq/L0UEc?kǃh6ry7]P\@TN%s7@'>$!AxUʰ\3;Y^U~PGl!;b F2ȂpԞ(Q_V:1X: n3 m:@/)IJNv"2x+ٗ Kx.HҥfAj^y9*O]#kM`~b_R 7zFh!1߈Vc0a"j6nS Nr)Υ{t*F8#vufz`rs"WG9^EMvc΍&DAdQy/4Aڱ&S֚E biLQ<6'5P..T&q]w4.6IE? v\[YI>U!lDa>Ԫ΋ϩ7~8A]&nv|oY yKiw\¹9~$ 66nQfq>,o,IӔ 渱{I .H>C-Yn馑gQz tafw0a, Qmpjc5dۈ2yܸو L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c ;n Li^`Agqr<KG k5Blۻ֬@2lE\u ϫ=Y&0Q:Qa!V#Ϻ(_ ٲ $/o|XhLaf-=vAq *q3xɢ4 j m=-dlc\kkQlabe0bNl{WeP|b-I|LeMaX:QΣtԻ0JߥA=ؕפmCij4ngF`D-s3 L_ |Pq<'A  Wh% of a^)ɘИ"רY=. \;l  tҚG9w&sc d; mj>zjZ '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K +گ L6JAz``ègU1nFiyaf%oҠRh6 w G"U&/ź; (+Z\j1,ٞ[ޮd°c&ujm 6?rgWJz{+ 8Ҏվ | !Bhݳڃn&[owGwZjpf; \ebiaklE x NT9§g&a`IiGM>nwۮjJZ@ f7;𩼮S޻G0齽ʺŠS0$6TW)#gfz.aJ]h*o+ 7 Z-1A26b+-Sdl}wEVZOAي»IˬO ~M-JQS#xpaA.U7Y-۩6˚w]]llA?Z$㧲F waރ$Ųe]]DFok(vpi91k *Z  ,8mF6]pTqke0*1¶u4%y<8syjHA}X*ݹ1SbSW§ٖծ1k**kypH]oF*.f6TTcMe"¤0g)&Ůޟ:{kZ >8,$5*F21wsHpQkzF6c]wN̵ׄJ# pȄA#]F8l1?(gOB~TUyLbˁ8#^TO1ZbbySIOP~V{-b-4R^~Ge­lHnuS/:6# $Tj?e+y䏼Hf*'˼Ѝb# &??~p$iBF;[wzek~ZS 7H8v ?3$rj7nFY |OQ; U dؓS - \G=&pGw`)/ ai5&sL <:R=Pe6^X7}o5641W0ճ2k3$k%'1&-[#bML"'{ "!$*x(+)`F(> q-q,v.Ț/7pqXsYr3w%vQO+tru՛E~xKO} |b!ytxBz{l.m~Do8nkljw[h1Ri85bcm?a+f`Qeddf"giH IKSNJuyOcN LZMݥFĚGE@ND$A2D@XsBI*CThPU3gWu>V SR:P|Q~Z9[ SYfX]4\)^oEZ_/m5qs<\kg2z &J8 좞V`a/6i\lU,zB\uHƒ=&FW A+Ox]`غ7W>9q߳!7Kk ֩fض-bѠ3pj$]^Ĝ'*~@IWVÕ<ӂMʏş{ Dt͆mC-@mw+B.(>dT"ş~Ϝ8yo$w1J}50K_ ^ϋiBۉI#dXфTQc:r Р fΫnx|)Ko%3/uUv?A)ġ:C|sд@͉ ;IbeU"hH_S1ފZ^ھ4ge ȋbW72%k_ܝ8Ŵ(}OodJֿjw3XcVPW0Bq{gǧurCo&p-?О'sB zGɠ2>[ ;g/P8i_ Y=嗇e:ϏOZw3(?RXw@ Qh+HZ"0*WOIo@}m5N#+'*GA |􏒨HX=#?X1vjʨ`^pYL'!$UxAׯ3\Y;U^GP~b;!lڇF 2p(ԐQV_:X1: 3n :m@I)/NJ2"v+x xKH.jAf^O*9y]#Mk~`bю_޶ Rz7hFм!10cV"ajحn6 SrN){t*8Fv#fu`zrϮsɛW"G9E^vMcD&dA/yQA4S&ֿ EbLil!>aDƋΪ~7A8n&]|vYoᡱ Kyi׫w¡\~9$66 Qnf>q,o,ӹI 散 I{.C>HnY-Qg̰t zfainvalid literal/length codeinvalid distance codeinvalid distance too far back`Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O `Psp0  ` @ X ;x8 h( H T+t4  d$ D \ S|< l,  L R#r2  b" B Z Cz: j*  J V@3v6 f& F  ^ c~> n. N `Qq1  a! A Y ;y9 i)  I U+u5  e% E ] S}= m-  M S#s3  c# C [ C{; k+  K W@3w7 g' G  _ c? o/ O A@!  @a`10  @     incorrect length checkincorrect data checkinvalid distances setinvalid literal/lengths setinvalid code -- missing end-of-blockinvalid bit length repeatinvalid code lengths settoo many length or distance symbolsinvalid stored block lengthsinvalid block typeheader crc mismatchunknown header flags setincorrect header checkinvalid window sizeunknown compression method inflate 1.2.5 Copyright 1995-2010 Mark Adler  #+3;CScsI !1Aa  0@`@@incompatible versionbuffer errorinsufficient memorydata errorstream errorfile errorstream endneed dictionaryqBtqB5BhqBXqBLqB8qB(qBqB5BfFK I*TK ITTK IO :i+00SBi+00@_dP/N !:i+00'":i+00 E%6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF΋!  Hx5i+.b`ODV A H FM^2mFT d_N" (2W]/4*&{-zeG'{-ph}OUBl OU3(9O> G e+.bchOU4^ ;ݧB}/NKfNr@"=3H$Oڠ'my4[ J1B&M[Or G:ᠷqEJ ǬMWs5i+.bs5i+.bs5i+.bw~s5i+.b%e{HqC,40L]0RO$[Dt.+*U6F:(Y;a-kQG^)|I)sO>+dWnO@;>V;>V Wt חb@J7<}iFϦODa'wj5Ob0wDObAGQ`{FL!mv`[c'wj5Obd'wj5Ob6J[CAVgqe'wj5Ob5i!Lz)zR88`[|^1/`[@L\J7@呰 חbu`ެ@`ެ.PRO—-T'tE`ެA`tpZdl?<W4plTI?rPB,ɨ=O${aPo0p,oiyŜ?Oɝa4Oص,OꙠς`RWpO6OyѦjc(=O0%G`묡51Mlg~6JNfsv]=D%Ocg3K@~Oq!2)wKL+2V4K@~OqT'B6Q:.7V`ƆEz5K@~OqiI~+.ͩ pO]_eOkm'WFAOлP0 P0 P0 M]`gI6FOEг]K $^5N$̈&HS3M17i;'$9Y:Oh7%9Y:Oh7&9Y:Oh7'9Y:Oh7ի|I˃(9Y:Oh7!FsGF{H@FS2IEt$#CȫR e.{ JOe/P($IZ^9$\E9 O奄`OO\;x8WFTpj zO1I( @wiKw^ևA)!\_[C+dWnO4DLe+.bSmb`ߌ #Or'>O.jxO^QmOd4'>Or3߷;`[MO KLb`wG:J'i>VMYFDAt;&OF} Ҩ\I;%S| *E yЎf|txM NI{@ >KJ\FЗ4mc-NvEc7VfCNItwׄ8A!ӱJ'8EK}4@ VqC(DW@XzvF@S>LNdL֬+ o.Eцݷ"JL :̿,LB)隇A }jL^6CTw]+.DJQS[bHNAFPCU .4zl'K@-tК#FlHiawhM0Y3S!AbostA^?UX2NfHyu 5ꥂG)]/qNnN9jI=W.I|Kg 4cH~%]bM I]7BWGCQl2$HܨEye64ۅ>eL:er='oOU{p OsCů$53QB`ϝ]v+qAO;ل.CZ0YcwN]ND.Q1RWHΨ}'CBg (#l^"`G3qs03NvFZ9\;û@Z|KJ$M>MEQ wmjKDWw? ec E kjO}c^NIe2mG)f\"gJ]lV`W0\"F-V pNr-O&oO}N8úGˢ)qKmHB" C[E|tKpȞ&Aõ*iG2 HNOiNㄫ9O'HKlqto%yL%4FxWObDcq# (O\iN`|\1IkLICN_3haO1FI&I}!<OGFVXia;B8n29֔hJuAtXJQ xd_w~8ƏWU]O Ɋ36(A#)V)F#Ϋ>%'GoGG+}.аvLX] p`OK #7 EC)t0ō*ƾ{,D Jև+DW^ Oor9tRNNgɆ>!OL'`g+$%|QOz)(B _@^A% xSDMt Nn 8Åm]rLwx,4Ku@ +׉#G`` WG 35A AlG ؂تI`FtQ<[MEĀd_NM&uf4L3lEZIC~"@0(9A8L"k1%B T #=E\\GNˇbR FHspSi)!@'QL.JiFFFFFF F F!FFFF&FF F FFk!Pi)?F0:s *Dw= F F F F F FFFFFPF%FQFFFF`k;Yi+-z1OY ȿ4<OV% X$5I?#3:O4j;Yi+-zj;Yi+-zi;Yi+-zv nr=F>F@FDF[Fʙ^AiXשFh Mm8gh z0Gd<O8m xO4yO"FFFMm8gh 0F1F2F3F%F)F*F0:s*Dw=IF y.Y+F&FEFGFHF:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/O:/ۆ/Oǝv\Wސy(_FFFFFFU 8r+C+n44FâRX0eu{ڮP9Vu{0ne0E Kvne yOܦϫ|x O jIOQnO09$-1.E^*onePone |~|?ne? PE^#1$-?W2$-?W2$-pw~?neg@ne˳j@ne˳j@ne?W2$-~{S^BEy|KDphKΔӳOհrIOC'zO{TxhO{lhO6ǀ_`\`OOrOh7y) Oh7BTyI6 E&jnLFB}sg'Dx+h\t<6M>?i]?9A!8ҏFs%E~2]r?jdN&6u^gO!B> 9}Nr*GݓkFN]ͷghhϓgAc*^Z%Ȕ2AeqKW';?B@ J$SQ`Ɔ(œO>1s-O(hHjxOi QD(ߥl+ rˆLmCBUa{Ӱ~C.`1 y/DĊY F;aAdƼ403bpc(Jg Дէ{E] E)ПS-oEH?syYz(y K@AXGA'qQU AJ s Y!WOZ{*lg(M2(TfC'>|a.  O;O.K[K8H]҇26 -&{-r: %wCjW'tVamy!@iaWBVm`ɠI-`:Bn5OC(K鞟^ﯘ=ѕK0:ښL%2J4{[kYs=BMQ!B\[/B{NsASÖ.̆I#t9JDf?kјH"tŻ-Gs?zZAe!`[ǽ6NXX$  KiiőԞ(LqmjK H(.~,-Y@o3\.Q Cpg{LKI s<_z\ LKo(t;sM|@)^vJYӞ~+IzÊChsxDpWJ?,CP0DOAoZ\q"tDk׾ TLrTIkE a`NNe76_I|kHrYM>s: .jxOˡd:aDX7iii9P5}+EutX(T6QB~ۜC]_#ͼ_Ld=xr|խhG2`?uIp4Bf6חKt3OtaG'"v0 SNwL1"(iv@ YGح+ObC4`[ԄLr?RJ{,AsEOWL"O7v8yOhKKt&1Zs~:6 B}Ftr⋪GMv2̤ pDʹfD.b[GvtH; zr\GڙYkH?FA&OA;,Ui6 IJ"x9J4ܵ;EfDװqmrE.1!YuY&HxHϣ'GVBeUNOخ|)IE@0lyדسDg,ݠeL3"5/QqCAwSk5 X;-3B{_41lxpOh6ǾƱLb VBPoz5zD #D@Fgm[M/BT|\?@zpDF[0 49Z I}AaB}KX䌠%D|DZ#`ڽWvGE>ςZ#@k{X8&oI Qd5CvSdn0@DH&'E4VwҁnB*O&-bfMlV!j hFXapf_:qJ?򥸿2cpF^W5}3ƔHjiOY<0G== 6eFpqFwHҶe_K#q}kdO-p;z5Og5е.Í}DwMm3sG%`4n.8E40PpZdFK6eJ7`, :i+00Fh3MnMܙS{5)xKt O3CKsw`$D&l;0MHֿRUBu(dT&arrCuƋ.|uU:WPHw[ێ Z܊M`* !sG3^F0MJSkyZ 8y M3,/KqI\M;TQ'CHCh4-6C$/`zLbeLWwR"!5C34a@Y?JTwZ8KMn錕Ra/pam/pmCorExitProcessmscoree.dllB0BTZSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunKERNEL32.DLLFlsFreeFlsSetValueFlsGetValueFlsAllocLC_TIMELC_NUMERICLC_MONETARYLC_CTYPELC_COLLATELC_ALLlB@`BdBATBdBtoAHBdB0A?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_.,._;=C=;runtime error TLOSS error SING error DOMAIN error R6033 - Attempt to use MSIL code from this assembly during native code initialization This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. R6032 - not enough space for locale information R6031 - Attempt to initialize the CRT more than once. This indicates a bug in your application. R6030 - CRT not initialized R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data R6010 - abort() has been called R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point support not loaded B(B ЩB B0BШBB0BBpBBB@BB8B ФB!BxByBzB|B\BMicrosoft Visual C++ Runtime Library ...<program name unknown>Runtime Error! Program: (null)(null)EEE50P( 8PX700WP `h````xpxxxxccsUTF-8UTF-16LEUNICODESystemFunction036ADVAPI32.DLL  ((((( H h(((( H H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~united-statesunited-kingdomtrinidad & tobagosouth-koreasouth-africasouth koreasouth africaslovakpuerto-ricopr-chinapr chinanznew-zealandhong-konghollandgreat britainenglandczechchinabritainamericausausukswissswedish-finlandspanish-venezuelaspanish-uruguayspanish-puerto ricospanish-peruspanish-paraguayspanish-panamaspanish-nicaraguaspanish-modernspanish-mexicanspanish-hondurasspanish-guatemalaspanish-el salvadorspanish-ecuadorspanish-dominican republicspanish-costa ricaspanish-colombiaspanish-chilespanish-boliviaspanish-argentinaportuguese-braziliannorwegian-nynorsknorwegian-bokmalnorwegianitalian-swissirish-englishgerman-swissgerman-luxembourggerman-lichtensteingerman-austrianfrench-swissfrench-luxembourgfrench-canadianfrench-belgianenglish-usaenglish-usenglish-ukenglish-trinidad y tobagoenglish-south africaenglish-nzenglish-jamaicaenglish-ireenglish-caribbeanenglish-canenglish-belizeenglish-ausenglish-americandutch-belgianchinese-traditionalchinese-singaporechinese-simplifiedchinese-hongkongchinesechichhcanadianbelgianaustralianamerican-englishamerican englishamericanBENUBENUBENUBENABNLBtBENCpBZHHlBZHIdBCHSPBZHHJdp|,>L`n~"6F\v "0@4&xhXJ<* zn^L0 PropertySheetACreatePropertySheetPageACOMCTL32.dllsSetLastError|CreateDirectoryAGetFileAttributesAWMapViewOfFileCreateFileMappingARCloseHandlejSetFileTimeDosDateTimeToFileTimeGetLastErrorCreateFileAUnmapViewOfFileMlstrlenAgMultiByteToWideCharEGetProcAddress<LoadLibraryADeleteFileAReadFilefSetFilePointerGetFileSizebFreeLibrarySetStdHandledGetStdHandleHLocalFree]FormatMessageAGetTempFileNameAGetTempPathAGetModuleHandleAGetVersionExAResumeThread}SetPriorityClassGetCurrentProcessGetCurrentThreadSetThreadPriorityCreateProcessAGetModuleFileNameARemoveDirectoryA;GetPrivateProfileIntAAGetPrivateProfileStringAGetModuleFileNameWKERNEL32.dllMessageBoxA,GetFocus2wsprintfASetDlgItemTextAwSendMessageAeReleaseDC!GetDCDispatchMessageATranslateMessage2PeekMessageAEndPaint~GetSystemMetricsBeginPaintDefWindowProcAUpdateWindowShowWindowmCreateWindowExAKRegisterClassALoadCursorAMoveWindowGetWindowRect5PostMessageAdGetParentrSendDlgItemMessageA'GetDlgItemSetCursorUSER32.dll6CreateDIBitmapDeleteObjectSetTextColorTextOutASetBkModewSelectObject<CreateFontATCreateSolidBrushGDI32.dlllRegQueryValueA0RegCloseKeymRegQueryValueExANRegEnumKeyExA`RegOpenKeyExA}RegSetValueExA8RegCreateKeyExA=RegDeleteKeyAGRegDeleteValueAADVAPI32.dllShellExecuteASHELL32.dlllCoUninitializeCoCreateInstance>CoInitializeole32.dllyGetSystemTimeAsFileTimeHeapFreeHeapAlloc%FileTimeToSystemTime$FileTimeToLocalFileTimeGetFileInformationByHandlePeekNamedPipeGetFileTypeEnterCriticalSection9LeaveCriticalSectionGetTimeFormatAGetDateFormatAHeapReAllocGetModuleHandleWExitProcessDecodePointerGetCommandLineAHeapSetInformationcGetStartupInfoWIsProcessorFeaturePresentTerminateProcessUnhandledExceptionFilterSetUnhandledExceptionFilterIsDebuggerPresentEncodePointerWideCharToMultiByteGetTimeZoneInformationrGetCPInfoInterlockedIncrementInterlockedDecrementhGetACP7GetOEMCP IsValidCodePageTlsAllocTlsGetValueTlsSetValueTlsFreeGetCurrentThreadIdHeapCreateHeapDestroy%WriteFileWSetEnvironmentVariableWVSetEnvironmentVariableASleepInitializeCriticalSectionAndSpinCountDeleteCriticalSection FatalAppExitAoSetHandleCountGetConsoleCPGetConsoleModeRtlUnwind-SetConsoleCtrlHandlerInterlockedExchange?LoadLibraryWGetLocaleInfoWaFreeEnvironmentStringsWGetEnvironmentStringsWQueryPerformanceCounterGetTickCountGetCurrentProcessId-LCMapStringWiGetStringTypeWGetUserDefaultLCIDGetLocaleInfoA EnumSystemLocalesA IsValidLocaleWFlushFileBuffers$WriteConsoleWHeapSizedCompareStringWCreateFileWSSetEndOfFileJGetProcessHeap5B5B 5B5B5B5B4B4B4B5B5B4B 5B4B5B5B4B4B4B5BSoftware\Microsoft\Windows\CurrentVersion\Uninstall4B 4B4B|4Bd4BL4B<4B$4B4B4B3B@3B@3B@3BC@3BC@3BA@Software\Microsoft\Windows\CurrentVersion\UninstallN@D C CpPSTPDT@BB        ! 5A CPR S WY l m pr   )     abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@B`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~CBBBܠBؠBԠBРBȠBBBBBBBBBB|BxBtBpBlBhBdB`B\BTBHB@B8BxB0B(B BB BBBBBB̟BB BBBBBBBxBhBXBDB0B B BBBBBBܞBԞB̞BĞBBBBBB|BpBBdBXBHB4B$BBBBB؝BBBdBdBdBdBdBBB@BBhBBB@BB `BPB B B B B B B B B B B;Zx0Nm:Yw/Ml..BCCCCCCCCCBCCCCCCCBBB. (@pnklmn ( 8 H X hx1 ; =$?ZABZ(n, BBB999111)))cR[RABZRYRZRAB[R[RAB[RAAB[ && &&&@JQ1AA1ZQ1111ZQ1AAZ@JQ1AAZQ1AAJ eu eu @ABZ@J@G@F@F@G@AABX@J@AABX@J@J@AA1X@J@G@HRX@G@AAG@ZRX@AAG@JQJed%ed%ed@AA1ZQ1AA1X@J@HQ1AA1X@1A1ZQ1AA1ZQ1A1J  & & RAABZRABZR[R[RABZRYRBZRABZRBW@J@J &R[R[R[R[R[RABZR[R[R[ & & & & & & &@J@J@J@J@HQ1AA1X@J@J@J@J@J@J@G@J@G@JQJ@ABZQ11Z@J@AAG@J@G@GQ1J@AA1ZQ1YQ1[@J@AAG@J@G@1W@J&@I@G@J@J@J@J@G@J@G@Z@J@AA1X@J@HRABX@J@HQ1AA1X@J@J  &  %& & & &RAABZR[RZRAAABZR[R[RABZR[R[@H{SetupMS Sans SerifP} This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.P}PhnP}@H{SetupMS Sans SerifP} Select python installation to use:PP}7Python Directory:P}jPhnPP}BInstallation Directory:@B2Find other ...@H{SetupMS Sans SerifP} Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.P}msctls_progress32Progress1P}Installation progress:PhnPA@H{SetupMS Sans SerifP} Click the Finish button to exit the Setup wizard.PhnP}( PAPADDINGXXPADDINGPKr ]^ Ɣ %__pycache__/core.cpython-37.opt-2.pycnu[B YI~d"@sddlZddlZddlmZddlTddlmZddlmZddl m Z ddl m Z dZ d d Zdadad Zd Zd dZdddZdS)N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr3/opt/alt/python37/lib64/python3.7/distutils/core.py gen_usage s r) distclassr script_argsoptionsnameversionZauthorZ author_emailZ maintainerZmaintainer_emailZurllicense descriptionZlong_descriptionkeywordsZ platformsZ classifiersZ download_urlZrequiresZprovidesZ obsoletes)rZsourcesZ include_dirsZ define_macrosZ undef_macrosZ library_dirsZ librariesZruntime_library_dirsZ extra_objectsZextra_compile_argsZextra_link_argsZ swig_optsZexport_symbolsZdependslanguagec Ks|d}|r|d=nt}d|kr8tjtjd|d<d|krRtjdd|d<y||a}WnLtk r}z.d|krt d|nt d|d|fWdd}~XYnXt d kr|S| t rt d |t d kr|Sy |}Wn:tk r*}zt t|jd |Wdd}~XYnXt rBt d |t dkrP|S|ry |Wntk rt dYntk r}z.t rtjd|fnt d|fWdd}~XYnBttfk r }zt rnt dt|Wdd}~XYnX|S)Nrr rrrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`% " (   "r.runc Cs|dkrtd|f|atj}d|i}yZzH|tjd<|dk rP|tjdd<t|d}t||WdQRXWd|t_daXWntk rYnXt dkrt d|t S)N)rrrr/z"invalid value for 'stop_after': %r__file__rrrbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?) ValueErrorr#rr copyopenexecreadr"r! RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups(    r:)Nr/)rrZdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr#r!Zsetup_keywordsZextension_keywordsr.r:rrrr s      qPKr ]I;}*__pycache__/file_util.cpython-37.opt-2.pycnu[B YI~d@sVddlZddlmZddlmZddddZdd d Zdd d ZdddZddZ dS)N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)Nhardsym@c Csd}d}zvyt|d}Wn4tk rN}ztd||jfWdd}~XYnXtj|ryt|Wn4tk r}ztd||jfWdd}~XYnXyt|d}Wn4tk r}ztd||jfWdd}~XYnXxy||}Wn6tk r*}ztd||jfWdd}~XYnX|s4Py| |Wqtk rx}ztd||jfWdd}~XYqXqWWd|r| |r| XdS)Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdstebufr8/opt/alt/python37/lib64/python3.7/distutils/file_util.py_copy_file_contentssF $ """*rcCs ddlm}ddlm} m} m} m} tj |s %srr)Zdistutils.dep_utilrstatrrrr r r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater-verbosedry_runrrrrr diractionstrrr copy_fileCsT!               r7c Csddlm}m}m}m}m}ddl} |dkr:td|||rB|S||sVt d|||rrt j |||}n||rt d||f|||st d||fd} yt ||WnPtk r } z0| j\} } | | jkrd } nt d ||| fWdd} ~ XYnX| rt|||d yt |Wnhtk r} zH| j\} } yt |Wntk rpYnXt d |||| fWdd} ~ XYnX|S) Nr)rr"r#r%r&rzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r2zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr"r#r%r&errnorr+rr r r$renamer argsZEXDEVr7r)rrr2r3rr"r#r%r&r8Zcopy_itrZnummsgrrr move_filesR       " "r<cCs:t|d}z x|D]}||dqWWd|XdS)Nw )r rr)filenamecontentsflinerrr write_files   rC)r)rrrNrr)rr) r Zdistutils.errorsrZ distutilsrr(rr7r<rCrrrrs   3 c =PKr ] O $__pycache__/text_file.cpython-37.pycnu[B  f0@s&dZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@steZdZdZddddddddZdddZd d Zd d Zdd dZdddZ dddZ ddZ ddZ ddZ dS)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.rstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtdx>|jD]0}||krBt||||q$t|||j|q$Wx&|D]}||jkrbtd|qbW|dkr||n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsZoptr8/opt/alt/python37/lib64/python3.7/distutils/text_file.py__init__Ns  zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.r)r rN)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|dS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}||jdt|ttfrD|dt|n|d||t|d|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|||dS)Nzerror: ) ValueErrorr&)rr$r%rrrerrorszTextFile.errorcCs tjd|||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter&)rr$r%rrrwarnsz TextFile.warncCs|jr|jd}|jd=|Sd}x|j}|dkr:d}|jr|r|d}|dkrXnX|dksp||ddkr|ddkrdpd}|d||}|dkrq$n |d d}|jr"|r"|dkr|d |S|j r| }||}t |j t r|j dd|j d<n|j |j dg|_ n:|dkr0dSt |j t rP|j dd|_ n |j d|_ |jrv|jrv|}n"|jr| }n|jr|}|dks|dkr|jrq$|jr|ddkr|dd}q$|d dd kr|dd d}q$|SdS) aURead and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.rN#rr\r)z\#z2continuation line immediately precedes end-of-filez\ )rrreadlinerfindstripreplacer r-r lstriprrr rrrstripr)rr%Z buildup_lineposZeolrrrr2sf           zTextFile.readlinecCs,g}x"|}|dkr|S||qWdS)zWRead and return the list of all logical lines remaining in the current file.N)r2r)rlinesr%rrr readliness zTextFile.readlinescCs|j|dS)zPush 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.N)rr)rr%rrr unreadlineszTextFile.unreadline)NN)N)N)N)__name__ __module__ __qualname____doc__r rrrr&r(r-r2r:r;rrrrr s"9 !  x r)r?r*rrrrrrsPKr ]>44bb-__pycache__/bcppcompiler.cpython-37.opt-1.pycnu[B  fW:@sxdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zdd dZdddZdddZd ddZd!ddZd"ddZd#ddZdS)$ BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCst||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer;/opt/alt/python37/lib64/python3.7/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |jxD| D]:} y| | \}}Wntk rwVYnXtj|}tj| } | tj | |dkrqV|dkry| dd| |gWqVt k r}z t |Wdd}~XYqVXqV||jkrd}n||jkr,d}nd}d| }y,| |jg| | ||g||gWqVt k r}z t |Wdd}~XYqVXqVW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF        (zBCPPCompiler.compilec Cs|||\}}|j||d}|||r~|dg|}|r:y||jg|Wqtk rz}z t|Wdd}~XYqXn td|dS)N)r*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs  zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||dk rNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntj|\}}tj|\}}tj|d}tj|d|}dg}x&|pgD]}|d||fqW|t||fd |ttjj|}|g}g}xF|D]>}tjtj|\}}|d kr||n ||qfWx$|D]}|d tj|qW|d |||d |g|dx<|D]4}|||| }|dkr(||n ||qW|d|d|d |g|d ||| r| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnXn td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|                    zBCPPCompiler.linkc Csv|r"|d}|d|d||f}n |d|f}xB|D]6}x0|D](}tj|||}tj|r>|Sq>Wq4WdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s      zBCPPCompiler.find_library_filercCs|dkr d}g}x|D]}tjtj|\}}||jddgkrTtd||f|rdtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"    zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dk r>| d||rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn2t k r} zt | t | Wdd} ~ XYnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr)NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsJ   B  |  r)r^r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PKr ]I- #__pycache__/dep_util.cpython-37.pycnu[B  f @s6dZddlZddlmZddZddZd d d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCs`tj|s tdtj|tj|s0dSddlm}t||}t||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r 7/opt/alt/python37/lib64/python3.7/distutils/dep_util.pynewer s   rcCslt|t|krtdg}g}xBtt|D]2}t||||r.||||||q.W||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise srerrorcCstj|sdSddlm}t||}xX|D]L}tj|sb|dkrJn|dkrVq0n |dkrbdSt||}||kr0dSq0WdSdS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rr)rrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s     r)r)__doc__rZdistutils.errorsrrrrr r r r s  PKr ][3z!z!*__pycache__/sysconfig.cpython-37.opt-2.pycnu[B  fP@sddlZddlZddlZddlZddlmZejejZ ejej Z ejej Z ejejZdejkrejejdZn&ejrejejejZneZddZeeddZejdkrd d ZeeZeeZd d ZeZd ZyesejZWnek rYnXddZ d+ddZ!d,ddZ"ddZ#ddZ$ddZ%d-ddZ&e'dZ(e'dZ)e'dZ*d.dd Z+d!d"Z,da-d#d$Z.d%d&Z/d'd(Z0d)d*Z1dS)/N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEcCs.x(dD] }tjtj|d|rdSqWdS)N)z Setup.distz Setup.localZModulesTF)ospathisfilejoin)dfnr 8/opt/alt/python37/lib64/python3.7/distutils/sysconfig.py_is_python_source_dir,s r _homentcCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)rrnormcase startswithrPREFIX)rr r r _fix_pcbuild5srcCstr ttSttS)N) _sys_homer project_baser r r r _python_build=srcCsdtjddS)Nz%d.%d)sys version_infor r r r get_python_versionQsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjt dd}tj |Sdt t }tj|d|Stjdkrtrtj|dtjj tj|dStj|dStdtjdS) NposixsrcdirZIncludepythonZincluderPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXrname python_buildrrrrget_config_varnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr r r get_python_incYs$     r)cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tj||dt}|r`|Stj|dSn sX      ( +I      mJPKr ]DbBB-__pycache__/bcppcompiler.cpython-37.opt-2.pycnu[B YI~dW:@stddlZddlmZmZmZmZmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZGddde ZdS) N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZiZdgZdddgZeeZdZdZ dZ d Z Z d Z dd d ZdddZdddZdddZd ddZd!ddZd"ddZdS)# BCPPCompilerZbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCst||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer;/opt/alt/python37/lib64/python3.7/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |jxD| D]:} y| | \}}Wntk rwVYnXtj|}tj| } | tj | |dkrqV|dkry| dd| |gWqVt k r}z t |Wdd}~XYqVXqV||jkrd}n||jkr,d}nd}d| }y,| |jg| | ||g||gWqVt k r}z t |Wdd}~XYqVXqVW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF        (zBCPPCompiler.compilec Cs|||\}}|j||d}|||r~|dg|}|r:y||jg|Wqtk rz}z t|Wdd}~XYqXn td|dS)N)r*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs  zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||dk rNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntj|\}}tj|\}}tj|d}tj|d|}dg}x&|pgD]}|d||fqW|t||fd |ttjj|}|g}g}xF|D]>}tjtj|\}}|d kr||n ||qfWx$|D]}|d tj|qW|d |||d |g|dx<|D]4}|||| }|dkr(||n ||qW|d|d|d |g|d ||| r| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnXn td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|                    zBCPPCompiler.linkc Csv|r"|d}|d|d||f}n |d|f}xB|D]6}x0|D](}tj|||}tj|r>|Sq>Wq4WdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s      zBCPPCompiler.find_library_filercCs|dkr d}g}x|D]}tjtj|\}}||jddgkrTtd||f|rdtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"    zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dk r>| d||rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn2t k r} zt | t | Wdd} ~ XYnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr)NNNNN)__name__ __module__ __qualname__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsH   B  |  r)r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PKr ]{:__pycache__/dist.cpython-37.pycnu[B  f@sdZddlZddlZddlZddlmZy ddlZWnek rLdZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZed Zd d ZGd d d ZGdddZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$cCsLt|tr nd?Zd@dAZdBdCZdddDdEZdedFdGZdfdIdJZejfdKdLZdMdNZdOdPZ dQdRZ!dSdTZ"dUdVZ#dWdXZ$dYdZZ%d[d\Z&d]d^Z'd_d`Z(d!S)g DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. )verbosevzrun verbosely (default))quietqz!run quietly (turns verbosity off))zdry-runnzdon't actually do anything)helphzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package )z help-commandsNzlist all available commands)nameNzprint package name)versionVzprint package version)fullnameNzprint -)authorNzprint the author's name)z author-emailNz print the author's email address) maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)contactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)urlNzprint the URL for this package)licenseNz print the license of the package)licenceNzalias for --license) descriptionNzprint the package description)zlong-descriptionNz"print the long package description) platformsNzprint the list of platforms) classifiersNzprint the list of classifiers)keywordsNzprint the list of keywords)providesNz+print the list of packages/modules provided)requiresNz+print the list of packages/modules required) obsoletesNz0print the list of packages/modules made obsoletecCsg|]}t|dqS)r)r).0xrrr szDistribution.rrNcCsld|_d|_d|_x|jD]}t||dqWt|_x,|jjD] }d|}t||t|j|q@Wi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|d}|dk rH|d=xD|D]8\}}| |}x"|D]\} } d| f|| <q(Wq Wd|kr|d|d <|d=d } t!dk r~t!"| nt#j$%| d x|D]\} } t&|jd | rt|jd | | nNt&|j| rt|j| | n0t&|| rt|| | nd t'| } t!"| qWd|_(|j dk r`x0|j D]&} | )dsHP| dkr6d|_(Pq6W|*dS)a0Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. rrget_Noptionsz setup scriptr)r(z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+rdry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfZattrsattrbasenameZ method_namer6commandZ cmd_optionsopt_dictoptvalrkeyargrrr__init__s~                 zDistribution.__init__cCs&|j|}|dkr"i}|j|<|S)zGet the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. N)rDrN)r[r^dictrrrrP&s zDistribution.get_option_dictr5c Csddlm}|dkr"t|j}|dk r@||||d}|sV||ddSxt|D]l}|j|}|dkr||d|q\||d|||}x$|dD]}||d|qWq\WdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:r7)ZpprintrfsortedrDkeysannouncerNsplit) r[headercommandsindentrfZcmd_namer_outlinerrrdump_option_dicts1s&    zDistribution.dump_option_dictscCsg}ttjtjdj}tj|d}tj|rB| |tj dkrRd}nd}|j rtjtj d|}tj|r| |d}tj|r| |t r|dd ||S) aFind as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerSmodules__file__joinisfileappendr rX expanduserr ri)r[filesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerrrfind_config_filesMs&       zDistribution.find_config_filesc Csddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|}trb|d|}x|D]}tr|d|| |xf| D]Z}| |}| |}x@|D]8} | dkr| |kr| || } | dd} || f|| <qWqW|qnWd|jkrx|jdD]\} \} } |j | } yF| rRt|| t|  n(| dkrnt|| t| n t|| | Wn,tk r} z t| Wdd} ~ XYnXqWdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %srr8_global)rr9)Z configparserrrSr base_prefix frozensetr~r rireadZsectionsr6rPrNreplacerdrDrO negative_optr;r ValueErrorDistutilsOptionError)r[ filenamesrZignore_optionsparserfilenameZsectionr6r_r`rasrcaliasrrrrparse_config_files}sJ               zDistribution.parse_config_filescCs|}g|_t||j}||j|ddi|j|j|d}| }t |j | |rhdSx |r|||}|dkrjdSqjW|jr|j|t|jdk|jddS|jstddS) aParse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). r)r()argsobjectNr)display_optionsrlzno commands suppliedT)_get_toplevel_optionsrlrrset_negative_aliasesrZ set_aliasesgetoptrCZget_option_orderr Z set_verbosityrhandle_display_options_parse_command_optsr _show_helplenDistutilsArgError)r[Ztoplevel_optionsrr option_orderrrrparse_command_lines,       zDistribution.parse_command_linecCs |jdgS)zReturn the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. )zcommand-packages=Nz0list of packages that provide distutils commands)global_options)r[rrrrsz"Distribution._get_toplevel_optionsc Csddlm}|d}t|s*td||j|y||}Wn*tk rn}z t |Wdd}~XYnXt ||st d|t |drt |jtsd}t |||j}t |dr|}||jt |d rt |jtrt|j}ng}||j|j|||||d d\}} t | d rV| jrV|j|d|gd dSt |d rt |jtrd} xP|jD]F\} } } }t | || r|d } t|r|nt d || fq|W| rdS||}x&t| D]\}}d|f||<qW|S)aParse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. r)Commandzinvalid command name '%s'Nz&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrr)rrlzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrlr{get_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrVr rrrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablerPvarsrO)r[rrrr^Z cmd_classrrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncr_r rrrrrsb                   z Distribution._parse_command_optscCsTxNdD]F}t|j|}|dkr qt|trdd|dD}t|j||qWdS)zSet final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. )r-r+NcSsg|] }|qSr)strip)r1Zelmrrrr3jsz1Distribution.finalize_options..,)r?r=r r rjr;)r[r\rrrrrZ`s   zDistribution.finalize_optionsrc Cs ddlm}ddlm}|rR|r*|}n|j}||||jdt d|rt||j |dt dx|j D]z}t |t rt||r|} n ||} t| drt | jtr|| jt| jn || j|d| jt dq|Wt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r) gen_usage)rz Global options:r5zKInformation display options (just display information, ignore any commands)rzOptions for '%s' command:N)distutils.corerrrrrrZ print_help common_usageprintrrlr rrrrVrrrrrrB) r[rrrrlrrr6r^klassrrrrms4           zDistribution._show_helpc Csddlm}|jr4|tdt||jdSd}i}x|jD]}d||d<qDWxt|D]l\}}|r^||r^t|}t |j d|}|dkrtd |n |dkrtd |nt|d}q^W|S) zIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. r)rr5rr4)r-r+r)r,r.r/r0r7) rrZ help_commandsprint_commandsrrBrrNrr?r=ry) r[rrZany_display_optionsZis_display_optionoptionr`rarrrrrs*  z#Distribution.handle_display_optionsc Csnt|dx\|D]T}|j|}|s0||}y |j}Wntk rRd}YnXtd|||fqWdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :z(no description available)z %-*s %sN)rr@rNrr*AttributeError)r[rlrk max_lengthcmdrr*rrrprint_command_lists      zDistribution.print_command_listcCsddl}|jj}i}x|D] }d||<qWg}x&|jD]}||s:||q:Wd}x$||D]}t||krdt|}qdW||d||rt ||d|dS)anPrint out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrzStandard commandszExtra commands) distutils.commandr^__all__r@rhrNr{rrr)r[rq std_commandsis_stdrextra_commandsrrrrrs*     zDistribution.print_commandsc Csddl}|jj}i}x|D] }d||<qWg}x&|jD]}||s:||q:Wg}x\||D]P}|j|}|s||}y |j}Wnt k rd}YnX|||fqdW|S)a>Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrz(no description available)) rr^rr@rhrNr{rr*r) r[rqrrrrrvrr*rrrget_command_lists(        zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|dD}d|krD|dd||_|S)z9Return a list of packages from which commands are loaded.Nr5cSsg|]}|dkr|qS)r5)r)r1Zpkgrrrr3!sz5Distribution.get_command_packages..rzdistutils.commandr)rAr rrjinsert)r[Zpkgsrrrget_command_packagess  z!Distribution.get_command_packagesc Cs|j|}|r|Sx|D]}d||f}|}yt|tj|}Wntk r^wYnXyt||}Wn&tk rt d|||fYnX||j|<|SWt d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) r@rNr __import__rSrw ImportErrorr?rr)r[r^rZpkgnameZ module_nameZ klass_namemodulerrrr's(   zDistribution.get_command_classcCsl|j|}|sh|rhtr&|d|||}||}|j|<d|j|<|j|}|rh||||S)aReturn the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. z.z1error in %s: command '%s' has no such option '%s')get_command_namerPr rirOZboolean_optionsrrr r r;rrVrr) r[rLZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringrrrrrhs>           z!Distribution._set_command_optionsrcCsddlm}t||s&|}||}n|}|js8|S|d|_d|j|<|||r|x| D]}| ||qhW|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. r)r) rrr rrZ finalizedZinitialize_optionsrMrZget_sub_commandsreinitialize_command)r[r^Zreinit_subcommandsrrsubrrrrs     z!Distribution.reinitialize_commandcCst||dS)N)r )r[rlevelrrrriszDistribution.announcecCsx|jD]}||qWdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)rl run_command)r[rrrr run_commandss zDistribution.run_commandscCsD|j|rdStd|||}||d|j|<dS)aDo whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). Nz running %sr)rMrNr inforZensure_finalizedrun)r[r^rrrrrs   zDistribution.run_commandcCst|jp|jpgdkS)Nr)rrErF)r[rrrhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkS)Nr)rIr)r[rrrhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkS)Nr)rGr)r[rrrhas_c_librariesszDistribution.has_c_librariescCs|p|S)N)rr)r[rrr has_modulesszDistribution.has_modulescCs|jot|jdkS)Nr)rHr)r[rrr has_headersszDistribution.has_headerscCs|jot|jdkS)Nr)rJr)r[rrr has_scriptsszDistribution.has_scriptscCs|jot|jdkS)Nr)rKr)r[rrrhas_data_filesszDistribution.has_data_filescCs|o| o| S)N)rrr)r[rrris_pures zDistribution.is_pure)N)NNr5)N)r)N)r))r __module__ __qualname____doc__rrrr:rrdrPrpr~rrrrrZrrrrrrrrrrr INFOrirrrrrrrrrrrrrrr,s|     0 :C [  1(!" &  , ) rc@seZdZdZdZdBddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#ZeZd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#d@dAZ$dS)Cr<z]Dummy class to hold the distribution meta-data: name, version, author, and so forth. )r r!r$ author_emailr%maintainer_emailr'r(r*long_descriptionr-r+r#r&Z contact_emailr, download_urlr.r/r0NcCs|dk r|t|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenr r!r$rr%rr'r(r*rr-r+r,rr.r/r0)r[rurrrrd s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ nd |_ |d|_ |d|_dkr|d d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|S)NUNKNOWNr)r r)rrr _read_field(sz7DistributionMetadata.read_pkg_file.._read_fieldcs|d}|gkrdS|S)N)Zget_all)r values)rrr _read_list.s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionr r!Zsummaryr$Nz author-emailz home-pager(z download-urlr*r-rplatformZ classifierz1.1r/r.r0)rr r!r*r$r%rrr'r(rrrjr-r+r,r/r.r0)r[filerrZmetadata_versionr)rrr$s:                 z"DistributionMetadata.read_pkg_filec Cs2ttj|dddd}||WdQRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwzUTF-8)encodingN)rrtrurywrite_pkg_file)r[Zbase_dirZpkg_inforrrwrite_pkg_infoXs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|d||d||d||d||d| |d| |d | |d | |jr|d |jt |}|d |d |}|r|d|||d|||d|||d|||d|||d|dS)z9Write the PKG-INFO format data to a file object. z1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r.r/r0r,rrUget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionry get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)r[rr!Z long_descr-rrrr_s0  z#DistributionMetadata.write_pkg_filecCs$x|D]}|d||fqWdS)Nz%s: %s )rU)r[rr rrrrrrs z DistributionMetadata._write_listcCs |jpdS)Nr)r )r[rrrrszDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r!)r[rrrrsz DistributionMetadata.get_versioncCsd||fS)Nz%s-%s)rr)r[rrr get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdS)Nr)r$)r[rrr get_authorszDistributionMetadata.get_authorcCs |jpdS)Nr)r)r[rrrget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdS)Nr)r%)r[rrrget_maintainersz#DistributionMetadata.get_maintainercCs |jpdS)Nr)r)r[rrrget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr)r%r$)r[rrrrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr)rr)r[rrrrsz&DistributionMetadata.get_contact_emailcCs |jpdS)Nr)r')r[rrrrszDistributionMetadata.get_urlcCs |jpdS)Nr)r()r[rrrrsz DistributionMetadata.get_licensecCs |jpdS)Nr)r*)r[rrrrsz$DistributionMetadata.get_descriptioncCs |jpdS)Nr)r)r[rrrrsz)DistributionMetadata.get_long_descriptioncCs |jpgS)N)r-)r[rrrrsz!DistributionMetadata.get_keywordscCst|d|_dS)Nr-)rr-)r[rrrr set_keywordssz!DistributionMetadata.set_keywordscCs |jp dgS)Nr)r+)r[rrrrsz"DistributionMetadata.get_platformscCst|d|_dS)Nr+)rr+)r[rrrr set_platformssz"DistributionMetadata.set_platformscCs |jpgS)N)r,)r[rrrrsz$DistributionMetadata.get_classifierscCst|d|_dS)Nr,)rr,)r[rrrrset_classifierssz$DistributionMetadata.set_classifierscCs |jpdS)Nr)r)r[rrrget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgS)N)r/)r[rrrrsz!DistributionMetadata.get_requirescCs0ddl}x|D]}|j|qWt||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterr/)r[rrqrrrr set_requiress z!DistributionMetadata.set_requirescCs |jpgS)N)r.)r[rrrrsz!DistributionMetadata.get_providescCs:dd|D}x |D]}ddl}|j|qW||_dS)NcSsg|] }|qSr)r)r1rrrrr3sz5DistributionMetadata.set_provides..r)rrZsplit_provisionr.)r[rrrqrrr set_providess  z!DistributionMetadata.set_providescCs |jpgS)N)r0)r[rrrrsz"DistributionMetadata.get_obsoletescCs0ddl}x|D]}|j|qWt||_dS)Nr)rrrrr0)r[rrqrrrr set_obsoletess z"DistributionMetadata.set_obsoletes)N)%rrrrr>rdrrrrrrrrrrr rrrrZ get_licencerrrr rr rr r rrrrrrrrrrr<sD 4"r<cCs(g}x|D]}||ddq W|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r{)r6Z new_optionsZ help_tuplerrrrs r)rrSrtreZemailrrQrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrqr Zdistutils.debugr compilerrrr<rrrrrs4      ZcPKr ]0ρρ$__pycache__/ccompiler.cpython-37.pycnu[B  fI@sdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd Zdd dZddddddZddZdddZddZddZdS)zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddZ dddgZ dqdd Zd d Zd d ZddZddZdrddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d.d/Z!dsd0d1Z"d2d3Z#d4d5Z$d6d7Z%d8d9Z&dtd:d;Z'dudd?Z)dvd@dAZ*dBZ+dCZ,dDZ-dwdEdFZ.dxdGdHZ/dydIdJZ0dzdKdLZ1dMdNZ2dOdPZ3dQdRZ4d{dSdTZ5d|dUdVZ6d}dXdYZ7d~dZd[Z8dd\d]Z9dd_d`Z:ddbdcZ;dddeZdjdkZ?dldmZ@ddodpZAdS) CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nczc++Zobjc)z.cz.ccz.cppz.cxxz.mrcCsf||_||_||_d|_g|_g|_g|_g|_g|_g|_ x$|j D]}| ||j |qHWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr8/opt/alt/python37/lib64/python3.7/distutils/ccompiler.py__init__UszCCompiler.__init__cKs@x:|D]2}||jkr(td||jjf||||qWdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dS)N) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}x&|jD]}|d|kr |S|d7}q WdS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCsdx^|D]V}t|trHt|dkrHt|dts:|ddkrHt|dtstd|ddqWdS)zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. )r(r(Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss    z"CCompiler._check_macro_definitionscCs.||}|dk r|j|=|j||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N)r,rappend)rr)r'r*rrr define_macros zCCompiler.define_macrocCs0||}|dk r|j|=|f}|j|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N)r,rr2)rr)r*Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|j|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|j|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|j|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|j|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|j|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs.|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t |t |kst t ||}i} xRt t |D]B} || } || } t j| d} |t j| | | f| | <qW||||| fS)z;Process arguments and decide which source files to compile.Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr()rr$r%r0rlistrr.object_filenamesr/AssertionErrorgen_preprocess_optionsrangeospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr*srcobjextrrr_setup_compile6s:   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrOdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)rr$r%r0rrDrr.)rrrrrrr_fix_compile_argsjs   zCCompiler._fix_compile_argscCs*|j||d}t|t|ks"t|ifS)a+Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. )r)rEr/rF)rrMrrNrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)zTypecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. z,'objects' must be a list or tuple of stringsNz%'output_dir' must be a string or None)r$rDr.r0rr%)rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)a;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. Tnewer)ZmissingN)rr r)rr output_filer\rrr _need_links  zCCompiler._need_linkc Cst|ts|g}d}t|j}x^|D]V}tj|\}}|j|}y |j |}||krb|}|}Wq$t k rxYq$Xq$W|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r$rDr/language_orderrIrJrK language_mapgetindexr) rrMZlangrbsourcebaserSZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrcr]rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc  Csz|||||||\}} }} } || ||} xH| D]@} y| | \}}Wntk r\w2YnX|| ||| || q2W| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )rTrWKeyError_compile)rrMrrrrUrfrgrNrrOrPrVrRrQrSrrrcompiles6  zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrRrQrSrVrgrOrrrrjCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerrU target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrUrfrg build_temprmrrrlinkis9zCCompiler.linkc Cs2|tj||j|dd||||||| | | | dS)Nshared)lib_type)rtr SHARED_LIBRARYlibrary_filename) rrrlrrrrrrrUrfrgrsrmrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|tj||||||||| | | | dS)N)rtr SHARED_OBJECT) rrrqrrrrrrrUrfrgrsrmrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|tj|||||||d||| d| dS)N)rtr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrUrfrgrmrrrlink_executables  zCCompiler.link_executablecCstdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. N)rp)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N)rp)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N)rp)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}t|d} z.x|D]} | d| q`W| d|Wd| Xy|j|g|d } Wntk rd SXy|j| d ||d Wnt t fk rd SXdS) zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNz.cT)textwz#include "%s" z=int main (int argc, char **argv) { %s(); return 0; } )rFza.out)rr) tempfileZmkstemprIfdopenwritecloserkZ CompileErrorr~Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8     zCCompiler.has_functioncCstdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N)rp)rr7rrUrrrfind_library_file$szCCompiler.find_library_filecCs|dkr d}g}x|D]|}tj|\}}tj|d}|tj|d}||jkrhtd||f|rxtj|}|tj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rIrJrK splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namerdrSrrrrEOs    zCCompiler.object_filenamescCs0|dk s t|rtj|}tj|||jS)N)rFrIrJrrshared_lib_extension)rrrCrrrrshared_object_filename`s  z CCompiler.shared_object_filenamecCs4|dk s t|rtj|}tj|||jp.dS)Nr)rFrIrJrr exe_extension)rrrCrrrrr}fs  zCCompiler.executable_filenamestaticc Csl|dk s t|dkrtdt||d}t||d}tj|\}}|||f} |r\d}tj||| S)N)rruZdylibZ xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rFrgetattrrIrJsplitr) rr9rvrCrZfmtrSr5rdfilenamerrrrxls  zCCompiler.library_filenamer(cCst|dS)N)r rU)rmsglevelrrrannounceszCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst||jddS)N)r )rr )rcmdrrrrszCCompiler.spawncCst|||jdS)N)r )rr )rrQdstrrrrszCCompiler.move_filecCst|||jddS)N)r )rr )rr)moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r()Nr()r)Br! __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr`r_rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrTrWrXrYrZr[r^rerhrkrjrnrzrwr|rtryr{r~rrrrrrErr}rxrrrr rrrrrrrr s    $   +  "   B  4    + +      r ))zcygwin.*unix)posixr)ntmsvccCsV|dkrtj}|dkrtj}x4tD],\}}t||dk sJt||dk r"|Sq"WdS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rIr)rplatform_default_compilersrematch)Zosnamerpatterncompilerrrrget_default_compilers r)Z unixccompilerZ UnixCCompilerzstandard UNIX-style compiler)Z _msvccompilerZ MSVCCompilerzMicrosoft Visual C++)cygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Z bcppcompilerZ BCPPCompilerzBorland C++ Compiler)rrcygwinZmingw32ZbcppcCs\ddlm}g}x,tD] }|d|dt|dfqW|||}|ddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXy*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rIr)rrriZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2    rcCsg}x|D]}t|tr2dt|kr0dks>ntd|t|dkr^|d|dq t|dkr |ddkr|d|dq |d|q Wx|D]}|d |qW|S) aGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. r(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srNz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrOZmacror5rrrrG s $    rGc Csg}x|D]}|||q Wx4|D],}||}t|trJ||}q(||q(Wx^|D]V}tj|\}} |r||g| } | r|| q| d|q^|| |q^W|S)acGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). z6no library file corresponding to '%s' found (skipping)) r2rrr$rDrIrJrrrr) rrrrZlib_optsr5ZoptrZlib_dirZlib_nameZlib_filerrrgen_lib_options8s$        r)NN)NNrrr)rrrIrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrGrrrrrs6      --PKr ] O *__pycache__/text_file.cpython-37.opt-1.pycnu[B  f0@s&dZddlZddlZGdddZdS)ztext_file provides the TextFile class, which gives an interface to text files that (optionally) takes care of stripping comments, ignoring blank lines, and joining lines with backslashes.Nc@steZdZdZddddddddZdddZd d Zd d Zdd dZdddZ dddZ ddZ ddZ ddZ dS)TextFilea Provides a file-like object that takes care of all the things you commonly want to do when processing a text file that has some line-by-line syntax: strip comments (as long as "#" is your comment character), skip blank lines, join adjacent lines by escaping the newline (ie. backslash at end of line), strip leading and/or trailing whitespace. All of these are optional and independently controllable. Provides a 'warn()' method so you can generate warning messages that report physical line number, even if the logical line in question spans multiple physical lines. Also provides 'unreadline()' for implementing line-at-a-time lookahead. Constructor is called as: TextFile (filename=None, file=None, **options) It bombs (RuntimeError) if both 'filename' and 'file' are None; 'filename' should be a string, and 'file' a file object (or something that provides 'readline()' and 'close()' methods). It is recommended that you supply at least 'filename', so that TextFile can include it in warning messages. If 'file' is not supplied, TextFile creates its own using 'io.open()'. The options are all boolean, and affect the value returned by 'readline()': strip_comments [default: true] strip from "#" to end-of-line, as well as any whitespace leading up to the "#" -- unless it is escaped by a backslash lstrip_ws [default: false] strip leading whitespace from each line before returning it rstrip_ws [default: true] strip trailing whitespace (including line terminator!) from each line before returning it skip_blanks [default: true} skip lines that are empty *after* stripping comments and whitespace. (If both lstrip_ws and rstrip_ws are false, then some lines may consist of solely whitespace: these will *not* be skipped, even if 'skip_blanks' is true.) join_lines [default: false] if a backslash is the last non-newline character on a line after stripping comments and whitespace, join the following line to it to form one "logical line"; if N consecutive lines end with a backslash, then N+1 physical lines will be joined to form one logical line. collapse_join [default: false] strip leading whitespace from lines that are joined to their predecessor; only matters if (join_lines and not lstrip_ws) errors [default: 'strict'] error handler used to decode the file content Note that since 'rstrip_ws' can strip the trailing newline, the semantics of 'readline()' must differ from those of the builtin file object's 'readline()' method! In particular, 'readline()' returns None for end-of-file: an empty string might just be a blank line (or an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is not.rstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtdx>|jD]0}||krBt||||q$t|||j|q$Wx&|D]}||jkrbtd|qbW|dkr||n||_||_d|_g|_ dS)zConstruct a new TextFile object. At least one of 'filename' (a string) and 'file' (a file-like object) must be supplied. They keyword argument options are described above and affect the values returned by 'readline()'.Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrrZoptionsZoptr8/opt/alt/python37/lib64/python3.7/distutils/text_file.py__init__Ns  zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)zyOpen a new file named 'filename'. This overrides both the 'filename' and 'file' arguments to the constructor.r)r rN)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|dS)ziClose the current file and forget everything we know about it (filename, current line number).N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}||jdt|ttfrD|dt|n|d||t|d|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|||dS)Nzerror: ) ValueErrorr&)rr$r%rrrerrorszTextFile.errorcCs tjd|||ddS)aPrint (to stderr) a warning message tied to the current logical line in the current file. If the current logical line in the file spans multiple physical lines, the warning refers to the whole range, eg. "lines 3-5". If 'line' supplied, it overrides the current line number; it may be a list or tuple to indicate a range of physical lines, or an integer for a single physical line.z warning:  N)sysstderrwriter&)rr$r%rrrwarnsz TextFile.warncCs|jr|jd}|jd=|Sd}x|j}|dkr:d}|jr|r|d}|dkrXnX|dksp||ddkr|ddkrdpd}|d||}|dkrq$n |d d}|jr"|r"|dkr|d |S|j r| }||}t |j t r|j dd|j d<n|j |j dg|_ n:|dkr0dSt |j t rP|j dd|_ n |j d|_ |jrv|jrv|}n"|jr| }n|jr|}|dks|dkr|jrq$|jr|ddkr|dd}q$|d dd kr|dd d}q$|SdS) aURead and return a single logical line from the current file (or from an internal buffer if lines have previously been "unread" with 'unreadline()'). If the 'join_lines' option is true, this may involve reading multiple physical lines concatenated into a single string. Updates the current line number, so calling 'warn()' after 'readline()' emits a warning about the physical line(s) just read. Returns None on end-of-file, since the empty string can occur if 'rstrip_ws' is true but 'strip_blanks' is not.rN#rr\r)z\#z2continuation line immediately precedes end-of-filez\ )rrreadlinerfindstripreplacer r-r lstriprrr rrrstripr)rr%Z buildup_lineposZeolrrrr2sf           zTextFile.readlinecCs,g}x"|}|dkr|S||qWdS)zWRead and return the list of all logical lines remaining in the current file.N)r2r)rlinesr%rrr readliness zTextFile.readlinescCs|j|dS)zPush 'line' (a string) onto an internal buffer that will be checked by future 'readline()' calls. Handy for implementing a parser with line-at-a-time lookahead.N)rr)rr%rrr unreadlineszTextFile.unreadline)NN)N)N)N)__name__ __module__ __qualname____doc__r rrrr&r(r-r2r:r;rrrrr s"9 !  x r)r?r*rrrrrrsPKr ]CC(__pycache__/msvc9compiler.cpython-37.pycnu[B  f/w@sRdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"dkZ#e#rd Z$d Z%d Z&n d Z$d Z%dZ&dddZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,ddZ-d$ddZ.e*Z/e/d kr>ed!e/Gd"d#d#e Z0dS)%a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64)r z win-amd64c@sPeZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCs:x,tD]$}|||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedrtdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||std dStj |d }tj|r|Std dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCr>z%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r7rrrr debugrVrisdirenvirongetr[pardirabspathisfile)r;r8r>ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rec Cs<t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd }z|\}}|d krzt| d | d }xr| d D]d}t |}d |krq| }| d d\} } | } | |kr| tjr| dd} t| || <qWWd|j|jXt|t|kr8ttt||S)zDLaunch vcvarsall.bat and read the settings from its environment includelibZlibpathrNzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr+ =rrG)rerr r] subprocessPopenPIPEZ communicatewaitr*rQrr&stripr%endswithrVrZr\rhcloserirP ValueErrorstrlistkeys) r;ZarchrdZ interestingresultpopenrhrilinerr(rrrquery_vcvarsalls<          rzg @z(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd.ddZd/ddZd0ddZd1ddZd2ddZd3ddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd4d*d+Zd,d-ZdS)5 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr<VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r:verboseZdry_runZforcerrrr<IszMSVCCompiler.__init__NcCs,|jrtd|dkrt}d}||kr6td|fdtjkrtdtjkrt|drtd|_d|_d|_ d |_ d |_ n|tks|d krt |}nt td t |}t t|}|d tj|_|dtjd<|dtjd<t|jdkrtd|j|d|_|d|_|d|_ |d |_ |d |_ y,x&tjd dD]}|j|qJWWntk rxYnXt|j|_d|jtjd <d|_|jdkrdddddg|_ddddddg|_n&ddddddg|_dddddddg|_dddg|_|jd krddd!d"g|_dg|_d#|_dS)$Nzdon't init multiple times)r z win-amd64z--plat-name must be one of %sZDISTUTILS_USE_SDKZMSSdkzcl.exezlink.exezlib.exezrc.exezmc.exer _rrgrfrzxPython was built with %s, and extensions need to be built with the same version of the compiler, but it isn't installed.;r z/nologoz/Oxz/MDz/W3z/DNDEBUGz/Odz/MDdz/Z7z/D_DEBUGz/GS-z/DLLz/INCREMENTAL:NOz/INCREMENTAL:noz/DEBUGT) rAssertionErrorr rrVr_find_execclinkerrgrcmcPLAT_TO_VCVARSrzr|rQrZr~rPZ_MSVCCompiler__productrrrYr[Zpreprocess_optionsrcompile_optionscompile_options_debugldflags_sharedr}ldflags_shared_debugZldflags_static)r:rZok_platsZ plat_specZvc_envrArrr initializeTsf                   zMSVCCompiler.initializecCs|dkr d}g}x|D]}tj|\}}tj|d}|tj|d}||jkrdtd||rttj|}||jkr| tj |||j q||j kr| tj |||j q| tj |||j qW|S)NrrzDon't know how to compile %s)rVrsplitext splitdriveisabssrc_extensionsrbasename_rc_extensionsrr[ res_extension_mc_extensions obj_extension)r:Zsource_filenamesZ strip_dir output_dirZ obj_namesZsrc_namerextrrrobject_filenamess(         zMSVCCompiler.object_filenamesc  Cst|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jx | D]}y| |\}}Wntk rwhYnX|rtj |}||j krd|}nT||j krd|}n>||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compilerextendrrrrVrrb _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr[r)r:Zsourcesrr6Z include_dirsr] extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrgrrr r]) r:rZoutput_libnamerr] target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsX|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}tj|d} |dk rPtjtj|\}}tj | ||}|d|||| || rp| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnX|||}|dk rT|\}}d||f}y|dd d ||gWn,tk rD}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrtr rVrr[rr EXECUTABLErrrrrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r])r: target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr]rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6sl           zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifestz/MANIFESTFILE:)rVrr[rr)r:rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|dr|ddd}PqWdS|tjkr>d}nd}||}|dkrXdS||fS)Nz/MANIFESTFILE::rrL) startswithrQrr_remove_visual_c_ref)r:rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |}Wd|Xtdtj}t|d|}d}t|d|}tdtj}t||dkrrdSt|d}z|||S|XWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrrrerDOTALLrFsearchwriteOSError)r:Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r:dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr)r~rVrr[rbrcr_rQ)r:ZexerAfnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r) r/r0r1r2Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr<rrrrrrrrrrrrrrrrrr{+sR  W  V  R + r{)r )1r2rVrlrNrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyrZ EnumValuer$errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r7r@r?rrr5rUrYr\rerzr|r{rrrrsL  >. # )  PKr ]ℂ $__pycache__/log.cpython-37.opt-1.pycnu[B  f@sldZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr 2/opt/alt/python37/lib64/python3.7/distutils/log.py__init__sz Log.__init__cCs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }y| d|Wn:t k r|j }||d|}| d|YnX|dS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs||||dS)N)r")r rrr r r r log'szLog.logcGs|t||dS)N)r"r)r rr r r r debug*sz Log.debugcGs|t||dS)N)r"r)r rr r r r info-szLog.infocGs|t||dS)N)r"r)r rr r r r warn0szLog.warncGs|t||dS)N)r"r)r rr r r r error3sz Log.errorcGs|t||dS)N)r"r)r rr r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r"r#r$r%r&r'r(r r r r rs rcCstj}|t_|S)N) _global_logr)roldr r r set_thresholdAsr.cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r.rrr)vr r r set_verbosityGs   r0)__doc__rrrrrrrr,r#r$r%r&r'r(r.r0r r r r s +PKr ]I- )__pycache__/dep_util.cpython-37.opt-1.pycnu[B  f @s6dZddlZddlmZddZddZd d d ZdS) zdistutils.dep_util Utility functions for simple, timestamp-based dependency of files and groups of files; also, function based entirely on such timestamp dependency analysis.N)DistutilsFileErrorcCs`tj|s tdtj|tj|s0dSddlm}t||}t||}||kS)aReturn true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Return false if both exist and 'target' is the same age or younger than 'source'. Raise DistutilsFileError if 'source' does not exist. zfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r 7/opt/alt/python37/lib64/python3.7/distutils/dep_util.pynewer s   rcCslt|t|krtdg}g}xBtt|D]2}t||||r.||||||q.W||fS)zWalk two filename lists in parallel, testing if each source is newer than its corresponding target. Return a pair of lists (sources, targets) where source is newer than target, according to the semantics of 'newer()'. z+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise srerrorcCstj|sdSddlm}t||}xX|D]L}tj|sb|dkrJn|dkrVq0n |dkrbdSt||}||kr0dSq0WdSdS)aReturn true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise return true. 'missing' controls what we do when a source file is missing; the default ("error") is to blow up with an OSError from inside 'stat()'; if it is "ignore", we silently drop any missing source files; if it is "newer", any missing source files make us assume that 'target' is out-of-date (this is handy in "dry-run" mode: it'll make you pretend to carry out commands that wouldn't work because inputs are missing, but that doesn't matter because you're not actually going to run the commands). rr)rrignorerN)rrrr r)rr ZmissingrZ target_mtimer source_mtimer r r newer_group6s     r)r)__doc__rZdistutils.errorsrrrrr r r r s  PKr ]"`ll$__pycache__/cmd.cpython-37.opt-2.pycnu[B YI~dF@s^ddlZddlZddlZddlmZddlmZmZmZm Z m Z ddlm Z GdddZ dS)N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@seZdZgZddZddZddZddZd d ZdBd dZ ddZ dCddZ ddZ dDddZ dEddZddZdFddZddZd d!Zd"d#Zd$d%ZdGd&d'ZdHd)d*Zd+d,Zd-d.Zd/d0ZdId1d2ZdJd4d5ZdKd6d7ZdLd8d9ZdMd:d;ZdNdd?Z dPd@dAZ!d S)QCommandcCsbddlm}t||std|jtkr0td||_|d|_ |j |_ d|_ d|_ d|_ dS)Nr) Distributionz$dist must be a Distribution instancezCommand is an abstract class)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r2/opt/alt/python37/lib64/python3.7/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|d|_dS)N)rfinalize_options)rrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr d|}|j||tjd|d}x\|jD]R\}}}||}|ddkrp|dd}t||}|j|d||ftjdqDWdS) Nr) longopt_xlatezcommand options for '%s':)levelz =z%s = %s) Zdistutils.fancy_getoptr#get_command_nameannouncerINFOZ user_options translater)rheaderindentr#optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)Nz,abstract method -- subclass %s must override)rr )rrrrruns z Command.runrcCst||dS)N)r)rmsgr$rrrr(szCommand.announcecCs&ddlm}|r"t|tjdS)Nr)DEBUG)Zdistutils.debugr2printsysstdoutflush)rr1r2rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr-whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs||d|dS)Nstring)r=)rr-r;rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||td|n6t|trTtdd|D}nd}|sltd||fdS)Nz,\s*|\s+css|]}t|tVqdS)N)r r9).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r9r8resplitlistallr)rr-r<okrrrensure_string_lists   zCommand.ensure_string_listcCs6||||}|dk r2||s2td|||fdS)Nzerror in '%s' option: )r=r)rr-Ztesterr:Z error_fmtr;r<rrr_ensure_tested_stringszCommand._ensure_tested_stringcCs||tjjdddS)Nfilenamez$'%s' does not exist or is not a file)rIospathisfile)rr-rrrensure_filenames zCommand.ensure_filenamecCs||tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rIrKrLisdir)rr-rrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrQr __name__)rrrrr' s zCommand.get_command_namecGsJ|j|}|x0|D](\}}t||dkrt||t||qWdS)N)rget_command_objr!rr8)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs|j||}||S)N)rrTr!)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|j||S)N)rreinitialize_command)rrVZreinit_subcommandsrrrrX0szCommand.reinitialize_commandcCs|j|dS)N)r run_command)rrVrrrrY4szCommand.run_commandcCs6g}x,|jD]"\}}|dks$||r ||q W|S)N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCstd||dS)Nzwarning: %s: %s )rwarnr')rr1rrrr^Ksz Command.warncCstj||||jddS)N)r)rexecuter)rfuncargsr1r$rrrr_NszCommand.executecCstj|||jddS)N)r)rmkpathr)rnamemoderrrrcQszCommand.mkpathc Cstj|||||j ||jdS)N)r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrfTs  zCommand.copy_filec Cstj||||||j |jdS)N)r)r copy_treerr)rrgrhrirjZpreserve_symlinksr$rrrrl]s zCommand.copy_treecCstj|||jdS)N)r)r move_filer)rsrcdstr$rrrrmfszCommand.move_filecCs ddlm}||||jddS)Nr)spawn)r)Zdistutils.spawnrpr)rcmdZ search_pathr$rprrrrpjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrrrsrrrrtos zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|d|f}|jsdt||rv| ||||n t |dS)Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r9rEtupler joinrrZ newer_groupr_rdebug)rZinfilesrhr`raZexec_msgZskip_msgr$rrr make_fileus  zCommand.make_file)Nr")r)N)N)N)r)r)Nr)rb)rrNr)rrrr)r)rr)NNNN)NNr)"rS __module__ __qualname__rZrrr!rr r/r0r(r7r=r?rHrIrNrPr'rUrWrXrYr]r^r_rcrfrlrmrprtryrrrrr sD0              r ) r4rKrCZdistutils.errorsrZ distutilsrrrrrrr rrrrs  PKr ]Rd .%__pycache__/core.cpython-37.opt-1.pycnu[B  f"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad Zd ZddZdddZdS)a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr3/opt/alt/python37/lib64/python3.7/distutils/core.py gen_usage s r) distclassr script_argsZoptionsnameversionZauthorZ author_emailZ maintainerZmaintainer_emailZurllicenseZ descriptionZlong_descriptionkeywordsZ platformsZ classifiersZ download_urlZrequiresZprovidesZ obsoletes)rZsourcesZ include_dirsZ define_macrosZ undef_macrosZ library_dirsZ librariesZruntime_library_dirsZ extra_objectsZextra_compile_argsZextra_link_argsZ swig_optsZexport_symbolsZdependsZlanguagec Ks|d}|r|d=nt}d|kr8tjtjd|d<d|krRtjdd|d<y||a}WnLtk r}z.d|krt d|nt d |d|fWdd}~XYnXt d kr|S| t rt d |t d kr|Sy |}Wn:tk r*}zt t|jd |Wdd}~XYnXt rBt d|t dkrP|S|ry |Wntk rt dYntk r}z.t rtjd|fnt d|fWdd}~XYnBttfk r }zt rnt dt|Wdd}~XYnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`% " (   "r+runc Cs|dkrtd|f|atj}d|i}yZzH|tjd<|dk rP|tjdd<t|d}t||WdQRXWd|t_daXWntk rYnXt dkrt d|t S) a.Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. )rrrr,z"invalid value for 'stop_after': %r__file__rNrrbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?) ValueErrorr rrcopyopenexecreadrr RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups(    r7)Nr,)__doc__rrZdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr rZsetup_keywordsZextension_keywordsr+r7rrrrs       qPKr ]^{0  '__pycache__/config.cpython-37.opt-2.pycnu[B YI~d@s8ddlZddlmZddlmZdZGdddeZdS)N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sdeZdZdZdZdZdZdddefdgZdgZd d Z d d Z d dZ ddZ ddZ ddZdS) PyPIRCCommandzhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s])z show-responseNz&display full response text from serverz show-responsecCstjtjddS)N~z.pypirc)ospathjoin expanduser)selfr 5/opt/alt/python37/lib64/python3.7/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|}tt|tjtjBdd}|t||fWdQRXdS)Niw)rrfdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)r usernamepasswordrcfr r r _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|}tj|r|d||jp.|j}t}||| }d|krF| dd}dd| dD}|gkrd|krdg}niSx|D]}d|i}| |d |d <xHd |jfd |j fd fD].\} } | || r| || || <q| || <qW|dkr"||jdfkr"|j|d <|S|d|ks<|d |kr|SqWnRd |krd }| |d rp| |d }n|j}| |d | |d|||j dSiS)NzUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|dkr|qS))strip).0serverr r r =sz.PyPIRCCommand._read_pypirc.. rrr repositoryrealm)rNz server-loginr)rrr"rr#)rrr existsZannouncer"DEFAULT_REPOSITORYrreadsectionsgetsplit DEFAULT_REALMZ has_option) r rr"Zconfigr'Z index_serversZ_serversrZcurrentkeydefaultr r r _read_pypirc0sV               zPyPIRCCommand._read_pypirccCs8ddl}|dd}||ddd}||S)Nrz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr(r&decode)r Zresponser1Z content_typeencodingr r r_read_pypi_responseps z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)Nr)r"r#Z show_response)r r r rinitialize_optionswsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)N)r"r%r#r*)r r r rfinalize_options}s  zPyPIRCCommand.finalize_options)__name__ __module__ __qualname__r%r*r"r#Z user_optionsZboolean_optionsrrr-r4r5r6r r r rrs@r)rZ configparserrZ distutils.cmdrrrr r r rs  PKr ] .__pycache__/unixccompiler.cpython-37.opt-1.pycnu[B  f|;@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedZarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execsFt|j||||\}}}td}|r<||kr<|||||fS)z'Remove standard library path from rpathZLIBDIR)super __class__ _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir)r| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn*t k r} z t | Wdd} ~ XYnXdS)Nz-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr!r!r" preprocess_s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}y ||||d|g|Wn*tk rj}z t|Wdd}~XYnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr)rr) robjsrcZextZcc_argsr,r/rr0r!r!r"_compileys   zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j ry||j |gWqt k r}z t |Wdd}~XYqXn t d|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr%r&r'r(r)robjectsrrr r debug)rr=Zoutput_libnamer9r> target_langoutput_filenamer0r!r!r"create_static_libs zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|y|tjkr|jdd}n|jdd}| dkrv|jrvd}tj|ddkrDd}xd||krB|d7}q(Wtj||d kr`d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=Z ld_so_aixr zskipping %s (up-to-date))r:rr isinstancestrtype TypeErrorr&r'joinr<r=r#r%r(rZ EXECUTABLErrrbasenamer2r3r4r5r)rr r r>)rZ target_descr=r@r9rrr Zexport_symbolsr>r+r,Z build_tempr?r-Zlib_optsZld_argsZlinkerioffsetr0r!r!r"linksN      zUnixCCompiler.linkcCsd|S)Nz-Lr!)rdirr!r!r"library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r!)rZ compiler_namer!r!r"_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NZCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r&r'rJrrr2r3rP)rrNrr!r!r"runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr!)rlibr!r!r"library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptd}td|} | dkrfd } n | d } x|D]} tj | |} tj | |} tj | |}tj | |}tjdkrD| d s| d rD| d sDtj | | d d|} tj | | d d|} tj | | d d|}tj | | d d|}tj | rV| Stj |rh|Stj | rz| Stj |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)/rCz/System/z/usr/z /usr/local/) r;r2r3rrresearchgroupr&r'rI startswithexists)rdirsrTr>Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrNrVrWrYrXr!r!r"find_library_files>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr2r3Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr1r8rArMrOrPrSrUrb __classcell__r!r!)rr"r -sF       >*r )__doc__r&r2r[Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r3r4r r!r!r!r"s    PKr ]kKX=X=.__pycache__/msvc9compiler.cpython-37.opt-2.pycnu[B YI~d/w@sNddlZddlZddlZddlZddlmZmZmZmZm Z ddl m Z m Z m Z ddlmZddlmZddlZejZejZejZejZejejejejfZej dkoej!dkZ"e"rdZ#d Z$d Z%n d Z#d Z$d Z%dddZ&GdddZ'GdddZ(ddZ)ddZ*ddZ+ddZ,d#ddZ-e)Z.e.dkr:ed e.Gd!d"d"e Z/dS)$N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64)r z win-amd64c@sLeZdZddZeeZddZeeZddZeeZddZeeZd S) RegcCs:x,tD]$}|||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedrtdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||stddStj |d }tj|r|Std dS) Nz %s\Setup\VCr=z%Unable to find productdir in registryzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r6rrrr debugrUrisdirenvirongetrZpardirabspathisfile)r:r7r=ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rec Cs<t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd}z|\}}|d krzt| d | d }xr| d D]d}t |}d |krq| }| d d \} } | } | |kr| tjr| dd} t| || <qWWd|j|jXt|t|kr8ttt||S)NincludelibZlibpathrzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr+ =rrF)rerr r] subprocessPopenPIPEZ communicatewaitr*rPrr&stripr%endswithrUrYr\rhcloserirO ValueErrorstrlistkeys) r:ZarchrdZ interestingresultpopenrhrilinerr(rrrquery_vcvarsalls<          rzg @z(VC %0.1f is not supported by this modulec @seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd-ddZd.ddZd/ddZd0ddZd1ddZd2ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd3d)d*Zd+d,ZdS)4 MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr;VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r9verboseZdry_runforcerrrr;IszMSVCCompiler.__init__NcCs|dkrt}d}||kr(td|fdtjkrfdtjkrf|drfd|_d|_d|_d|_d |_ n|tksx|d krt |}nt td t |}t t |}|d  tj|_|d tjd <|dtjd<t|jdkrtd|j|d|_|d|_|d|_|d|_|d |_ y,x&tjd  dD]}|j|q||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compilerextendrrrrUrrb _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrrZr)r9Zsourcesrr5Z include_dirsr] extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrgrrr r]) r9rZoutput_libnamerr] target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsX|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}tj|d} |dk rPtjtj|\}}tj | ||}|d|||| || rp| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnX|||}|dk rT|\}}d||f}y|dd d ||gWn,tk rD}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrtr rUrrZrr EXECUTABLErrrrrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r])r9 target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr]rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6sl           zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifestz/MANIFESTFILE:)rUrrZrr)r9rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|dr|ddd}PqWdS|tjkr>d}nd}||}|dkrXdS||fS)Nz/MANIFESTFILE::rrK) startswithrPrr_remove_visual_c_ref)r9rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |}Wd|Xtdtj}t|d|}d}t|d|}tdtj}t||dkrrdSt|d}z|||S|XWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrrrerDOTALLrEsearchwriteOSError)r9Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r9dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)NZPathr)r~rUrrZrbrcr_rP)r9Zexer@fnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r)r/r0r1Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr;rrrrrrrrrrrrrrrrrr{+sP  W  V  R + r{)r )0rUrlrMrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyrZ EnumValuer$errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r6r?r>rrr4rTrXr\rerzr|r{rrrrsJ  >. # )  PKr ] "11.__pycache__/_msvccompiler.cpython-37.opt-1.pycnu[B  fM@sdZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZdd Zd d Zd d ZddZdddZdddZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc CsytjtjdtjtjBd}Wntk r<tddSXd}d}|xtD]}yt ||\}}}Wntk rPYnX|rT|tj krTt j |rTytt|}Wnttfk rwTYnX|dkrT||krT||}}qTWWdQRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registered)NNr)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivZvc_dirZvtversionrpsz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r&zError executing {}cSs$i|]\}}}|r|r||qSr)r8)r9rr5r:rrr r;scss|]}|dVqdS)=N) partition)r9linerrr sz_get_vc_env..)rgetenvr)itemsr7rr+r,formatZSTDOUTdecoder/r erroroutputcmd splitlines)r4r6r5outexcenvrrr _get_vc_envns$     rMcCsN|stdtj}x2|D]*}tjtj||}tj|r|SqW|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rrBsplitpathseprr-abspathr3)Zexepathspfnrrr _find_exes   rTZx86Z x86_amd64)Zwin32z win-amd64c seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd(ddZd)ddZd*ddZd+ddZd,ddZd-ddZfddZd d!Zd"d#Zd$d%Zd.d&d'ZZS)/ MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcerrr rVszMSVCCompiler.__init__NcCs|dkrt}|tkr(tdttt|}t|}|sDtd|dd|_|jt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_x2|d dt j D]}|r||t jqWx2|d dt j D]}|r||t jqWd|_d dddddg|_d dddddg|_d ddg}d dddg}|d |_|d!|_|d"|_|d#|_||_||_tj df|jtj df|jtj df|jtj!df|jtj!df|jtj!df|jtj"df|jtj"df|jtj"df|ji |_#d|_$dS)$Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)r])r])r^r_r`)r^r_r`)%r PLAT_TO_VCVARSrrDtuplerMr*_pathsrNrrOrTcclinkerr\rcmcZmtZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionscompile_options_debugZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsrX)rYrWr4Zvc_envrQdirldflagsZ ldflags_debugrrr initializesX                     zMSVCCompiler.initializer[csTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }j|qSr) obj_extension)r9ext)rYrr r;sz1MSVCCompiler.object_filenames..csi|] }j|qSr) res_extension)r9rq)rYrr r;sr[cstj|\}}r"tj|}n2tj|\}}|tjjtjjfrT|dd}ytj||St k rt d |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithrialtsepr- LookupErrorrrD)rRbaserqr5)ext_map output_dir strip_dirrr make_out_path#s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)rYZsource_filenamesr}r|r~r)r{r|rYr}r object_filenamess zMSVCCompiler.object_filenamesc  Cs|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jd}x| D]}y| |\}}Wntk rwlYnX|rtj |}||j krd|}nD||j krd|}d}n*||j krB|}d|}y||jg| ||gWqltk r<}z t|Wdd}~XYqlXqln||jkrtj |}tj |}y\||jd|d||gtj tj |\}}tj ||d }||jd||gWqltk r}z t|Wdd}~XYqlXqlntd |||jg| | }|r$|d |||d |||y||Wqltk r}z t|Wdd}~XYqlXqlW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rXroZ_setup_compileappendextendrkrjKeyErrorrrrP _c_extensions_cpp_extensionsrspawnrfrrrdirnamergrtrur-rDrd)rYZsourcesr|ZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrqZ input_optZ output_optmsgZh_dirZrc_dirrzr5Zrc_fileargsrrr compile9sn               zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy,td|jd|| |jg|Wqt k r}z t |Wdd}~XYqXn td|dS)N)r|z/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rXro_fix_object_argslibrary_filename _need_linkr rr\r-rrr) rYrZoutput_libnamer|r target_langoutput_filenameZlib_argsrrrr create_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|j || f}dd|pgD}||||d|g}tj |d} |dk r tj tj|\}}tj | ||}|d|| r| |dd<| r.|| tj tj|}||y,td|jd |||jg|Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r)r9Zsymrrr sz%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rXrorZ _fix_lib_argswarnstrrrrr-rrlrrtrurrrrPZmkpathr rrerrr)rYZ target_descrrr|Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrnZ export_optsZld_argsZdll_nameZdll_extZ implib_filerrrr linksL       zMSVCCompiler.linkc s4td}z|jtjd<t|S|tjd<XdS)Nr)rrBrcr)superr)rYrHZold_path) __class__rr rs    zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r)rYrmrrr library_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)r)rYrmrrr runtime_library_dir_optionsz'MSVCCompiler.runtime_library_dir_optioncCs ||S)N)r)rYr\rrr library_optionszMSVCCompiler.library_optioncCs`|r|d|g}n|g}xB|D]6}x0|D](}tj|||}tj|r(|Sq(WqWdSdS)NZ_d)rrr-rr3)rYdirsr\rZ try_namesrmnameZlibfilerrr find_library_files    zMSVCCompiler.find_library_file)rrr)N)rr[)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesrrrrrrrrpZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrVrorrrrrrrrr __classcell__rr)rr rUsL   P  [  8 rU)N)rrZshutilstatr+rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r!r2r7rMrTrarUrrrr s$   " PKr ]iu5b5b%__pycache__/dist.cpython-37.opt-2.pycnu[B YI~d@sddlZddlZddlZddlmZy ddlZWnek rHdZYnXddlTddlm Z m Z ddl m Z m Z mZddlmZddlmZedZd d ZGd d d ZGd ddZddZdS)N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$cCsLt|tr nZd?d@ZdAdBZdcdCdDZdddEdFZdedHdIZejfdJdKZdLdMZdNdOZdPdQZ dRdSZ!dTdUZ"dVdWZ#dXdYZ$dZd[Z%d\d]Z&d^d_Z'd S)f Distribution)verbosevzrun verbosely (default))quietqz!run quietly (turns verbosity off))zdry-runnzdon't actually do anything)helphzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package )z help-commandsNzlist all available commands)nameNzprint package name)versionVzprint package version)fullnameNzprint -)authorNzprint the author's name)z author-emailNz print the author's email address) maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)contactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)urlNzprint the URL for this package)licenseNz print the license of the package)licenceNzalias for --license) descriptionNzprint the package description)zlong-descriptionNz"print the long package description) platformsNzprint the list of platforms) classifiersNzprint the list of classifiers)keywordsNzprint the list of keywords)providesNz+print the list of packages/modules provided)requiresNz+print the list of packages/modules required) obsoletesNz0print the list of packages/modules made obsoletecCsg|]}t|dqS)r)r).0xrrr szDistribution.rrNcCsld|_d|_d|_x|jD]}t||dqWt|_x,|jjD] }d|}t||t|j|q@Wi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|d}|dk rH|d=xD|D]8\}}| |}x"|D]\} } d| f|| <q(Wq Wd|kr|d|d<|d=d } t!dk r~t!"| nt#j$%| d x|D]\} } t&|jd | rt|jd | | nNt&|j| rt|j| | n0t&|| rt|| | nd t'| } t!"| qWd |_(|j dk r`x0|j D]&} | )dsHP| dkr6d|_(Pq6W|*dS)Nrrget_optionsz setup scriptr)r(z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+rdry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfZattrsattrbasenameZ method_namer6commandZ cmd_optionsopt_dictoptvalrkeyargrrr__init__s~                 zDistribution.__init__cCs&|j|}|dkr"i}|j|<|S)N)rDrN)r[r^dictrrrrP&s zDistribution.get_option_dictr5c Csddlm}|dkr"t|j}|dk r@||||d}|sV||ddSxt|D]l}|j|}|dkr||d|q\||d|||}x$|dD]}||d|qWq\WdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:r7)ZpprintrfsortedrDkeysannouncerNsplit) r[headercommandsindentrfZcmd_namer_outlinerrrdump_option_dicts1s&    zDistribution.dump_option_dictscCsg}ttjtjdj}tj|d}tj|rB| |tj dkrRd}nd}|j rtjtj d|}tj|r| |d}tj|r| |t r|dd ||S) N distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerSmodules__file__joinisfileappendr rX expanduserr ri)r[filesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerrrfind_config_filesMs&       zDistribution.find_config_filesc Csddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|}trb|d|}x|D]}tr|d|| |xf| D]Z}| |}| |}x@|D]8} | dkr| |kr| || } | dd} || f|| <qWqW|qnWd|jkrx|jdD]\} \} } |j | } yF| rRt|| t|  n(| dkrnt|| t| n t|| | Wn,tk r} z t| Wdd} ~ XYnXqWdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %srr8_global)rr9)Z configparserrrSr base_prefix frozensetr~r rireadZsectionsr6rPrNreplacerdrDrO negative_optr;r ValueErrorDistutilsOptionError)r[ filenamesrZignore_optionsparserfilenamesectionr6r_r`rasrcaliasrrrrparse_config_files}sJ               zDistribution.parse_config_filescCs|}g|_t||j}||j|ddi|j|j|d}| }t |j | |rhdSx |r|||}|dkrjdSqjW|jr|j|t|jdk|jddS|jstddS)Nr)r()argsobjectr)display_optionsrlzno commands suppliedT)_get_toplevel_optionsrlrrset_negative_aliasesrZ set_aliasesgetoptrCZget_option_orderr Z set_verbosityrhandle_display_options_parse_command_optsr _show_helplenDistutilsArgError)r[Ztoplevel_optionsrr option_orderrrrparse_command_lines,       zDistribution.parse_command_linecCs |jdgS)N)zcommand-packages=Nz0list of packages that provide distutils commands)global_options)r[rrrrsz"Distribution._get_toplevel_optionsc Csddlm}|d}t|s*td||j|y||}Wn*tk rn}z t |Wdd}~XYnXt ||st d|t |drt |jtsd}t |||j}t |dr|}||jt |drt |jtrt|j}ng}||j|j|||||d d\}} t | d rV| jrV|j|d|gd dSt |drt |jtrd} xP|jD]F\} } } }t | || r|d } t|r|nt d || fq|W| rdS||}x&t| D]\}}d |f||<qW|S)Nr)Commandzinvalid command name '%s'z&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrr)rrlzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrlr{get_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrVr rrrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablerPvarsrO)r[rrrr^Z cmd_classrrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncr_r rrrrrsb                   z Distribution._parse_command_optscCsTxNdD]F}t|j|}|dkr qt|trdd|dD}t|j||qWdS)N)r-r+cSsg|] }|qSr)strip)r1Zelmrrrr3jsz1Distribution.finalize_options..,)r?r=r r rjr;)r[r\rrrrrZ`s   zDistribution.finalize_optionsrc Cs ddlm}ddlm}|rR|r*|}n|j}||||jdt d|rt||j |dt dx|j D]z}t |t rt||r|} n ||} t| drt | jtr|| jt| jn || j|d| jt dq|Wt ||jdS) Nr) gen_usage)rz Global options:r5zKInformation display options (just display information, ignore any commands)rzOptions for '%s' command:)distutils.corerrrrrr print_help common_usageprintrrlr rrrrVrrrrrrB) r[rrrrlrrr6r^klassrrrrms4           zDistribution._show_helpc Csddlm}|jr4|tdt||jdSd}i}x|jD]}d||d<qDWxt|D]l\}}|r^||r^t|}t |j d|}|dkrtd |n |dkrtd |nt|d}q^W|S) Nr)rr5rr4)r-r+r)r,r.r/r0r7) rrZ help_commandsprint_commandsrrBrrNrr?r=ry) r[rrZany_display_optionsZis_display_optionoptionr`rarrrrrs*  z#Distribution.handle_display_optionsc Csnt|dx\|D]T}|j|}|s0||}y |j}Wntk rRd}YnXtd|||fqWdS)N:z(no description available)z %-*s %s)rr@rNrr*AttributeError)r[rlrk max_lengthcmdrr*rrrprint_command_lists      zDistribution.print_command_listcCsddl}|jj}i}x|D] }d||<qWg}x&|jD]}||s:||q:Wd}x$||D]}t||krdt|}qdW||d||rt ||d|dS)NrrzStandard commandszExtra commands) distutils.commandr^__all__r@rhrNr{rrr)r[rq std_commandsis_stdrextra_commandsrrrrrs*     zDistribution.print_commandsc Csddl}|jj}i}x|D] }d||<qWg}x&|jD]}||s:||q:Wg}x\||D]P}|j|}|s||}y |j}Wnt k rd}YnX|||fqdW|S)Nrrz(no description available)) rr^rr@rhrNr{rr*r) r[rqrrrrrvrr*rrrget_command_lists(        zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|dD}d|krD|dd||_|S)Nr5cSsg|]}|dkr|qS)r5)r)r1Zpkgrrrr3!sz5Distribution.get_command_packages..rzdistutils.commandr)rAr rrjinsert)r[Zpkgsrrrget_command_packagess  z!Distribution.get_command_packagesc Cs|j|}|r|Sx|D]}d||f}|}yt|tj|}Wntk r^wYnXyt||}Wn&tk rt d|||fYnX||j|<|SWt d|dS)Nz%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s') r@rNr __import__rSrw ImportErrorr?rr)r[r^rZpkgnameZ module_nameZ klass_namemodulerrrr's(   zDistribution.get_command_classcCsl|j|}|sh|rhtr&|d|||}||}|j|<d|j|<|j|}|rh||||S)Nz.z1error in %s: command '%s' has no such option '%s')get_command_namerPr rirOZboolean_optionsrrr r r;rrVrr) r[rLZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringrrrrrhs>           z!Distribution._set_command_optionsrcCsddlm}t||s&|}||}n|}|js8|S|d|_d|j|<|||r|x| D]}| ||qhW|S)Nr)r) rrr rrZ finalizedZinitialize_optionsrMrZget_sub_commandsreinitialize_command)r[r^Zreinit_subcommandsrrsubrrrrs     z!Distribution.reinitialize_commandcCst||dS)N)r )r[rlevelrrrriszDistribution.announcecCsx|jD]}||qWdS)N)rl run_command)r[rrrr run_commandss zDistribution.run_commandscCsD|j|rdStd|||}||d|j|<dS)Nz running %sr)rMrNr inforZensure_finalizedrun)r[r^rrrrrs   zDistribution.run_commandcCst|jp|jpgdkS)Nr)rrErF)r[rrrhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkS)Nr)rIr)r[rrrhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkS)Nr)rGr)r[rrrhas_c_librariesszDistribution.has_c_librariescCs|p|S)N)rr)r[rrr has_modulesszDistribution.has_modulescCs|jot|jdkS)Nr)rHr)r[rrr has_headersszDistribution.has_headerscCs|jot|jdkS)Nr)rJr)r[rrr has_scriptsszDistribution.has_scriptscCs|jot|jdkS)Nr)rKr)r[rrrhas_data_filesszDistribution.has_data_filescCs|o| o| S)N)rrr)r[rrris_pures zDistribution.is_pure)N)NNr5)N)r)N)r)(r __module__ __qualname__rrrr:rrdrPrpr~rrrrrZrrrrrrrrrrr INFOrirrrrrrrrrrrrrrr,sz   0 :C [  1(!" &  , ) rc@seZdZdZdAddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"ZeZd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dS)Br<)r r!r$ author_emailr%maintainer_emailr'r(r*long_descriptionr-r+r#r&Z contact_emailr, download_urlr.r/r0NcCs|dk r|t|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenr r!r$rr%rr'r(r*rr-r+r,rr.r/r0)r[rurrrrd s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d|_|d |_d|_|d |_|d |_ d kr|d |_ nd|_ |d|_ |d|_dkr|d d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd|_d|_d|_dS)Ncs|}|dkrdS|S)NUNKNOWNr)r r)rrr _read_field(sz7DistributionMetadata.read_pkg_file.._read_fieldcs|d}|gkrdS|S)N)Zget_all)r values)rrr _read_list.s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionr r!Zsummaryr$z author-emailz home-pager(z download-urlr*r-rplatformZ classifierz1.1r/r.r0)rr r!r*r$r%rrr'r(rrrjr-r+r,r/r.r0)r[filerrZmetadata_versionr)rrr$s:                 z"DistributionMetadata.read_pkg_filec Cs2ttj|dddd}||WdQRXdS)NzPKG-INFOwzUTF-8)encoding)rrtrurywrite_pkg_file)r[Zbase_dirZpkg_inforrrwrite_pkg_infoXs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|d||d||d||d||d| |d| |d | |d | |jr|d |jt |}|d |d |}|r|d|||d|||d|||d|||d|||d|dS)Nz1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ Obsoletes)r.r/r0r,rrUget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionry get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)r[rr!Z long_descr-rrrr_s0  z#DistributionMetadata.write_pkg_filecCs$x|D]}|d||fqWdS)Nz%s: %s )rU)r[rr rrrrrrs z DistributionMetadata._write_listcCs |jpdS)Nr)r )r[rrrrszDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r!)r[rrrrsz DistributionMetadata.get_versioncCsd||fS)Nz%s-%s)rr)r[rrr get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdS)Nr)r$)r[rrr get_authorszDistributionMetadata.get_authorcCs |jpdS)Nr)r)r[rrrget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdS)Nr)r%)r[rrrget_maintainersz#DistributionMetadata.get_maintainercCs |jpdS)Nr)r)r[rrrget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr)r%r$)r[rrrrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr)rr)r[rrrrsz&DistributionMetadata.get_contact_emailcCs |jpdS)Nr)r')r[rrrrszDistributionMetadata.get_urlcCs |jpdS)Nr)r()r[rrrrsz DistributionMetadata.get_licensecCs |jpdS)Nr)r*)r[rrrrsz$DistributionMetadata.get_descriptioncCs |jpdS)Nr)r)r[rrrrsz)DistributionMetadata.get_long_descriptioncCs |jpgS)N)r-)r[rrrrsz!DistributionMetadata.get_keywordscCst|d|_dS)Nr-)rr-)r[rrrr set_keywordssz!DistributionMetadata.set_keywordscCs |jp dgS)Nr)r+)r[rrrrsz"DistributionMetadata.get_platformscCst|d|_dS)Nr+)rr+)r[rrrr set_platformssz"DistributionMetadata.set_platformscCs |jpgS)N)r,)r[rrrrsz$DistributionMetadata.get_classifierscCst|d|_dS)Nr,)rr,)r[rrrrset_classifierssz$DistributionMetadata.set_classifierscCs |jpdS)Nr)r)r[rrrget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgS)N)r/)r[rrrrsz!DistributionMetadata.get_requirescCs0ddl}x|D]}|j|qWt||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterr/)r[rrqrrrr set_requiress z!DistributionMetadata.set_requirescCs |jpgS)N)r.)r[rrrrsz!DistributionMetadata.get_providescCs:dd|D}x |D]}ddl}|j|qW||_dS)NcSsg|] }|qSr)r)r1rrrrr3sz5DistributionMetadata.set_provides..r)rrZsplit_provisionr.)r[rrrqrrr set_providess  z!DistributionMetadata.set_providescCs |jpgS)N)r0)r[rrrrsz"DistributionMetadata.get_obsoletescCs0ddl}x|D]}|j|qWt||_dS)Nr)rrrrr0)r[rrqrrrr set_obsoletess z"DistributionMetadata.set_obsoletes)N)$rrrr>rdrrrrrrrrrr r rrrrZ get_licencerrrr rr rr rrrrrrrrrrrr<sB 4"r<cCs(g}x|D]}||ddq W|S)Nr)r{)r6Z new_optionsZ help_tuplerrrrs r)rSrtreZemailrrQrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrqr Zdistutils.debugr compilerrrr<rrrrrs2      ZcPKr ]0))__pycache__/__init__.cpython-37.opt-2.pycnu[B YI~d@s"ddlZejdejdZdS)N )sysversionindex __version__rr7/opt/alt/python37/lib64/python3.7/distutils/__init__.py sPKr ]V __pycache__/spawn.cpython-37.pycnu[B  f@sdZddlZddlZddlmZmZddlmZddlm Z dddZ d d Z dd d Z ej d krvddlmZdadadddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkrt | } | dkr"dSts,|}td|| fn,t!| rPqvntsZ|}td|| fqvWdS)Nrrr$MACOSX_DEPLOYMENT_TARGETcSsg|] }t|qSr)int).0xrrr esz _spawn_posix...cSsg|] }t|qSr)r()r)r*rrrr+kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&zunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %srz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %d)"rrrr execvpexecvsysplatform _cfg_targetr%Zget_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr#Z exit_statusrrrr Xs      &     r c Cstj|\}}tjdkr*|dkr*|d}tj|r:|S|dkrtjdd}|dkrytd}Wnt t fk rtj }YnX|sdS| tj }x*|D]"}tj||}tj|r|SqWdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. Zwin32z.exeNPATHCS_PATH)r pathsplitextr/r0isfiler4r5confstrAttributeError ValueErrordefpathr2pathsepr)r"rI_Zextpathspfrrrrs(     r)rrr)rrr)rrr)N)__doc__r/r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr0r%r1r3r rrrrrs       QPKr ] l '__pycache__/config.cpython-37.opt-1.pycnu[B  f@s<dZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sheZdZdZdZdZdZdZdddefdgZd gZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s])z show-responseNz&display full response text from serverz show-responsecCstjtjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduser)selfr 5/opt/alt/python37/lib64/python3.7/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|}tt|tjtjBdd}|t||fWdQRXdS)zCreates a default .pypirc file.iwN)rrfdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)r usernamepasswordrcfr r r _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|}tj|r|d||jp.|j}t}||| }d|krF| dd}dd| dD}|gkrd|krdg}niSx|D]}d|i}| |d |d <xHd |jfd |j fd fD].\} } | || r| || || <q| || <qW|dkr"||jdfkr"|j|d <|S|d|ks<|d |kr|SqWnRd |krd }| |d rp| |d }n|j}| |d | |d|||j dSiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|dkr|qS))strip).0serverr r r =sz.PyPIRCCommand._read_pypirc.. rrr repositoryrealm)rNz server-loginr)rrr"rr#)rrr existsZannouncer"DEFAULT_REPOSITORYrreadsectionsgetsplit DEFAULT_REALMZ has_option) r rr"Zconfigr'Z index_serversZ_serversrZcurrentkeydefaultr r r _read_pypirc0sV               zPyPIRCCommand._read_pypirccCs8ddl}|dd}||ddd}||S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr(r&decode)r Zresponser1Z content_typeencodingr r r_read_pypi_responseps z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r"r#Z show_response)r r r rinitialize_optionswsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r"r%r#r*)r r r rfinalize_options}s  zPyPIRCCommand.finalize_options)__name__ __module__ __qualname____doc__r%r*r"r#Z user_optionsZboolean_optionsrrr-r4r5r6r r r rrs @r)r:rZ configparserrZ distutils.cmdrrrr r r rs   PKr ]*D8ss'__pycache__/errors.cpython-37.opt-1.pycnu[B  f @s8dZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N)__name__ __module__ __qualname____doc__rr5/opt/alt/python37/lib64/python3.7/distutils/errors.pyr src@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).N)rrrrrrrrrsrc@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.N)rrrrrrrrr $sr c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.N)rrrrrrrrr *sr c@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.N)rrrrrrrrr3src@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.N)rrrrrrrrr8src@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).N)rrrrrrrrr>src@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).N)rrrrrrrrrCsrc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.N)rrrrrrrrrHsrc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.N)rrrrrrrrrKsrc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.N)rrrrrrrrrOsrc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.N)rrrrrrrrrRsrc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.N)rrrrrrrrrUsrc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.N)rrrrrrrrrXsrc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.N)rrrrrrrrr\src@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.N)rrrrrrrrr`srN)r Exceptionrrr r r r r rrrrrrrrrrrrrrrr s& PKr ]M7-__pycache__/archive_util.cpython-37.opt-2.pycnu[B YI~dF!@s@ddlZddlmZddlZy ddlZWnek r@dZYnXddlmZddlm Z ddl m Z ddl m Z yddlmZWnek rdZYnXyddlmZWnek rdZYnXd d Zd d Zd"ddZd#ddZedgdfedgdfedgdfedgdfedgdfegdfdZddZd$d d!ZdS)%N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamcCsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)N)rKeyError)nameresultr ;/opt/alt/python37/lib64/python3.7/distutils/archive_util.py_get_gids  rcCsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)Nr )rr )r r r r r_get_uid+s  rgzipcs.dddddd}dddd d }|dk r:||kr:td |d } |d krZ| ||d7} ttj| |dddl} t dt t fdd} |s| | d||} z| j || dWd| X|d kr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)NZgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr)dry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.win32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer&rtarZcompressed_namecmdr )rrrrr make_tarball7s<          r3c Cs|d}ttj||dtdkrp|r.d}nd}ytd|||g|dWn tk rjtd|YnXn:td|||sytj |dtj d }Wn&t k rtj |dtj d }YnX|tj krtjtj|d }|||td |xt|D]\}} } x>| D]6} tjtj|| d }|||td |qWxJ| D]B} tjtj|| }tj|rV|||td |qVWqW||S) Nz.zip)rz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr#r$r%zipfilerrrr'ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfiler*) r.r/r0rZ zip_filenameZ zipoptionsr4r$dirpathZdirnames filenamesr r r r make_zipfilesJ          r@)rrzgzip'ed tar-file)rrzbzip2'ed tar-file)rrzxz'ed tar-file)rrzcompressed tar file)rNzuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr1r4cCsx|D]}|tkr|SqWdS)N)ARCHIVE_FORMATS)formatsformatr r rcheck_archive_formatss rDc Cst}|dk r6td|tj|}|s6t||dkrDtj}d|i} y t|} Wn t k rxt d|YnX| d} x| dD]\} } | | | <qW|dkr|| d<|| d<z| ||f| }Wd|dk rtd |t|X|S) Nzchanging into '%s'rzunknown archive format '%s'rr4rrzchanging back to '%s') r#getcwdrdebugr$abspathchdirr8rAr r!)r.rCZroot_dirr/r0rrrZsave_cwdkwargsZ format_infofuncargvalfilenamer r r make_archives2       rO)rrrNN)rr)NNrrNN)r#warningsrr,r6 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr3r@rArDrOr r r rs@            G =      PKr ]b //$__pycache__/sysconfig.cpython-37.pycnu[B  fP@sdZddlZddlZddlZddlZddlmZejej Z ejej Z ejej ZejejZdejkrejejdZn&ejrejejejZneZddZeeddZejd krd d ZeeZeeZd d ZeZdZyesejZWne k rYnXddZ!d,ddZ"d-ddZ#ddZ$ddZ%ddZ&d.ddZ'e(dZ)e(dZ*e(dZ+d/d d!Z,d"d#Z-da.d$d%Z/d&d'Z0d(d)Z1d*d+Z2dS)0aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEcCs.x(dD] }tjtj|d|rdSqWdS)N)z Setup.distz Setup.localZModulesTF)ospathisfilejoin)dfnr 8/opt/alt/python37/lib64/python3.7/distutils/sysconfig.py_is_python_source_dir,s r _homentcCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)rrnormcase startswithrPREFIX)rr r r _fix_pcbuild5srcCstr ttSttS)N) _sys_homer project_baser r r r _python_build=srcCsdtjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. z%d.%dN)sys version_infor r r r get_python_versionQsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjt dd}tj |Sdt t }tj|d|Stjdkrtrtj|dtjj tj|dStj|dStd tjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonZincluderPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXrname python_buildrrrrget_config_varnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr r r get_python_incYs$     r)cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tj||dt}|r`|Stj|dSncCs\trtjtptdStddd}dtt }t t j drL|dt j j 7}tj||dS)zAReturn full pathname of installed Makefile from the Python build.ZMakefilerr)r'r-z config-{}{} _multiarchz-%s)r"rrrrrr.formatrr%hasattrrimplementationr?)Zlib_dirZ config_filer r r get_makefile_filenames  rCcCs|dkr i}td}td}xx|}|s0P||}|rz|dd\}}y t|}Wntk rnYnX|||<q"||}|r"d||d<q"W|S)zParse a config.h-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. Nz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rrr)recompilereadlinematchgroupint ValueError)fpgZ define_rxZundef_rxlinemnvr r r parse_config_h s(      rQz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c Csddlm}||ddddd}|dkr*i}i}i}x|}|dkrFPt|}|r4|dd\}} | } | dd } d | kr| ||<q4y t| } Wn$t k r| dd ||<Yq4X| ||<q4Wd } x|rxt |D]} || } t | pt | }|r|d}d }||kr2t||}n||krBd }nx|tjkrZtj|}n`|| kr| dr| dd| krd }n$d||krd }nt|d|}n d ||<}|r| |d}| d|} || kr| |7} | |7} d |kr| || <nzy t| } Wn"t k r@| || <Yn X| || <|| =| dr| dd| kr| dd} | |kr| || <q|| =qWqW|x.|D]"\}} t| tr| ||<qW|||S)zParse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. r)TextFilersurrogateescape)Zstrip_commentsZ skip_blanksZ join_lineserrorsNrz$$r$)r1r2r4TFZPY_)Zdistutils.text_filerRrF _variable_rxrGrHstripreplacerIrJlist _findvar1_rxsearch _findvar2_rxstrrr<rendstartcloseitems isinstanceupdate)r rLrRrKZdoneZnotdonerMrNrOrPZtmpvZrenamed_variablesr!valuefounditemZafterkr r r parse_makefile0s                       ricCsZxTt|pt|}|rP|\}}|d|||d||d}qPqW|S)aExpand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. rrN)r[r\r]spangetrH)svarsrNZbegr_r r r expand_makefile_varss *rnc CsVtjddjtjtjttjddd}t |t t dgd}|j }ia t |dS) z7Initialize the module as appropriate for POSIX systems.Z_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r?r)Zabir7Z multiarchbuild_time_varsrN)rr<rkr@rabiflagsr7getattrrB __import__globalslocalsror:rd)r!Z_tempror r r _init_posixsrucCs~i}tddd|d<tddd|d<tdd|d<td|d<d |d <td d |d <tjtj t j |d<|a dS)z+Initialize the module as appropriate for NTrr)r'r-ZLIBDESTZ BINLIBDEST)r'Z INCLUDEPY EXT_SUFFIXz.exeZEXE.rZVERSIONZBINDIRN) r.r)_impextension_suffixesrrYrrdirnameabspathr executabler:)rLr r r _init_ntsr}cGs`tdkr*tdtj}|r(|niattd<ttd<td}|dk rV|td<tdt}tjdkrtrtj t }tj ||}ntj t }tj tj |td<tr tjdkr t}tj tds |tkr tj |td}tj |td<tjd kr*d dl}|t|rXg}x|D]}|t|q:W|StSdS) aWith no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. NZ_init_r( exec_prefixrvSOrrr/r)r:rsrkrr!rr,rr"rrzrCrr{r$isabsgetcwdrr7r8Zcustomize_config_varsappend)argsfuncrrbaser8Zvalsr!r r r r;s@       r;cCs*|dkrddl}|dtdt|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) rrNz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningr;rk)r!rr r r r#%sr#)rN)rrN)N)N)3__doc__rxrrDrrTrrr$r(rr~r, base_prefixr base_exec_prefixrr<r{rr|rzrr rqrr!rrr"r%rpAttributeErrorrr)r.r9r>rCrQrErWr[r]rirnr:rur}r;r#r r r r  sZ      ( +I      mJPKr ]aB@M!M!*__pycache__/cygwinccompiler.cpython-37.pycnu[B  f^@@sdZddlZddlZddlZddlmZmZmZddlZddl m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZdd lmZd d ZGd dde ZGdddeZdZdZdZ ddZ!e"dZ#ddZ$ddZ%ddZ&dS)adistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)sysversionfind ValueError)Zmsc_posZmsc_verr>/opt/alt/python37/lib64/python3.7/distutils/cygwinccompiler.py get_msvcr?s rc @sReZdZdZdZdZdZdZdZdZ dZ dd d Z d d Z dddZ dddZdS)CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. cygwinz.oz.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|tk rB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %s)compiler compiler_so compiler_cxx linker_exe linker_soz2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr#ds<      zCygwinCCompiler.__init__c Cs|dks|dkrVy|dd|d|gWqtk rR}z t|Wdd}~XYqXnNy"||j||d|g|Wn*tk r}z t|Wdd}~XYnXdS)z:Compiles the source by spawning GCC and windres if needed.z.rcz.resZwindresz-iz-oN)Zspawnr r r)r.objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsTt| p g} t|pg}t|p&g}||j|dk r||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}x|D]}| |qW| t ||fd ||jd kr| d |g| d |gn | || s,| d t||||||||d| | | | | dS)zLink the objects.Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr-Z EXECUTABLEr+ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r.Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr6Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrCs:          zCygwinCCompiler.linkcCs|dkr d}g}x|D]}tjtj|\}}||jddgkrTtd||f|rdtj|}|dkr|tj||||j q|tj|||j qW|S)z#Adds supports for rc and res files.NrGz.rcz.resz"unknown file type '%s' (from '%s'))z.resz.rc) r<r=r?normcaseZsrc_extensionsr r@rBrA obj_extension)r.Zsource_filenamesZ strip_dirrDZ obj_namesZsrc_namebaser5rrrobject_filenamess      z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrG)__name__ __module__ __qualname____doc__r*rIZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr#r8rCrKrrrrrYs ; Krc@seZdZdZdZdddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rGz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %s)rrr r!r") rr#r)r( is_cygwingccr r,r+r-r)r.r/r0r1r2Z entry_pointrrrr#s&   zMingw32CCompiler.__init__N)rrr)rLrMrNrOr*r#rrrrrPsrPokznot okZ uncertainc Csddlm}dtjkrtdfS|}y@t|}z(d|krJtd|fStd|fSWd| XWn0t k r}zt d ||j ffSd}~XYnXdS) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'Nzcouldn't read '%s': %s) distutilsrSrrr%Zget_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rSfnZconfig_hexcrrrr$Hs    r$s(\d+\.\d+(\.\d+)*)cCsl|d}t|dkrdSt|dtdj}z |}Wd|Xt|}|dkrZdSt | d S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNT)shellstdout) splitrrrr_rVrX RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rkcCsdddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rk).0rfrrr sz get_versions..)tuple)Zcommandsrrrr's r'cCstddg}|dS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rirrrrQs rQ)'rOr<rr: subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rTr Zdistutils.versionrZdistutils.spawnrrrrPr%rWrZr$compilerbrkr'rQrrrrs0)     ;1+ PKr ] $__pycache__/extension.cpython-37.pycnu[B  f)@s.dZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@s"eZdZdZdddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKst|tstdt|tr.tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}dt|}d |}t|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr8/opt/alt/python37/lib64/python3.7/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs4              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*__doc__r'r,rrrrrs ? !rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}zhg}x\|} | dkrfP| | rrqT| d| dkrd krnn| d | qT|| |} || } | d} t | g} d} x| ddD]}| dk r| |d} qt j|d}|dd }|d d}|d kr8| j |q|d krP| j |q|dkr|d}|dkr| j |dfn$| j |d|||d dfq|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr0| j} q|dkrB| j} q|dkrT| j} q|dkrx| j ||s| j} q|dkr| j |q| d|qW| | qTWWd|X|S)z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                          rI)r.r<r"rrIrrrrs zPKr ]b //*__pycache__/sysconfig.cpython-37.opt-1.pycnu[B  fP@sdZddlZddlZddlZddlZddlmZejej Z ejej Z ejej ZejejZdejkrejejdZn&ejrejejejZneZddZeeddZejd krd d ZeeZeeZd d ZeZdZyesejZWne k rYnXddZ!d,ddZ"d-ddZ#ddZ$ddZ%ddZ&d.ddZ'e(dZ)e(dZ*e(dZ+d/d d!Z,d"d#Z-da.d$d%Z/d&d'Z0d(d)Z1d*d+Z2dS)0aProvide access to Python's configuration information. The specific configuration variables available depend heavily on the platform and configuration. The values may be retrieved using get_config_var(name), and the list of variables is available via get_config_vars().keys(). Additional convenience functions are also available. Written by: Fred L. Drake, Jr. Email: N)DistutilsPlatformErrorZ_PYTHON_PROJECT_BASEcCs.x(dD] }tjtj|d|rdSqWdS)N)z Setup.distz Setup.localZModulesTF)ospathisfilejoin)dfnr 8/opt/alt/python37/lib64/python3.7/distutils/sysconfig.py_is_python_source_dir,s r _homentcCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)rrnormcase startswithrPREFIX)rr r r _fix_pcbuild5srcCstr ttSttS)N) _sys_homer project_baser r r r _python_build=srcCsdtjddS)zReturn a string containing the major and minor Python version, leaving off the patchlevel. Sample return values could be '1.5' or '2.2'. z%d.%dN)sys version_infor r r r get_python_versionQsrcCs|dkr|rtpt}tjdkrjtrL|r.tp,tStjt dd}tj |Sdt t }tj|d|Stjdkrtrtj|dtjj tj|dStj|dStd tjdS) aReturn the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; otherwise, this is the path to platform-specific header files (namely pyconfig.h). If 'prefix' is supplied, use it instead of sys.base_prefix or sys.base_exec_prefix -- i.e., ignore 'plat_specific'. NposixsrcdirZIncludepythonZincluderPCzFI don't know where Python installs its C header files on platform '%s')BASE_EXEC_PREFIX BASE_PREFIXrname python_buildrrrrget_config_varnormpathr build_flagspathsepr) plat_specificprefixZincdirZ python_dirr r r get_python_incYs$     r)cCs|dkr&|r|rtpt}n |r"tp$t}tjdkrp|s8|r>d}nd}tj||dt}|r`|Stj|dSncCs\trtjtptdStddd}dtt }t t j drL|dt j j 7}tj||dS)zAReturn full pathname of installed Makefile from the Python build.ZMakefilerr)r'r-z config-{}{} _multiarchz-%s)r"rrrrrr.formatrr%hasattrrimplementationr?)Zlib_dirZ config_filer r r get_makefile_filenames  rCcCs|dkr i}td}td}xx|}|s0P||}|rz|dd\}}y t|}Wntk rnYnX|||<q"||}|r"d||d<q"W|S)zParse a config.h-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. Nz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rrr)recompilereadlinematchgroupint ValueError)fpgZ define_rxZundef_rxlinemnvr r r parse_config_h s(      rQz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}c Csddlm}||ddddd}|dkr*i}i}i}x|}|dkrFPt|}|r4|dd\}} | } | dd } d | kr| ||<q4y t| } Wn$t k r| dd ||<Yq4X| ||<q4Wd } x|rxt |D]} || } t | pt | }|r|d}d }||kr2t||}n||krBd }nx|tjkrZtj|}n`|| kr| dr| dd| krd }n$d||krd }nt|d|}n d ||<}|r| |d}| d|} || kr| |7} | |7} d |kr| || <nzy t| } Wn"t k r@| || <Yn X| || <|| =| dr| dd| kr| dd} | |kr| || <q|| =qWqW|x.|D]"\}} t| tr| ||<qW|||S)zParse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. r)TextFilersurrogateescape)Zstrip_commentsZ skip_blanksZ join_lineserrorsNrz$$r$)r1r2r4TFZPY_)Zdistutils.text_filerRrF _variable_rxrGrHstripreplacerIrJlist _findvar1_rxsearch _findvar2_rxstrrr<rendstartcloseitems isinstanceupdate)r rLrRrKZdoneZnotdonerMrNrOrPZtmpvZrenamed_variablesr!valuefounditemZafterkr r r parse_makefile0s                       ricCsZxTt|pt|}|rP|\}}|d|||d||d}qPqW|S)aExpand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. rrN)r[r\r]spangetrH)svarsrNZbegr_r r r expand_makefile_varss *rnc CsVtjddjtjtjttjddd}t |t t dgd}|j }ia t |dS) z7Initialize the module as appropriate for POSIX systems.Z_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r?r)Zabir7Z multiarchbuild_time_varsrN)rr<rkr@rabiflagsr7getattrrB __import__globalslocalsror:rd)r!Z_tempror r r _init_posixsrucCs~i}tddd|d<tddd|d<tdd|d<td|d<d |d <td d |d <tjtj t j |d<|a dS)z+Initialize the module as appropriate for NTrr)r'r-ZLIBDESTZ BINLIBDEST)r'Z INCLUDEPY EXT_SUFFIXz.exeZEXE.rZVERSIONZBINDIRN) r.r)_impextension_suffixesrrYrrdirnameabspathr executabler:)rLr r r _init_ntsr}cGs`tdkr*tdtj}|r(|niattd<ttd<td}|dk rV|td<tdt}tjdkrtrtj t }tj ||}ntj t }tj tj |td<tr tjdkr t}tj tds |tkr tj |td}tj |td<tjd kr*d dl}|t|rXg}x|D]}|t|q:W|StSdS) aWith no arguments, return a dictionary of all configuration variables relevant for the current platform. Generally this includes everything needed to build extensions and install both pure modules and extensions. On Unix, this means every variable defined in Python's installed Makefile; on Windows it's a much smaller set. With arguments, return a list of values that result from looking up each argument in the configuration variable dictionary. NZ_init_r( exec_prefixrvSOrrr/r)r:rsrkrr!rr,rr"rrzrCrr{r$isabsgetcwdrr7r8Zcustomize_config_varsappend)argsfuncrrbaser8Zvalsr!r r r r;s@       r;cCs*|dkrddl}|dtdt|S)zReturn the value of a single variable using the dictionary returned by 'get_config_vars()'. Equivalent to get_config_vars().get(name) rrNz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningr;rk)r!rr r r r#%sr#)rN)rrN)N)N)3__doc__rxrrDrrTrrr$r(rr~r, base_prefixr base_exec_prefixrr<r{rr|rzrr rqrr!rrr"r%rpAttributeErrorrr)r.r9r>rCrQrErWr[r]rirnr:rur}r;r#r r r r  sZ      ( +I      mJPKr ]*D8ss!__pycache__/errors.cpython-37.pycnu[B  f @s8dZGdddeZGdddeZGdddeZGdddeZGd d d eZGd d d eZGd ddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZd'S)(adistutils.errors Provides exceptions used by the Distutils modules. Note that Distutils modules may raise standard exceptions; in particular, SystemExit is usually raised for errors that are obviously the end-user's fault (eg. bad command-line arguments). This module is safe to use in "from ... import *" mode; it only exports symbols whose names start with "Distutils" and end with "Error".c@seZdZdZdS)DistutilsErrorzThe root of all Distutils evil.N)__name__ __module__ __qualname____doc__rr5/opt/alt/python37/lib64/python3.7/distutils/errors.pyr src@seZdZdZdS)DistutilsModuleErrorzUnable to load an expected module, or to find an expected class within some module (in particular, command modules and classes).N)rrrrrrrrrsrc@seZdZdZdS)DistutilsClassErrorzSome command class (or possibly distribution class, if anyone feels a need to subclass Distribution) is found not to be holding up its end of the bargain, ie. implementing some part of the "command "interface.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsGetoptErrorz7The option table provided to 'fancy_getopt()' is bogus.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsArgErrorzaRaised by fancy_getopt in response to getopt.error -- ie. an error in the command line usage.N)rrrrrrrrr sr c@seZdZdZdS)DistutilsFileErrorzAny problems in the filesystem: expected file not found, etc. Typically this is for problems that we detect before OSError could be raised.N)rrrrrrrrr $sr c@seZdZdZdS)DistutilsOptionErroraSyntactic/semantic errors in command options, such as use of mutually conflicting options, or inconsistent options, badly-spelled values, etc. No distinction is made between option values originating in the setup script, the command line, config files, or what-have-you -- but if we *know* something originated in the setup script, we'll raise DistutilsSetupError instead.N)rrrrrrrrr *sr c@seZdZdZdS)DistutilsSetupErrorzqFor errors that can be definitely blamed on the setup script, such as invalid keyword arguments to 'setup()'.N)rrrrrrrrr3src@seZdZdZdS)DistutilsPlatformErrorzWe don't know how to do something on the current platform (but we do know how to do it on some platform) -- eg. trying to compile C files on a platform not supported by a CCompiler subclass.N)rrrrrrrrr8src@seZdZdZdS)DistutilsExecErrorz`Any problems executing an external program (such as the C compiler, when compiling C files).N)rrrrrrrrr>src@seZdZdZdS)DistutilsInternalErrorzoInternal inconsistencies or impossibilities (obviously, this should never be seen if the code is working!).N)rrrrrrrrrCsrc@seZdZdZdS)DistutilsTemplateErrorz%Syntax error in a file list template.N)rrrrrrrrrHsrc@seZdZdZdS)DistutilsByteCompileErrorzByte compile error.N)rrrrrrrrrKsrc@seZdZdZdS)CCompilerErrorz#Some compile/link operation failed.N)rrrrrrrrrOsrc@seZdZdZdS)PreprocessErrorz.Failure to preprocess one or more C/C++ files.N)rrrrrrrrrRsrc@seZdZdZdS) CompileErrorz2Failure to compile one or more C/C++ source files.N)rrrrrrrrrUsrc@seZdZdZdS)LibErrorzKFailure to create a static library from one or more C/C++ object files.N)rrrrrrrrrXsrc@seZdZdZdS) LinkErrorz]Failure to link one or more C/C++ object files into an executable or shared library file.N)rrrrrrrrr\src@seZdZdZdS)UnknownFileErrorz(Attempt to process an unknown file type.N)rrrrrrrrr`srN)r Exceptionrrr r r r r rrrrrrrrrrrrrrrr s& PKr ]{:%__pycache__/dist.cpython-37.opt-1.pycnu[B  f@sdZddlZddlZddlZddlmZy ddlZWnek rLdZYnXddlTddl m Z m Z ddl m Z mZmZddlmZddlmZed Zd d ZGd d d ZGdddZddZdS)z}distutils.dist Provides the Distribution class, which represents the module distribution being built/installed/distributed. N)message_from_file)*) FancyGetopttranslate_longopt) check_environ strtobool rfc822_escape)log)DEBUGz^[a-zA-Z]([a-zA-Z0-9_]*)$cCsLt|tr nd?Zd@dAZdBdCZdddDdEZdedFdGZdfdIdJZejfdKdLZdMdNZdOdPZ dQdRZ!dSdTZ"dUdVZ#dWdXZ$dYdZZ%d[d\Z&d]d^Z'd_d`Z(d!S)g DistributionaThe core of the Distutils. Most of the work hiding behind 'setup' is really done within a Distribution instance, which farms the work out to the Distutils commands specified on the command line. Setup scripts will almost never instantiate Distribution directly, unless the 'setup()' function is totally inadequate to their needs. However, it is conceivable that a setup script might wish to subclass Distribution for some specialized purpose, and then pass the subclass to 'setup()' as the 'distclass' keyword argument. If so, it is necessary to respect the expectations that 'setup' has of Distribution. See the code for 'setup()', in core.py, for details. )verbosevzrun verbosely (default))quietqz!run quietly (turns verbosity off))zdry-runnzdon't actually do anything)helphzshow detailed help message)z no-user-cfgNz-ignore pydistutils.cfg in your home directoryzCommon commands: (see '--help-commands' for more) setup.py build will build the package underneath 'build/' setup.py install will install the package )z help-commandsNzlist all available commands)nameNzprint package name)versionVzprint package version)fullnameNzprint -)authorNzprint the author's name)z author-emailNz print the author's email address) maintainerNzprint the maintainer's name)zmaintainer-emailNz$print the maintainer's email address)contactNz7print the maintainer's name if known, else the author's)z contact-emailNz@print the maintainer's email address if known, else the author's)urlNzprint the URL for this package)licenseNz print the license of the package)licenceNzalias for --license) descriptionNzprint the package description)zlong-descriptionNz"print the long package description) platformsNzprint the list of platforms) classifiersNzprint the list of classifiers)keywordsNzprint the list of keywords)providesNz+print the list of packages/modules provided)requiresNz+print the list of packages/modules required) obsoletesNz0print the list of packages/modules made obsoletecCsg|]}t|dqS)r)r).0xrrr szDistribution.rrNcCsld|_d|_d|_x|jD]}t||dqWt|_x,|jjD] }d|}t||t|j|q@Wi|_ d|_ d|_ d|_ i|_ g|_d|_i|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_i|_i|_|r|d}|dk rH|d=xD|D]8\}}| |}x"|D]\} } d| f|| <q(Wq Wd|kr|d|d <|d=d } t!dk r~t!"| nt#j$%| d x|D]\} } t&|jd | rt|jd | | nNt&|j| rt|j| | n0t&|| rt|| | nd t'| } t!"| qWd|_(|j dk r`x0|j D]&} | )dsHP| dkr6d|_(Pq6W|*dS)a0Construct a new Distribution instance: initialize all the attributes of a Distribution, and then use 'attrs' (a dictionary mapping attribute names to values) to assign some of those attributes their "real" values. (Any attributes not mentioned in 'attrs' will be assigned to some null value: 0, None, an empty list or dictionary, etc.) Most importantly, initialize the 'command_obj' attribute to the empty dictionary; this will be filled in with real command objects by 'parse_command_line()'. rrget_Noptionsz setup scriptr)r(z:'licence' distribution option is deprecated; use 'license' Zset_zUnknown distribution option: %sT-z --no-user-cfgF)+rdry_runrdisplay_option_namessetattrDistributionMetadatametadata_METHOD_BASENAMESgetattrcmdclasscommand_packages script_name script_argscommand_optionsZ dist_filespackagesZ package_dataZ package_dir py_modules librariesheaders ext_modulesZ ext_packageZ include_dirsZ extra_pathscripts data_filesZpassword command_objhave_rungetitemsget_option_dictwarningswarnsysstderrwritehasattrrepr want_user_cfg startswithfinalize_options)selfZattrsattrbasenameZ method_namer6commandZ cmd_optionsopt_dictoptvalrkeyargrrr__init__s~                 zDistribution.__init__cCs&|j|}|dkr"i}|j|<|S)zGet the option dictionary for a given command. If that command's option dictionary hasn't been created yet, then create it and return the new dictionary; otherwise, return the existing option dictionary. N)rDrN)r[r^dictrrrrP&s zDistribution.get_option_dictr5c Csddlm}|dkr"t|j}|dk r@||||d}|sV||ddSxt|D]l}|j|}|dkr||d|q\||d|||}x$|dD]}||d|qWq\WdS)Nr)pformatz zno commands known yetzno option dict for '%s' commandzoption dict for '%s' command:r7)ZpprintrfsortedrDkeysannouncerNsplit) r[headercommandsindentrfZcmd_namer_outlinerrrdump_option_dicts1s&    zDistribution.dump_option_dictscCsg}ttjtjdj}tj|d}tj|rB| |tj dkrRd}nd}|j rtjtj d|}tj|r| |d}tj|r| |t r|dd ||S) aFind as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. distutilsz distutils.cfgposixz.pydistutils.cfgzpydistutils.cfg~z setup.cfgzusing config files: %sz, )rospathdirnamerSmodules__file__joinisfileappendr rX expanduserr ri)r[filesZsys_dirZsys_fileZ user_filenameZ user_fileZ local_filerrrfind_config_filesMs&       zDistribution.find_config_filesc Csddlm}tjtjkr8ddddddd d d d d ddg }ng}t|}|dkrT|}trb|d|}x|D]}tr|d|| |xf| D]Z}| |}| |}x@|D]8} | dkr| |kr| || } | dd} || f|| <qWqW|qnWd|jkrx|jdD]\} \} } |j | } yF| rRt|| t|  n(| dkrnt|| t| n t|| | Wn,tk r} z t| Wdd} ~ XYnXqWdS)Nr) ConfigParserz install-basezinstall-platbasez install-libzinstall-platlibzinstall-purelibzinstall-headerszinstall-scriptsz install-dataprefixz exec-prefixhomeuserrootz"Distribution.parse_config_files():z reading %srr8_global)rr9)Z configparserrrSr base_prefix frozensetr~r rireadZsectionsr6rPrNreplacerdrDrO negative_optr;r ValueErrorDistutilsOptionError)r[ filenamesrZignore_optionsparserfilenameZsectionr6r_r`rasrcaliasrrrrparse_config_files}sJ               zDistribution.parse_config_filescCs|}g|_t||j}||j|ddi|j|j|d}| }t |j | |rhdSx |r|||}|dkrjdSqjW|jr|j|t|jdk|jddS|jstddS) aParse the setup script's command line, taken from the 'script_args' instance attribute (which defaults to 'sys.argv[1:]' -- see 'setup()' in core.py). This list is first processed for "global options" -- options that set attributes of the Distribution instance. Then, it is alternately scanned for Distutils commands and options for that command. Each new command terminates the options for the previous command. The allowed options for a command are determined by the 'user_options' attribute of the command class -- thus, we have to be able to load command classes in order to parse the command line. Any error in that 'options' attribute raises DistutilsGetoptError; any error on the command-line raises DistutilsArgError. If no Distutils commands were found on the command line, raises DistutilsArgError. Return true if command-line was successfully parsed and we should carry on with executing commands; false if no errors but we shouldn't execute commands (currently, this only happens if user asks for help). r)r()argsobjectNr)display_optionsrlzno commands suppliedT)_get_toplevel_optionsrlrrset_negative_aliasesrZ set_aliasesgetoptrCZget_option_orderr Z set_verbosityrhandle_display_options_parse_command_optsr _show_helplenDistutilsArgError)r[Ztoplevel_optionsrr option_orderrrrparse_command_lines,       zDistribution.parse_command_linecCs |jdgS)zReturn the non-display options recognized at the top level. This includes options that are recognized *only* at the top level as well as options recognized for commands. )zcommand-packages=Nz0list of packages that provide distutils commands)global_options)r[rrrrsz"Distribution._get_toplevel_optionsc Csddlm}|d}t|s*td||j|y||}Wn*tk rn}z t |Wdd}~XYnXt ||st d|t |drt |jtsd}t |||j}t |dr|}||jt |d rt |jtrt|j}ng}||j|j|||||d d\}} t | d rV| jrV|j|d|gd dSt |d rt |jtrd} xP|jD]F\} } } }t | || r|d } t|r|nt d || fq|W| rdS||}x&t| D]\}}d|f||<qW|S)aParse the command-line options for a single command. 'parser' must be a FancyGetopt instance; 'args' must be the list of arguments, starting with the current command (whose options we are about to parse). Returns a new version of 'args' with the next command at the front of the list; will be the empty list if there are no more commands on the command line. Returns None if the user asked for help on this command. r)Commandzinvalid command name '%s'Nz&command class %s must subclass Command user_optionszIcommand class %s must provide 'user_options' attribute (a list of tuples)r help_optionsrr)rrlzYinvalid help function %r for help option '%s': must be a callable object (function, etc.)z command line) distutils.cmdr command_rematch SystemExitrlr{get_command_classDistutilsModuleErrorr issubclassZDistutilsClassErrorrVr rrrcopyupdaterfix_help_optionsset_option_tablerrrrrZ get_attr_namecallablerPvarsrO)r[rrrr^Z cmd_classrrrZoptsZhelp_option_foundZ help_optionZshortZdescfuncr_r rrrrrsb                   z Distribution._parse_command_optscCsTxNdD]F}t|j|}|dkr qt|trdd|dD}t|j||qWdS)zSet final values for all the options on the Distribution instance, analogous to the .finalize_options() method of Command objects. )r-r+NcSsg|] }|qSr)strip)r1Zelmrrrr3jsz1Distribution.finalize_options..,)r?r=r r rjr;)r[r\rrrrrZ`s   zDistribution.finalize_optionsrc Cs ddlm}ddlm}|rR|r*|}n|j}||||jdt d|rt||j |dt dx|j D]z}t |t rt||r|} n ||} t| drt | jtr|| jt| jn || j|d| jt dq|Wt ||jd S) abShow help for the setup script command-line in the form of several lists of command-line options. 'parser' should be a FancyGetopt instance; do not expect it to be returned in the same state, as its option table will be reset to make it generate the correct help text. If 'global_options' is true, lists the global options: --verbose, --dry-run, etc. If 'display_options' is true, lists the "display-only" options: --name, --version, etc. Finally, lists per-command help for every command name or command class in 'commands'. r) gen_usage)rz Global options:r5zKInformation display options (just display information, ignore any commands)rzOptions for '%s' command:N)distutils.corerrrrrrZ print_help common_usageprintrrlr rrrrVrrrrrrB) r[rrrrlrrr6r^klassrrrrms4           zDistribution._show_helpc Csddlm}|jr4|tdt||jdSd}i}x|jD]}d||d<qDWxt|D]l\}}|r^||r^t|}t |j d|}|dkrtd |n |dkrtd |nt|d}q^W|S) zIf there were any non-global "display-only" options (--help-commands or the metadata display options) on the command line, display the requested info and return true; else return false. r)rr5rr4)r-r+r)r,r.r/r0r7) rrZ help_commandsprint_commandsrrBrrNrr?r=ry) r[rrZany_display_optionsZis_display_optionoptionr`rarrrrrs*  z#Distribution.handle_display_optionsc Csnt|dx\|D]T}|j|}|s0||}y |j}Wntk rRd}YnXtd|||fqWdS)zZPrint a subset of the list of all commands -- used by 'print_commands()'. :z(no description available)z %-*s %sN)rr@rNrr*AttributeError)r[rlrk max_lengthcmdrr*rrrprint_command_lists      zDistribution.print_command_listcCsddl}|jj}i}x|D] }d||<qWg}x&|jD]}||s:||q:Wd}x$||D]}t||krdt|}qdW||d||rt ||d|dS)anPrint out a help message listing all available commands with a description of each. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrzStandard commandszExtra commands) distutils.commandr^__all__r@rhrNr{rrr)r[rq std_commandsis_stdrextra_commandsrrrrrs*     zDistribution.print_commandsc Csddl}|jj}i}x|D] }d||<qWg}x&|jD]}||s:||q:Wg}x\||D]P}|j|}|s||}y |j}Wnt k rd}YnX|||fqdW|S)a>Get a list of (command, description) tuples. The list is divided into "standard commands" (listed in distutils.command.__all__) and "extra commands" (mentioned in self.cmdclass, but not a standard command). The descriptions come from the command class attribute 'description'. rNrz(no description available)) rr^rr@rhrNr{rr*r) r[rqrrrrrvrr*rrrget_command_lists(        zDistribution.get_command_listcCsN|j}t|tsJ|dkrd}dd|dD}d|krD|dd||_|S)z9Return a list of packages from which commands are loaded.Nr5cSsg|]}|dkr|qS)r5)r)r1Zpkgrrrr3!sz5Distribution.get_command_packages..rzdistutils.commandr)rAr rrjinsert)r[Zpkgsrrrget_command_packagess  z!Distribution.get_command_packagesc Cs|j|}|r|Sx|D]}d||f}|}yt|tj|}Wntk r^wYnXyt||}Wn&tk rt d|||fYnX||j|<|SWt d|dS)aoReturn the class that implements the Distutils command named by 'command'. First we check the 'cmdclass' dictionary; if the command is mentioned there, we fetch the class object from the dictionary and return it. Otherwise we load the command module ("distutils.command." + command) and fetch the command class from the module. The loaded class is also stored in 'cmdclass' to speed future calls to 'get_command_class()'. Raises DistutilsModuleError if the expected module could not be found, or if that module does not define the expected class. z%s.%sz3invalid command '%s' (no class '%s' in module '%s')zinvalid command '%s'N) r@rNr __import__rSrw ImportErrorr?rr)r[r^rZpkgnameZ module_nameZ klass_namemodulerrrr's(   zDistribution.get_command_classcCsl|j|}|sh|rhtr&|d|||}||}|j|<d|j|<|j|}|rh||||S)aReturn the command object for 'command'. Normally this object is cached on a previous call to 'get_command_obj()'; if no command object for 'command' is in the cache, then we either create and return it (if 'create' is true) or return None. z.z1error in %s: command '%s' has no such option '%s')get_command_namerPr rirOZboolean_optionsrrr r r;rrVrr) r[rLZ option_dict command_namersourcerZ bool_optsZneg_optZ is_stringrrrrrhs>           z!Distribution._set_command_optionsrcCsddlm}t||s&|}||}n|}|js8|S|d|_d|j|<|||r|x| D]}| ||qhW|S)aReinitializes a command to the state it was in when first returned by 'get_command_obj()': ie., initialized but not yet finalized. This provides the opportunity to sneak option values in programmatically, overriding or supplementing user-supplied values from the config files and command line. You'll have to re-finalize the command object (by calling 'finalize_options()' or 'ensure_finalized()') before using it for real. 'command' should be a command name (string) or command object. If 'reinit_subcommands' is true, also reinitializes the command's sub-commands, as declared by the 'sub_commands' class attribute (if it has one). See the "install" command for an example. Only reinitializes the sub-commands that actually matter, ie. those whose test predicates return true. Returns the reinitialized command object. r)r) rrr rrZ finalizedZinitialize_optionsrMrZget_sub_commandsreinitialize_command)r[r^Zreinit_subcommandsrrsubrrrrs     z!Distribution.reinitialize_commandcCst||dS)N)r )r[rlevelrrrriszDistribution.announcecCsx|jD]}||qWdS)zRun each command that was seen on the setup script command line. Uses the list of commands found and cache of command objects created by 'get_command_obj()'. N)rl run_command)r[rrrr run_commandss zDistribution.run_commandscCsD|j|rdStd|||}||d|j|<dS)aDo whatever it takes to run a command (including nothing at all, if the command has already been run). Specifically: if we have already created and run the command named by 'command', return silently without doing anything. If the command named by 'command' doesn't even have a command object yet, create one. Then invoke 'run()' on that command object (or an existing one). Nz running %sr)rMrNr inforZensure_finalizedrun)r[r^rrrrrs   zDistribution.run_commandcCst|jp|jpgdkS)Nr)rrErF)r[rrrhas_pure_modulesszDistribution.has_pure_modulescCs|jot|jdkS)Nr)rIr)r[rrrhas_ext_modulesszDistribution.has_ext_modulescCs|jot|jdkS)Nr)rGr)r[rrrhas_c_librariesszDistribution.has_c_librariescCs|p|S)N)rr)r[rrr has_modulesszDistribution.has_modulescCs|jot|jdkS)Nr)rHr)r[rrr has_headersszDistribution.has_headerscCs|jot|jdkS)Nr)rJr)r[rrr has_scriptsszDistribution.has_scriptscCs|jot|jdkS)Nr)rKr)r[rrrhas_data_filesszDistribution.has_data_filescCs|o| o| S)N)rrr)r[rrris_pures zDistribution.is_pure)N)NNr5)N)r)N)r))r __module__ __qualname____doc__rrrr:rrdrPrpr~rrrrrZrrrrrrrrrrr INFOrirrrrrrrrrrrrrrr,s|     0 :C [  1(!" &  , ) rc@seZdZdZdZdBddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#ZeZd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#d@dAZ$dS)Cr<z]Dummy class to hold the distribution meta-data: name, version, author, and so forth. )r r!r$ author_emailr%maintainer_emailr'r(r*long_descriptionr-r+r#r&Z contact_emailr, download_urlr.r/r0NcCs|dk r|t|nfd|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)N) read_pkg_fileopenr r!r$rr%rr'r(r*rr-r+r,rr.r/r0)r[rurrrrd s&zDistributionMetadata.__init__cst|fdd}fdd}d}|d|_|d|_|d|_|d |_d |_|d |_d |_|d |_|d |_ dkr|d|_ nd |_ |d|_ |d|_dkr|d d|_ |d|_|d|_|dkr|d|_|d|_|d|_nd |_d |_d |_d S)z-Reads the metadata values from a file object.cs|}|dkrdS|S)NUNKNOWNr)r r)rrr _read_field(sz7DistributionMetadata.read_pkg_file.._read_fieldcs|d}|gkrdS|S)N)Zget_all)r values)rrr _read_list.s z6DistributionMetadata.read_pkg_file.._read_listzmetadata-versionr r!Zsummaryr$Nz author-emailz home-pager(z download-urlr*r-rplatformZ classifierz1.1r/r.r0)rr r!r*r$r%rrr'r(rrrjr-r+r,r/r.r0)r[filerrZmetadata_versionr)rrr$s:                 z"DistributionMetadata.read_pkg_filec Cs2ttj|dddd}||WdQRXdS)z7Write the PKG-INFO file into the release tree. zPKG-INFOwzUTF-8)encodingN)rrtrurywrite_pkg_file)r[Zbase_dirZpkg_inforrrwrite_pkg_infoXs z#DistributionMetadata.write_pkg_infocCsbd}|js"|js"|js"|js"|jr&d}|d||d||d||d||d| |d| |d | |d | |jr|d |jt |}|d |d |}|r|d|||d|||d|||d|||d|||d|dS)z9Write the PKG-INFO format data to a file object. z1.0z1.1zMetadata-Version: %s z Name: %s z Version: %s z Summary: %s zHome-page: %s z Author: %s zAuthor-email: %s z License: %s zDownload-URL: %s zDescription: %s rz Keywords: %s ZPlatformZ ClassifierZRequiresZProvidesZ ObsoletesN)r.r/r0r,rrUget_name get_versionget_descriptionget_url get_contactget_contact_email get_licenserget_long_descriptionry get_keywords _write_list get_platformsget_classifiers get_requires get_provides get_obsoletes)r[rr!Z long_descr-rrrr_s0  z#DistributionMetadata.write_pkg_filecCs$x|D]}|d||fqWdS)Nz%s: %s )rU)r[rr rrrrrrs z DistributionMetadata._write_listcCs |jpdS)Nr)r )r[rrrrszDistributionMetadata.get_namecCs |jpdS)Nz0.0.0)r!)r[rrrrsz DistributionMetadata.get_versioncCsd||fS)Nz%s-%s)rr)r[rrr get_fullnamesz!DistributionMetadata.get_fullnamecCs |jpdS)Nr)r$)r[rrr get_authorszDistributionMetadata.get_authorcCs |jpdS)Nr)r)r[rrrget_author_emailsz%DistributionMetadata.get_author_emailcCs |jpdS)Nr)r%)r[rrrget_maintainersz#DistributionMetadata.get_maintainercCs |jpdS)Nr)r)r[rrrget_maintainer_emailsz)DistributionMetadata.get_maintainer_emailcCs|jp|jpdS)Nr)r%r$)r[rrrrsz DistributionMetadata.get_contactcCs|jp|jpdS)Nr)rr)r[rrrrsz&DistributionMetadata.get_contact_emailcCs |jpdS)Nr)r')r[rrrrszDistributionMetadata.get_urlcCs |jpdS)Nr)r()r[rrrrsz DistributionMetadata.get_licensecCs |jpdS)Nr)r*)r[rrrrsz$DistributionMetadata.get_descriptioncCs |jpdS)Nr)r)r[rrrrsz)DistributionMetadata.get_long_descriptioncCs |jpgS)N)r-)r[rrrrsz!DistributionMetadata.get_keywordscCst|d|_dS)Nr-)rr-)r[rrrr set_keywordssz!DistributionMetadata.set_keywordscCs |jp dgS)Nr)r+)r[rrrrsz"DistributionMetadata.get_platformscCst|d|_dS)Nr+)rr+)r[rrrr set_platformssz"DistributionMetadata.set_platformscCs |jpgS)N)r,)r[rrrrsz$DistributionMetadata.get_classifierscCst|d|_dS)Nr,)rr,)r[rrrrset_classifierssz$DistributionMetadata.set_classifierscCs |jpdS)Nr)r)r[rrrget_download_urlsz%DistributionMetadata.get_download_urlcCs |jpgS)N)r/)r[rrrrsz!DistributionMetadata.get_requirescCs0ddl}x|D]}|j|qWt||_dS)Nr)distutils.versionpredicateversionpredicateVersionPredicaterr/)r[rrqrrrr set_requiress z!DistributionMetadata.set_requirescCs |jpgS)N)r.)r[rrrrsz!DistributionMetadata.get_providescCs:dd|D}x |D]}ddl}|j|qW||_dS)NcSsg|] }|qSr)r)r1rrrrr3sz5DistributionMetadata.set_provides..r)rrZsplit_provisionr.)r[rrrqrrr set_providess  z!DistributionMetadata.set_providescCs |jpgS)N)r0)r[rrrrsz"DistributionMetadata.get_obsoletescCs0ddl}x|D]}|j|qWt||_dS)Nr)rrrrr0)r[rrqrrrr set_obsoletess z"DistributionMetadata.set_obsoletes)N)%rrrrr>rdrrrrrrrrrrr rrrrZ get_licencerrrr rr rr r rrrrrrrrrrr<sD 4"r<cCs(g}x|D]}||ddq W|S)zConvert a 4-tuple 'help_options' list as found in various command classes to the 3-tuple form required by FancyGetopt. r)r{)r6Z new_optionsZ help_tuplerrrrs r)rrSrtreZemailrrQrZdistutils.errorsZdistutils.fancy_getoptrrZdistutils.utilrrrrqr Zdistutils.debugr compilerrrr<rrrrrs4      ZcPKr ][-,Q6Q6$__pycache__/cmd.cpython-37.opt-1.pycnu[B  fF@sbdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ dS)ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@s"eZdZdZgZddZddZddZdd Zd d Z dCddZ ddZ dDddZ ddZ dEddZdFddZddZdGddZdd Zd!d"Zd#d$Zd%d&ZdHd'd(ZdId*d+Zd,d-Zd.d/Zd0d1ZdJd2d3ZdKd5d6ZdLd7d8ZdMd9d:ZdNd;d<ZdOd=d>Z dPd?d@Z!dQdAdBZ"d S)RCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsbddlm}t||std|jtkr0td||_|d|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r2/opt/alt/python37/lib64/python3.7/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|d|_dS)N)rfinalize_options)rrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr d|}|j||tjd|d}x\|jD]R\}}}||}|ddkrp|dd}t||}|j|d||ftjdqDWdS) Nr) longopt_xlatezcommand options for '%s':)levelz =z%s = %s) Zdistutils.fancy_getoptr#get_command_nameannouncerINFOZ user_options translater)rheaderindentr#optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrruns z Command.runrcCst||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N)r)rmsgr$rrrr(szCommand.announcecCs&ddlm}|r"t|tjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr2printsysstdoutflush)rr1r2rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr-whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs||d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)r=)rr-r;rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||td|n6t|trTtdd|D}nd}|sltd||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdS)N)r r9).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r9r8resplitlistallr)rr-r<okrrrensure_string_lists   zCommand.ensure_string_listcCs6||||}|dk r2||s2td|||fdS)Nzerror in '%s' option: )r=r)rr-Ztesterr:Z error_fmtr;r<rrr_ensure_tested_stringszCommand._ensure_tested_stringcCs||tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rIospathisfile)rr-rrrensure_filenames zCommand.ensure_filenamecCs||tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rIrKrLisdir)rr-rrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrQr __name__)rrrrr' s zCommand.get_command_namecGsJ|j|}|x0|D](\}}t||dkrt||t||qWdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr!rr8)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs|j||}||S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrTr!)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|j||S)N)rreinitialize_command)rrVZreinit_subcommandsrrrrX0szCommand.reinitialize_commandcCs|j|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rrVrrrrY4szCommand.run_commandcCs6g}x,|jD]"\}}|dks$||r ||q W|S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCstd||dS)Nzwarning: %s: %s )rwarnr')rr1rrrr^Ksz Command.warncCstj||||jddS)N)r)rexecuter)rfuncargsr1r$rrrr_NszCommand.executecCstj|||jddS)N)r)rmkpathr)rnamemoderrrrcQszCommand.mkpathc Cstj|||||j ||jdS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.))r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrfTs  zCommand.copy_filec Cstj||||||j |jdS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. )r)r copy_treerr)rrgrhrirjZpreserve_symlinksr$rrrrl]s zCommand.copy_treecCstj|||jdS)z$Move a file respecting dry-run flag.)r)r move_filer)rsrcdstr$rrrrmfszCommand.move_filecCs ddlm}||||jddS)z2Spawn an external command respecting dry-run flag.r)spawn)rN)Zdistutils.spawnrpr)rcmdZ search_pathr$rprrrrpjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrrrsrrrrtos zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|d|f}|jsdt||rv| ||||n t |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r9rEtupler joinrrZ newer_groupr_rdebug)rZinfilesrhr`raZexec_msgZskip_msgr$rrr make_fileus  zCommand.make_file)Nr")r)N)N)N)r)r)Nr)rb)rrNr)rrrr)r)rr)NNNN)NNr)#rS __module__ __qualname____doc__rZrrr!rr r/r0r(r7r=r?rHrIrNrPr'rUrWrXrYr]r^r_rcrfrlrmrprtryrrrrr sF0              r )r|r4rKrCZdistutils.errorsrZ distutilsrrrrrrr rrrrs   PKr ]H((-__pycache__/fancy_getopt.cpython-37.opt-1.pycnu[B  fxE@sdZddlZddlZddlZddlZddlTdZedeZedeefZ e ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrdZx2dD]*ZedeedeeeeqWdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZd d d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZddZd"ddZd#ddZdS)$ FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsN||_i|_|jr|i|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr;/opt/alt/python37/lib64/python3.7/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs,|jx|jD]}||j|d<qWdS)Nr)rclearr)roptionrrrrQs  zFancyGetopt._build_indexcCs||_|dS)N)rr)rrrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|j|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs     zFancyGetopt.add_optioncCs ||jkS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)r)rrrrr has_optioncszFancyGetopt.has_optioncCs |tS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores.) translate longopt_xlate)rrrrr get_attr_namehszFancyGetopt.get_attr_namecCsRxL|D]@\}}||jkr.td|||f||jkr td|||fq WdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs||d||_dS)z'Set the aliases for this option parser.r N)r#r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs||d||_dS)zSet the negative aliases for this option parser. 'negative_alias' should be a dictionary mapping option names to option names, both the key and value must already be defined in the option table.znegative aliasN)r#r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|ji|_x|jD]}t|dkrH|\}}}d}n(t|dkrb|\}}}}ntd|ft|t rt|dkrt d||dkst|t rt|dkst d |||j|<|j ||d d kr|r|d }|dd }d|j |<nF|j |}|dk r@|j |r6t d ||f||jd <d|j |<|j|}|dk r|j ||j |krt d||ft|st d||||j|<|r&|j |||j|d<q&WdS)zPopulate the various data structures that keep tabs on the option table. Called by 'getopt()' before it can do anything worthwhile. rzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r r rrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchrr)rrlongshorthelpr-Zalias_torrr_grok_option_tables^                   zFancyGetopt._grok_option_tablec Csr|dkrtjdd}|dkr*t}d}nd}|d|j}yt|||j\}}Wn,tjk r}z t |Wdd}~XYnXx|D]\}}t |dkr|ddkr|j |d}n |dd}|j |} | r| }|j|s |j |} | r| }d}nd}|j|} |r<|j | dk rsB        zFancyGetopt.getoptcCs|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsvd}xV|jD]L}|d}|d}t|}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d |} |r|g} nd g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| d ||| dfn| d ||fn:d||f}| r:| d ||| dfn| d|x$| ddD]}| | |qVWqW| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr)r*r+Nr(Nr9zOption summary:r&z --%-*s %sz --%-*s z%s (-%s)z --%-*s)rr. wrap_textr)rheaderZmax_optrr5r6lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr7textZ opt_namesrrr generate_helpsF        zFancyGetopt.generate_helpcCs4|dkrtj}x ||D]}||dqWdS)N )r:stdoutrPwrite)rrLfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname____doc__rrrrrrr#r$r%r8r>rHrPrVrrrrrs  (  M = OrcCst|}|||||S)N)rr%r>)optionsZ negative_optrCrBparserrrr fancy_getoptos r]cCsi|]}dt|qS)r9)ord).0Z_wscharrrr usr`cCs"|dkr gSt||kr|gS|}|t}td|}dd|D}g}x|rg}d}xZ|rt|d}|||kr||d|d=||}q`|r|dddkr|d=Pq`W|r |dkr||dd||d|d|d<|dddkr |d=|d|qPW|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|] }|r|qSrr)r_Zchrrr szwrap_text..rr*r9)r. expandtabsrWS_TRANSresplitrr=)rOwidthZchunksrNZcur_lineZcur_lenrMrrrrKws:      rKcCs |tS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )rr)r"rrrtranslate_longoptsrhc@seZdZdZgfddZdS)r<z_Dummy class just used as a place to hold command-line option values as instance attributes.cCsx|D]}t||dqWdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rA)rr[r"rrrrs zOptionDummy.__init__N)rWrXrYrZrrrrrr<sr<__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %drQ)rZr:stringrer>Zdistutils.errorsZ longopt_patcompiler3Z neg_alias_rer1 maketransrrr]Z whitespacerdrKrhr<rWrOwprintr=rrrr s* T6   PKr ]#00__pycache__/cygwinccompiler.cpython-37.opt-2.pycnu[B YI~d^@@sddlZddlZddlZddlmZmZmZddlZddlm Z m Z ddl m Z ddl mZddlmZmZmZmZddlmZddlmZdd lmZd d ZGd d d e ZGdddeZdZdZdZddZ e!dZ"ddZ#ddZ$ddZ%dS)N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)NzMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s )sysversionfind ValueError)Zmsc_posZmsc_verr>/opt/alt/python37/lib64/python3.7/distutils/cygwinccompiler.py get_msvcr?s rc @sNeZdZdZdZdZdZdZdZdZ dd d Z d d Z dddZ dddZ d S)CygwinCCompilercygwinz.oz.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|tk rB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %s)compiler compiler_so compiler_cxx linker_exe linker_soz2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforcestatusZdetails shared_optionrrrr#ds<      zCygwinCCompiler.__init__c Cs|dks|dkrVy|dd|d|gWqtk rR}z t|Wdd}~XYqXnNy"||j||d|g|Wn*tk r}z t|Wdd}~XYnXdS)Nz.rcz.resZwindresz-iz-o)Zspawnr r r)r.objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsTt| p g} t|pg}t|p&g}||j|dk r||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}x|D]}| |qW| t ||fd||jd kr| d |g| d |gn | || s,| d t||||||||d| | | | | dS) Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr-Z EXECUTABLEr+ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r.Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr7Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrDs:          zCygwinCCompiler.linkcCs|dkr d}g}x|D]}tjtj|\}}||jddgkrTtd||f|rdtj|}|dkr|tj||||j q|tj|||j qW|S)NrHz.rcz.resz"unknown file type '%s' (from '%s'))z.resz.rc) r=r>r@normcaseZsrc_extensionsr rArCrB obj_extension)r.Zsource_filenamesZ strip_dirrEZ obj_namesZsrc_namebaser6rrrobject_filenamess      z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrH)__name__ __module__ __qualname__r*rJZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr#r9rDrLrrrrrYs ; Krc@seZdZdZdddZdS)Mingw32CCompilerZmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rHz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %s)rrr r!r") rr#r)r( is_cygwingccr r,r+r-r)r.r/r0r1r3Z entry_pointrrrr#s&   zMingw32CCompiler.__init__N)rrr)rMrNrOr*r#rrrrrPsrPokznot okZ uncertainc Csddlm}dtjkrtdfS|}y@t|}z(d|krJtd|fStd|fSWd| XWn0t k r}zt d||j ffSd}~XYnXdS) Nr) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %s) distutilsrSrrr%Zget_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rSfnZconfig_hexcrrrr$Hs    r$s(\d+\.\d+(\.\d+)*)cCsl|d}t|dkrdSt|dtdj}z |}Wd|Xt|}|dkrZdSt | d S)NrT)shellstdout) splitrrrr_rVrX RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rkcCsdddg}tdd|DS)Nzgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rk).0rfrrr sz get_versions..)tuple)Zcommandsrrrr's r'cCstddg}|dS)Nrz -dumpmachinescygwin)rstripendswith)rirrrrQs rQ)&r=rr; subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rTr Zdistutils.versionrZdistutils.spawnrrrrPr%rWrZr$compilerbrkr'rQrrrr0s.     ;1+ PKr ]Ҳv)__pycache__/dir_util.cpython-37.opt-1.pycnu[B  fb@spdZddlZddlZddlmZmZddlmZiadddZ dd d Z dd d Z d dZ dddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logc Csnt|tstd|ftj|}g}tj|s<|dkr@|Sttj |rV|Stj |\}}|g}x4|r|rtj|stj |\}}| d|qnWx|D]}tj ||}tj |} t| rq|dkrt d||s^yt||WnVtk rR} z6| jtjkr,tj|sBtd|| jdfWdd} ~ XYnX||dt| <qW|S) aCreate a directory and any missing ancestor directories. If the directory already exists (or if 'name' is the empty string, which means the current directory, which of course exists), then do nothing. Raise DistutilsFileError if unable to create some directory along the way (eg. some sub-path exists, but is a file rather than a directory). If 'verbose' is true, print a one-line summary of each mkdir to stdout. Return the list of directories actually created. z(mkpath: 'name' must be a string (got %r)rrz creating %szcould not create '%s': %sN) isinstancestrrospathnormpathisdir _path_createdgetabspathsplitinsertjoinrinfomkdirOSErrorerrnoZEEXISTrargsappend) namemodeverbosedry_runZ created_dirsheadtailZtailsdZabs_headexcr#7/opt/alt/python37/lib64/python3.7/distutils/dir_util.pymkpaths>       &  r%c CsVt}x(|D] }|tj|tj|q Wx t|D]}t||||dq:WdS)aCreate all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. )rrN)setaddr r rdirnamesortedr%)Zbase_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs   r-c Csdddlm}|s(tj|s(td|yt|} Wn>tk rt} z |rRg} ntd|| jfWdd} ~ XYnX|st ||dg} x| D]} tj || } tj || }| drq|rtj | rt | }|dkrtd |||st||| |qtj| r<| t| |||||||d q|| ||||||d | |qW| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sN)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr.nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCsjxTt|D]F}tj||}tj|rBtj|sBt||q |tj|fq W|tj |fdS)zHelper for remove_tree().N) r r/r rrr2_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=c Cs|dkrtd||rdSg}t||xp|D]h}y2|d|dtj|d}|tkrdt|=Wq0tk r}ztd||Wdd}~XYq0Xq0WdS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees    rDcCs6tj|\}}|ddtjkr2||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)__doc__r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$s  ?  D PKr ]kn?z##%__pycache__/util.cpython-37.opt-2.pycnu[B YI~dO@sddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZddZd d Zd d Zdad dZddZd'ddZdaaaddZddZd(ddZddZd)ddZdd Zd*d!d"Zd+d#d$Z Gd%d&d&Z!dS),N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc Cstjdkr"dtjkrdStjSdtjkr6tjdStjdksJttdsPtjSt\}}}}}| dd}| d d }| dd }|dd d krd||fS|dd dkr|ddkrd}dt |dd|ddf}ddd}|d|tj 7}n|dddkr(d|||fS|dddkrfd}t dt j}||}|r|}n>|dddkrddl}ddl} || j|||\}}}d |||fS)!NntZamd64z win-amd64Z_PYTHON_HOST_PLATFORMposixuname/ _-Zlinuxz%s-%sZsunosr5Zsolarisz%d.%sZ32bitZ64bit)ilz.%sZaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr replaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigZget_platform_osxZ sysconfigZget_config_vars) ZosnameZhostreleasermachineZbitnessZrel_remr& distutilsr+3/opt/alt/python37/lib64/python3.7/distutils/util.py get_platformsD          r-cCs~tjdkr|S|s|S|ddkr.td||ddkrFtd||d}xd|krf|dqRW|srtjStjj|S)Nr rzpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)rsep ValueErrorsplitremovecurdirpathjoin)pathnamepathsr+r+r, convert_path`s       r9cCstjdkrc CsxtrdStjdkrZdtjkrZy$ddl}|tdtjd<Wnttfk rXYnXdtjkrpt tjd<dadS)NrHOMErrZPLATr:) _environ_checkedrrrpwdgetpwuidgetuid ImportErrorKeyErrorr-)rAr+r+r, check_environs   rFc CsTt|fdd}ytd||Stk rN}ztd|Wdd}~XYnXdS)NcSs,|d}||krt||Stj|SdS)Nr:)r%strrr)r$ local_varsZvar_namer+r+r,_substs  zsubst_vars.._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s')rFr!subrEr1)srHrIvarr+r+r, subst_varss  rMerror: cCs |t|S)N)rG)excprefixr+r+r,grok_environment_errorsrQcCs(tdtjatdatdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r!r"string whitespace _wordchars_re _squote_re _dquote_rer+r+r+r, _init_regexs rWcCstdkrt|}g}d}x`|rt||}|}|t|kr\||d|P||tjkr||d|||d }d}n||dkr|d|||dd}|d}n||dkrt ||}n*||dkrt ||}nt d|||dkr"t d|||\}}|d|||d|d||d}|d}|t|kr"||Pq"W|S) Nrr;r:'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rTrWstripr$endlenappendrRrSlstriprUrV RuntimeErrorr1span)rKZwordsposr)r[Zbegr+r+r, split_quoteds@         ,   rbcCsP|dkr6d|j|f}|dddkr6|ddd}t||sL||dS)Nz%s%rz,)r))__name__rinfo)funcargsmsgverbosedry_runr+r+r,executes  rlcCs2|}|dkrdS|dkr dStd|fdS)N)yZyesttrueZon1r:)nnofZfalseZoff0rzinvalid truth value %r)rr1)valr+r+r, strtobool&s rvr:cCsRddl}tjrtd|dkr*do(|dk}|s8yddlm} | d\} } Wn.tk rzddlm} d| d} } YnXt d| |s| dk rt | d} n t | d} | d | d tt|d | d |||||f| tjg}|||| t||d tt j| fd| |d nddlm}x|D]}|dddkrfqL|dkr|dkr~dn|}tjj||d}n tj|}|}|r|dt||krtd||f|t|d}|rt j ||}t j !|}|rL|st"||r:t d|||sH||||nt#d||qLWdS)Nrzbyte-compiling is disabled.F)mkstempz.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) )rkz removing %s)r"r ) optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)$ subprocessrdont_write_bytecoderZtempfilerwrDrxrrfrfdopenopenwriter6mapreprclose executableextendZ"_optim_args_from_interpreter_flagsr]rrlr3 py_compiler" importlibutilcache_from_sourcer\r1r5basenamerdebug)Zpy_filesoptimizeforcerPZbase_dirrjrkZdirectr|rwZ script_fdZ script_namerxZscriptcmdr"fileoptcfiledfileZ cfile_baser+r+r, byte_compile6sl$                rcCs|d}d}||S)N z )r2r6)headerlinesr0r+r+r, rfc822_escapes rcCsV|sdSddlm}m}Gddd|}|dkr8|d}|||d}|j|dddS) Nr)RefactoringToolget_fixers_from_packagec@s$eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj|f|dS)N)rerror)selfrirhkwr+r+r, log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dS)N)rrf)rrirhr+r+r, log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dS)N)rr)rrirhr+r+r, log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)re __module__ __qualname__rrrr+r+r+r,DistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrr+r+r,run_2to3s  rc Csddlm}ddlm}ddlm}|} t} t|z | Wdt| X| j | j dd<|rx(| D]} | } | sqt| | qtWg} xV| j D]L} tj|| }|tj||tj|| |dd}|dr| |qWtdd| D|||d | S) Nr)mkpath) copy_file)FileListr:)updatecSsg|]}|dr|qS)z.py)rendswith).0fnr+r+r, sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrrgetcwdchdirfindallZallfilesr splitlinesrZZprocess_template_liner5r6dirnamer]r)srcdesttemplaterrrrrrZfilelistr4lineZcopiedfilenameZoutnameZresr+r+r,copydir_run_2to3s4        rc@s eZdZdZdZdZddZdS) Mixin2to3NcCst||j|j|jS)N)rrrr)rrr+r+r,r"szMixin2to3.run_2to3)rerrrrrrr+r+r+r,rsr)rN)Nrr)rrNNr:rN)NNN)NNNN)"rr!importlib.utilrrRrZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrr*rrr-r9r>r@rFrMrQrTrUrVrWrbrlrvrrrrrr+r+r+r,s>     N  =    PKr ]2-__pycache__/archive_util.cpython-37.opt-1.pycnu[B  fF!@sDdZddlZddlmZddlZy ddlZWnek rDdZYnXddlmZddl m Z ddl m Z ddl mZyddlmZWnek rdZYnXydd lmZWnek rdZYnXd d Zd d Zd#ddZd$ddZedgdfedgdfedgdfedgdfedgdfegdfdZdd Zd%d!d"ZdS)&zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamcCsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns a gid, given a group name.N)rKeyError)nameresultr ;/opt/alt/python37/lib64/python3.7/distutils/archive_util.py_get_gids  rcCsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns an uid, given a user name.Nr )rr )r r r r r_get_uid+s  rgzipcs.dddddd}dddd d }|d k r:||kr:td |d } |dkrZ| ||d7} ttj| |ddd l} t dt t fdd} |s| | d||} z| j || dWd | X|dkr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. Zgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrNzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr)dry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer%rtarZcompressed_namecmdr )rrrrr make_tarball7s<          r2c Cs|d}ttj||dtdkrp|r.d}nd}ytd|||g|dWn tk rjtd|YnXn:td|||sytj |d tj d }Wn&t k rtj |d tj d }YnX|tj krtjtj|d }|||td |xt|D]\}} } x>| D]6} tjtj|| d }|||td |qWxJ| D]B} tjtj|| }tj|rV|||td |qVWqW||S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.zip)rNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr"r#r$zipfilerrrr&ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfiler)) r-r.r/rZ zip_filenameZ zipoptionsr3r#dirpathZdirnames filenamesr r r r make_zipfilesJ          r?)rrzgzip'ed tar-file)rrzbzip2'ed tar-file)rrzxz'ed tar-file)rrzcompressed tar file)rNzuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr0r3cCsx|D]}|tkr|SqWdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss rBc Cst}|dk r6td|tj|}|s6t||dkrDtj}d|i} y t|} Wn t k rxt d|YnX| d} x| dD]\} } | | | <qW|dkr|| d<|| d <z| ||f| }Wd|dk rtd |t|X|S) aCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. Nzchanging into '%s'rzunknown archive format '%s'rr3rrzchanging back to '%s') r"getcwdrdebugr#abspathchdirr7r@r r )r-rAZroot_dirr.r/rrrZsave_cwdkwargsZ format_infofuncargvalfilenamer r r make_archives2       rM)rrrNN)rr)NNrrNN)__doc__r"warningsrr+r5 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr2r?r@rBrMr r r rsB            G =      PKr ]UQ+__pycache__/versionpredicate.cpython-37.pycnu[B  f @sdZddlZddlZddlZedejZedZedZ ddZ ej ej ej ejejejdZGd d d Zdad d ZdS) zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t|}|std||\}}|tj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predZrescompZverStrr ?/opt/alt/python37/lib64/python3.7/distutils/versionpredicate.pysplitUps    r )z>=z!=c@s(eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|}|stdt|}|s.td||\|_}|}|rt|}|sbtd||d}dd|dD|_|jstd|ng|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r ).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$      zVersionPredicate.__init__cCs8|jr.dd|jD}|jdd|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs*x$|jD]\}}t|||sdSqWdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr"r$r r r r rs?rcCsdtdkrtdtja|}t|}|s8td||dpDd}|rVtj |}|d|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r2)r(r,Zdistutils.versionroperatorr-r.rrrr ltleeqgtgener#rr+r2r r r r s   nPKr ]]88-__pycache__/msvccompiler.cpython-37.opt-1.pycnu[B  f \ @sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZy,ddlZdZeZejZejZejZejZWnhek ry4ddlZddlZdZeZejZejZejZejZWnek redYnXYnXerejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkre+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnyt||}Wntk r"dSXg}d}x||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rXrjZ_setup_compilerextendrgrfr/rMr-abspath _c_extensions_cpp_extensionsrqspawnrarrrsdirnamerbrlrprer_)r)Zsourcesrur'Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrvZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWsj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)ruz/OUT:zskipping %s (up-to-date)) rXrj_fix_object_argslibrary_filename _need_linkr|rZrrr r~) r)rZoutput_libnamerur~ target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}|dk rLtjtj|\}}tj tj|d||}|d|| r^| |dd<| rn|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnXn td|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:z/OUT:rz/IMPLIB:zskipping %s (up-to-date))rXrjrZ _fix_lib_argswarnstrr rMr-rerrZ EXECUTABLErirhrrlrpr}rrxZmkpathr|r`rrr r~)r)Z target_descrrruZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr~rrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksV       zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:r)r)dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr[)r\rMr-reryisfiler]rD)r)Zexer1fnrrrr^5s   zMSVCCompiler.find_exex86cCstsgS|d}|jdkr,d|j|jf}nd|j|f}xHtD]@}t||}|r@|jdkrr|j||dS||dSq@W|jdkrx,tD]$}t|d|jdk r|d PqWgS) zGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. z dirsrRz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr[r;z%s\6.0NzIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrSrUr,r rVr6rDr)r)r-platformrrrrrrrcKs(        zMSVCCompiler.get_msvc_pathscCs6|dkr|d}n ||}|r2d|tj|<dS)zSet environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. rZZlibraryr[N)rcrerMr])r)rr1rrrrdos   zMSVCCompiler.set_path_env_var)rrr)rrk)NNNrNNN)NrN) NNNNNrNNNN)r)r)r7r8r9__doc__Z compiler_typeZ executablesrzr{rqrsrorrrtZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr+rjrwrrrrrrrr^rcrdrrrrrQsP  B  V  F  $rQg @z3Importing new compiler from distutils.msvc9compiler)rQ)r&).rrArMZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr,rr rr&rHrLrPrQr~ZOldMSVCCompilerZdistutils.msvc9compilerrrrrs^      - 9   PKr ] l !__pycache__/config.cpython-37.pycnu[B  f@s<dZddlZddlmZddlmZdZGdddeZdS)zdistutils.pypirc Provides the PyPIRCCommand class, the base class for the command classes that uses .pypirc in the distutils.command package. N)RawConfigParser)CommandzE[distutils] index-servers = pypi [pypi] username:%s password:%s c@sheZdZdZdZdZdZdZdddefdgZd gZ d d Z d d Z ddZ ddZ ddZddZdS) PyPIRCCommandz;Base command that knows how to handle the .pypirc file zhttps://upload.pypi.org/legacy/pypiNz repository=rzurl of repository [default: %s])z show-responseNz&display full response text from serverz show-responsecCstjtjddS)zReturns rc file path.~z.pypirc)ospathjoin expanduser)selfr 5/opt/alt/python37/lib64/python3.7/distutils/config.py _get_rc_file&szPyPIRCCommand._get_rc_filec CsH|}tt|tjtjBdd}|t||fWdQRXdS)zCreates a default .pypirc file.iwN)rrfdopenopenO_CREATO_WRONLYwriteDEFAULT_PYPIRC)r usernamepasswordrcfr r r _store_pypirc*s zPyPIRCCommand._store_pypircc Cs|}tj|r|d||jp.|j}t}||| }d|krF| dd}dd| dD}|gkrd|krdg}niSx|D]}d|i}| |d |d <xHd |jfd |j fd fD].\} } | || r| || || <q| || <qW|dkr"||jdfkr"|j|d <|S|d|ks<|d |kr|SqWnRd |krd }| |d rp| |d }n|j}| |d | |d|||j dSiS)zReads the .pypirc file.zUsing PyPI login from %sZ distutilsz index-serverscSs g|]}|dkr|qS))strip).0serverr r r =sz.PyPIRCCommand._read_pypirc.. rrr repositoryrealm)rNz server-loginr)rrr"rr#)rrr existsZannouncer"DEFAULT_REPOSITORYrreadsectionsgetsplit DEFAULT_REALMZ has_option) r rr"Zconfigr'Z index_serversZ_serversrZcurrentkeydefaultr r r _read_pypirc0sV               zPyPIRCCommand._read_pypirccCs8ddl}|dd}||ddd}||S)z%Read and decode a PyPI HTTP response.rNz content-typez text/plaincharsetascii)cgiZ getheaderZ parse_headerr(r&decode)r Zresponser1Z content_typeencodingr r r_read_pypi_responseps z!PyPIRCCommand._read_pypi_responsecCsd|_d|_d|_dS)zInitialize options.Nr)r"r#Z show_response)r r r rinitialize_optionswsz PyPIRCCommand.initialize_optionscCs(|jdkr|j|_|jdkr$|j|_dS)zFinalizes options.N)r"r%r#r*)r r r rfinalize_options}s  zPyPIRCCommand.finalize_options)__name__ __module__ __qualname____doc__r%r*r"r#Z user_optionsZboolean_optionsrrr-r4r5r6r r r rrs @r)r:rZ configparserrZ distutils.cmdrrrr r r rs   PKr ]{k&k&#__pycache__/filelist.cpython-37.pycnu[B  f 2@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejfd d Zd d ZdddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@s|eZdZdZdddZddZejfddZd d Z d d Z d dZ ddZ ddZ ddZddZdddZdddZdS) FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr 7/opt/alt/python37/lib64/python3.7/distutils/filelist.py__init__szFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCsddlm}|rt|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrr r r r )s zFileList.debug_printcCs|j|dS)N)rappend)r itemr r r r3szFileList.appendcCs|j|dS)N)rextend)r itemsr r r r6szFileList.extendcCs@tttjj|j}g|_x |D]}|jtjj|q WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s z FileList.sortcCsDx>tt|jdddD]$}|j||j|dkr|j|=qWdS)Nr)rangelenr)r ir r r remove_duplicatesCszFileList.remove_duplicatescCs|}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSr )r).0wr r r Wsz1FileList._parse_template_line..r )zrecursive-includezrecursive-excludez,'%s' expects

...cSsg|] }t|qSr )r)r)r*r r r r+]s)graftprunez#'%s' expects a single zunknown action '%s')rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs*         zFileList._parse_template_linecCsX||\}}}}|dkrZ|dd|x&|D]}|j|dds4td|q4Wn|dkr|dd|x&|D]}|j|dds|td |q|Wn|d kr|d d|x&|D]}|j|d dstd |qWnj|dkr8|dd|x*|D]"}|j|d dstd|qWn|dkr|d|d|fx|D]$}|j||ds`td||q`Wn|dkr|d|d|fx|D]$}|j||dstd||qWnx|dkr|d||jd|dsTtd|nB|dkrH|d||jd|dsTtd|n td|dS)Nr&zinclude  r )anchorz%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r-zgraft z+warning: no directories found matching '%s'r.zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r3r rinclude_patternrr exclude_patternr)r r/r0r1rr2patternr r r process_template_linehsf           zFileList.process_template_liner rcCspd}t||||}|d|j|jdkr4|x6|jD],}||r<|d||j|d}qr?r$r r r r8s zFileList.exclude_pattern)NN)r Nr)r Nr)__name__ __module__ __qualname____doc__rrrcurdirrr rrrr%r3r:r7r8r r r r rs     L ,rcCs&ddtj|ddD}ttjj|S)z% Find all files under 'path' css,|]$\}}}|D]}tj||VqqdS)N)rrr)r)basedirsrfiler r r sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsr r r _find_all_simplesrNcCs6t|}|tjkr.tjtjj|d}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )start) rNrrE functoolspartialrrelpathrlist)rrZmake_relr r r rs   rcCs8t|}tj}tjdkrd}d|}td||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?s  i  PKr ])__pycache__/dep_util.cpython-37.opt-2.pycnu[B YI~d @s2ddlZddlmZddZddZd dd ZdS) N)DistutilsFileErrorcCs`tj|s tdtj|tj|s0dSddlm}t||}t||}||kS)Nzfile '%s' does not existr)ST_MTIME)ospathexistsrabspathstatr)sourcetargetrZmtime1Zmtime2r 7/opt/alt/python37/lib64/python3.7/distutils/dep_util.pynewer s   rcCslt|t|krtdg}g}xBtt|D]2}t||||r.||||||q.W||fS)Nz+'sources' and 'targets' must be same length)len ValueErrorrangerappend)sourcesZtargetsZ n_sourcesZ n_targetsir r r newer_pairwise srerrorcCstj|sdSddlm}t||}xX|D]L}tj|sb|dkrJn|dkrVq0n |dkrbdSt||}||kr0dSq0WdSdS)Nrr)rrignorer)rrrr r)rr missingrZ target_mtimer source_mtimer r r newer_group6s     r)r)rZdistutils.errorsrrrrr r r r s PKr ]m m )__pycache__/dir_util.cpython-37.opt-2.pycnu[B YI~db@slddlZddlZddlmZmZddlmZiadddZddd Z dd d Z d d Z dddZ ddZ dS)N)DistutilsFileErrorDistutilsInternalError)logc Csnt|tstd|ftj|}g}tj|s<|dkr@|Sttj |rV|Stj |\}}|g}x4|r|rtj|stj |\}}| d|qnWx|D]}tj ||}tj |} t| rq|dkrt d||s^yt||WnVtk rR} z6| jtjkr,tj|sBtd|| jdfWdd} ~ XYnX||dt| <qW|S)Nz(mkpath: 'name' must be a string (got %r)rrz creating %szcould not create '%s': %s) isinstancestrrospathnormpathisdir _path_createdgetabspathsplitinsertjoinrinfomkdirOSErrorerrnoZEEXISTrargsappend) namemodeverbosedry_runZ created_dirsheadtailZtailsdZabs_headexcr#7/opt/alt/python37/lib64/python3.7/distutils/dir_util.pymkpaths>       &  r%c CsVt}x(|D] }|tj|tj|q Wx t|D]}t||||dq:WdS)N)rr)setaddr r rdirnamesortedr%)Zbase_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs   r-c Csdddlm}|s(tj|s(td|yt|} Wn>tk rt} z |rRg} ntd|| jfWdd} ~ XYnX|st ||dg} x| D]} tj || } tj || }| drq|rtj | rt | }|dkrtd|||st||| |qtj| r<| t| |||||||d q|| ||||||d | |qW| S) Nr) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr.nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCsjxTt|D]F}tj||}tj|rBtj|sBt||q |tj|fq W|tj |fdS)N) r r/r rrr2_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=c Cs|dkrtd||rdSg}t||xp|D]h}y2|d|dtj|d}|tkrdt|=Wq0tk r}ztd||Wdd}~XYq0Xq0WdS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees    rDcCs6tj|\}}|ddtjkr2||dd}|S)Nrr)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$s  ?  D PKr ]}&__pycache__/debug.cpython-37.opt-2.pycnu[B YI~d@sddlZejdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr4/opt/alt/python37/lib64/python3.7/distutils/debug.pysPKr ]z"__pycache__/version.cpython-37.pycnu[B  f90@s>dZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@sJeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r||dS)N)parse)selfvstringr6/opt/alt/python37/lib64/python3.7/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs||}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__)N) r __module__ __qualname____doc__rr rrrrrrrrrrs rc@s<eZdZdZedejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|j|}|std||ddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s')rr) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr majorminorZpatchr'Zprerelease_numrrrrs  zStrictVersion.parsecCsb|jddkr*dtt|jdd}ndtt|j}|jr^||jdt|jd}|S)Nrr.r)r&joinr$r r')rrrrr__str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|jsB|jsBdS|jrR|jsRdS|jsb|jrbdS|jr|jr|j|jkr~dS|j|jkrdSdSn dstddS)NrrFznever get here) isinstancer rr&r'AssertionError)rrrrrr s&         zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIrrr,r rrrrr]s # rc@sHeZdZdZedejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r||dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd|j|D}x:t|D].\}}yt|||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|qS)r*r).0xrrr 8sz&LooseVersion.parse..)r component_resplit enumerater%r!r&)rrZ componentsiobjrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr,CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrr-r)r.r r4r&)rrrrrr Ks    zLooseVersion._cmp)N) r rrrr0r1r2r8rrr,r r rrrrr4 s r4)rr0rrr4rrrrs >/PKr ]0x(::__pycache__/util.cpython-37.pycnu[B  fO@sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZdaddZddZd(ddZdaaaddZddZd)ddZddZd*ddZd d!Zd+d"d#Z d,d$d%Z!Gd&d'd'Z"dS)-zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc Cstjdkr"dtjkrdStjSdtjkr6tjdStjdksJttdsPtjSt\}}}}}| dd}| d d }| dd }|d d dkrd||fS|d d dkr|ddkrd}dt |dd|dd f}ddd}|d|tj 7}n|d ddkr(d|||fS|d ddkrfd}t dt j}||}|r|}n>|d dd krdd l}dd l} || j|||\}}}d!|||fS)"aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntZamd64z win-amd64Z_PYTHON_HOST_PLATFORMposixuname/ _-NZlinuxz%s-%sZsunosr5Zsolarisz%d.%sZ32bitZ64bit)ilz.%sZaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr replaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigZget_platform_osxZ sysconfigZget_config_vars) ZosnameZhostreleasermachineZbitnessZrel_remr& distutilsr+3/opt/alt/python37/lib64/python3.7/distutils/util.py get_platformsD          r-cCs~tjdkr|S|s|S|ddkr.td||ddkrFtd||d}xd|krf|dqRW|srtjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. r rzpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)rsep ValueErrorsplitremovecurdirpathjoin)pathnamepathsr+r+r, convert_path`s       r9cCstjdkrc CsxtrdStjdkrZdtjkrZy$ddl}|tdtjd<Wnttfk rXYnXdtjkrpt tjd<dadS)aLEnsure that 'os.environ' has all the environment variables we guarantee that users can use in config files, command-line options, etc. Currently this includes: HOME - user's home directory (Unix only) PLAT - description of the current platform, including hardware and OS (see 'get_platform()') NrHOMErrZPLATr:) _environ_checkedrrrpwdgetpwuidgetuid ImportErrorKeyErrorr-)rAr+r+r, check_environs   rFc CsTt|fdd}ytd||Stk rN}ztd|Wdd}~XYnXdS)aPerform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. cSs,|d}||krt||Stj|SdS)Nr:)r%strrr)r$ local_varsZvar_namer+r+r,_substs  zsubst_vars.._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)rFr!subrEr1)srHrIvarr+r+r, subst_varss  rMerror: cCs |t|S)N)rG)excprefixr+r+r,grok_environment_errorsrQcCs(tdtjatdatdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r!r"string whitespace _wordchars_re _squote_re _dquote_rer+r+r+r, _init_regexs rWcCstdkrt|}g}d}x`|rt||}|}|t|kr\||d|P||tjkr||d|||d }d}n||dkr|d|||dd}|d}n||dkrt ||}n*||dkrt ||}nt d|||dkr"t d|||\}}|d|||d|d||d}|d }|t|kr"||Pq"W|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. Nrr;r:'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rTrWstripr$endlenappendrRrSlstriprUrV RuntimeErrorr1span)rKZwordsposr)r[Zbegr+r+r, split_quoteds@         ,   rbcCsP|dkr6d|j|f}|dddkr6|ddd}t||sL||dS)aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rz,)r))__name__rinfo)funcargsmsgverbosedry_runr+r+r,executes  rlcCs2|}|dkrdS|dkr dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. )yZyesttrueZon1r:)nZnofZfalseZoff0rzinvalid truth value %rN)rr1)valr+r+r, strtobool&s rur:cCsRddl}tjrtd|dkr*do(|dk}|s8yddlm} | d\} } Wn.tk rzddlm} d| d} } YnXt d| |s| dk rt | d } n t | d } | d | d tt|d | d |||||f| tjg}|||| t||dtt j| fd| |dnddlm}x|D]}|dddkrfqL|dkr|dkr~dn|}tjj||d}n tj|}|}|r|dt||krtd||f|t|d}|rt j ||}t j !|}|rL|st"||r:t d|||sH||||nt#d||qLWdS)a~Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. rNzbyte-compiling is disabled.T)mkstempz.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) )rkz removing %s)r"r ) optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)$ subprocessrdont_write_bytecoderZtempfilervrDrwrrfrfdopenopenwriter6mapreprclose executableextendZ"_optim_args_from_interpreter_flagsr]rrlr3 py_compiler" importlibutilcache_from_sourcer\r1r5basenamerdebug)Zpy_filesoptimizeZforcerPZbase_dirrjrkZdirectr{rvZ script_fdZ script_namerwZscriptcmdr"fileZoptcfiledfileZ cfile_baser+r+r, byte_compile6sl$                rcCs|d}d}||S)zReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline.  z )r2r6)headerlinesr0r+r+r, rfc822_escapes rcCsV|sdSddlm}m}Gddd|}|dkr8|d}|||d}|j|dd dS) a Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.Nr)RefactoringToolget_fixers_from_packagec@s$eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj|f|dS)N)rerror)selfrirhkwr+r+r, log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dS)N)rrf)rrirhr+r+r, log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dS)N)rr)rrirhr+r+r, log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)re __module__ __qualname__rrrr+r+r+r,DistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrr+r+r,run_2to3s  rc Csddlm}ddlm}ddlm}|} t} t|z | Wdt| X| j | j dd<|rx(| D]} | } | sqt| | qtWg} xV| j D]L} tj|| }|tj||tj|| |dd}|dr| |qWtdd | D|||d | S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNr:)updatecSsg|]}|dr|qS)z.py)rendswith).0fnr+r+r, sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrrgetcwdchdirfindallZallfilesr splitlinesrZZprocess_template_liner5r6dirnamer]r)srcdesttemplaterrrrrrZfilelistr4lineZcopiedfilenameZoutnameZresr+r+r,copydir_run_2to3s4        rc@s$eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jS)N)rrrr)rrr+r+r,r"szMixin2to3.run_2to3)rerr__doc__rrrrr+r+r+r,rs r)rN)Nrr)rrNNr:rN)NNN)NNNN)#rrr!importlib.utilrrRrZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrr*rrr-r9r>r@rFrMrQrTrUrVrWrbrlrurrrrrr+r+r+r,s@     N  =    PKr ](-)__pycache__/filelist.cpython-37.opt-2.pycnu[B YI~d 2@sddlZddlZddlZddlZddlmZddlmZmZddl m Z GdddZ ddZ ej fd d Zd d ZdddZdS)N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@sxeZdZdddZddZejfddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdddZdddZdS)FileListNcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr 7/opt/alt/python37/lib64/python3.7/distutils/filelist.py__init__szFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)r msgrr r r r )s zFileList.debug_printcCs|j|dS)N)rappend)r itemr r r r3szFileList.appendcCs|j|dS)N)rextend)r itemsr r r r6szFileList.extendcCs@tttjj|j}g|_x |D]}|jtjj|q WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s z FileList.sortcCsDx>tt|jdddD]$}|j||j|dkr|j|=qWdS)Nr)rangelenr)r ir r r remove_duplicatesCszFileList.remove_duplicatescCs|}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSr )r).0wr r r Wsz1FileList._parse_template_line..r )zrecursive-includezrecursive-excludez,'%s' expects ...cSsg|] }t|qSr )r)r)r*r r r r+]s)graftprunez#'%s' expects a single zunknown action '%s')rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs*         zFileList._parse_template_linecCsX||\}}}}|dkrZ|dd|x&|D]}|j|dds4td|q4Wn|dkr|dd|x&|D]}|j|dds|td |q|Wn|d kr|d d|x&|D]}|j|d dstd |qWnj|dkr8|dd|x*|D]"}|j|d dstd|qWn|dkr|d|d|fx|D]$}|j||ds`td||q`Wn|dkr|d|d|fx|D]$}|j||dstd||qWnx|dkr|d||jd|dsTtd|nB|dkrH|d||jd|dsTtd|n td|dS)Nr&zinclude  r )anchorz%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r-zgraft z+warning: no directories found matching '%s'r.zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r3r rinclude_patternrr exclude_patternr)r r/r0r1rr2patternr r r process_template_linehsf           zFileList.process_template_liner rcCspd}t||||}|d|j|jdkr4|x6|jD],}||r<|d||j|d}qr?r$r r r r8s zFileList.exclude_pattern)NN)r Nr)r Nr)__name__ __module__ __qualname__rrrcurdirrr rrrr%r3r:r7r8r r r r rs    L ,rcCs&ddtj|ddD}ttjj|S)Ncss,|]$\}}}|D]}tj||VqqdS)N)rrr)r)basedirsrfiler r r sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rresultsr r r _find_all_simplesrNcCs6t|}|tjkr.tjtjj|d}t||}t|S)N)start) rNrrD functoolspartialrrelpathrlist)rrZmake_relr r r rs   rcCs8t|}tj}tjdkrd}d|}td||}|S)N\z\\\\z\1[^%s]z((?t|}nd}|dk rt|}|t|t|t|}tj} tjdkrd} |t|t|t|}d||| ||f}n|rd||t|df}t|S)N_rTz\\z%s\A%s%s.*%s%sz%s\A%s) isinstancestrrXcompilerZ partitionr#rrW) r9r5r6r=rOr[endr?Z prefix_rerWr r r r;%s(   r;)r Nr)rrXrUrPZdistutils.utilrZdistutils.errorsrrZ distutilsrrrNrDrrZr;r r r r s  i  PKr ]{  $__pycache__/file_util.cpython-37.pycnu[B  f@sZdZddlZddlmZddlmZddddZdd d Zdd dZdddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)Nhardsym@c Csd}d}zvyt|d}Wn4tk rN}ztd||jfWdd}~XYnXtj|ryt|Wn4tk r}ztd||jfWdd}~XYnXyt|d}Wn4tk r}ztd||jfWdd}~XYnXxy||}Wn6tk r*}ztd||jfWdd}~XYnX|s4Py| |Wqtk rx}ztd||jfWdd}~XYqXqWWd|r| |r| XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdsteZbufr8/opt/alt/python37/lib64/python3.7/distutils/file_util.py_copy_file_contentssF $ """*rcCs ddlm}ddlm} m} m} m} tj |s %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater,verbosedry_runrrrrrdiractionstrrr copy_fileCsT!               r6c Csddlm}m}m}m}m}ddl} |dkr:td|||rB|S||sVt d|||rrt j |||}n||rt d||f|||st d||fd } yt ||WnPtk r } z0| j\} } | | jkrd } nt d ||| fWdd} ~ XYnX| rt|||d yt |Wnhtk r} zH| j\} } yt |Wntk rpYnXt d |||| fWdd} ~ XYnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr!r"r$r%Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r1zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr!r"r$r%errnorr*rr r r#renamer argsZEXDEVr6r)rrr1r2rr!r"r$r%r7Zcopy_itrZnummsgrrr move_filesR       " "r;cCs:t|d}z x|D]}||dqWWd|XdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r rr)filenamecontentsflinerrr write_files   rB)r)rrrNrr)rr) __doc__r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrrs   3 c =PKr ]šn < < 1__pycache__/versionpredicate.cpython-37.opt-2.pycnu[B YI~d @s~ddlZddlZddlZedejZedZedZddZ ej ej ej ej ejejdZGdd d Zdad d ZdS) Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t|}|std||\}}|tj|fS)Nz"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predZrescompZverStrr ?/opt/alt/python37/lib64/python3.7/distutils/versionpredicate.pysplitUps    r )z>=z!=c@s$eZdZddZddZddZdS)VersionPredicatecCs|}|stdt|}|s.td||\|_}|}|rt|}|sbtd||d}dd|dD|_|jstd|ng|_dS) Nzempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r ).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %r) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$      zVersionPredicate.__init__cCs8|jr.dd|jD}|jdd|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs*x$|jD]\}}t|||sdSqWdS)NFT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname__rr"r$r r r r rsArcCsdtdkrtdtja|}t|}|s8td||dpDd}|rVtj |}|d|fS)Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r1)r+Zdistutils.versionroperatorr,r-rrrr ltleeqgtgener#rr*r1r r r r s   nPKr ]x,,.__pycache__/_msvccompiler.cpython-37.opt-2.pycnu[B YI~dM@sddlZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z ddlmZddlmZddlmZddZd d Zd d Zd dZdddZdddZGddde ZdS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc CsytjtjdtjtjBd}Wntk r<tddSXd}d}|xtD]}yt ||\}}}Wntk rPYnX|rT|tj krTt j |rTytt|}Wnttfk rwTYnX|dkrT||krT||}}qTWWdQRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registered)NNr)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivZvc_dirZvtversionrpsz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r&zError executing {}cSs$i|]\}}}|r|r||qSr)r8)r9rr5r:rrr r;scss|]}|dVqdS)=N) partition)r9linerrr sz_get_vc_env..)rgetenvr)itemsr7rr+r,formatZSTDOUTdecoder/r erroroutputcmd splitlines)r4r6r5outexcenvrrr _get_vc_envns$     rMcCsN|stdtj}x2|D]*}tjtj||}tj|r|SqW|S)Nr)rrBsplitpathseprr-abspathr3)Zexepathspfnrrr _find_exes   rTZx86Z x86_amd64)win32z win-amd64c seZdZdZiZdgZdddgZdgZdgZeeeeZ dZ d Z d Z d Z d ZZd Zd'ddZd(ddZd)ddZd*ddZd+ddZd,ddZfddZdd Zd!d"Zd#d$Zd-d%d&ZZS). MSVCCompilerZmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runforcerrr rWszMSVCCompiler.__init__NcCs|dkrt}|tkr(tdttt|}t|}|sDtd|dd|_|jt j }t d||_ t d||_ t d||_t d||_t d ||_t d ||_x2|d dt j D]}|r||t jqWx2|d dt j D]}|r||t jqWd|_d dddddg|_d dddddg|_d ddg}d dddg}|d |_|d!|_|d"|_|d#|_||_||_tj df|jtj df|jtj df|jtj!df|jtj!df|jtj!df|jtj"df|jtj"df|jtj"df|ji |_#d|_$dS)$Nz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)r_)r_)r`rarb)r`rarb)%r PLAT_TO_VCVARSrrDtuplerMr*_pathsrNrrOrTcclinkerr^rcmcmtZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionscompile_options_debugZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflagsrY)rZrXr4Zvc_envrQdirldflagsZ ldflags_debugrrr initializesX                     zMSVCCompiler.initializer]csTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }j|qSr) obj_extension)r9ext)rZrr r;sz1MSVCCompiler.object_filenames..csi|] }j|qSr) res_extension)r9rt)rZrr r;sr]cstj|\}}r"tj|}n2tj|\}}|tjjtjjfrT|dd}ytj||St k rt d |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithrlaltsepr- LookupErrorrrD)rRbasertr5)ext_map output_dir strip_dirrr make_out_path#s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)rZZsource_filenamesrrrr)r~rrZrr object_filenamess zMSVCCompiler.object_filenamesc  Cs|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jd}x| D]}y| |\}}Wntk rwlYnX|rtj |}||j krd|}nD||j krd|}d}n*||j krB|}d|}y||jg| ||gWqltk r<}z t|Wdd}~XYqlXqln||jkrtj |}tj |}y\||jd|d||gtj tj |\}}tj ||d }||jd||gWqltk r}z t|Wdd}~XYqlXqlntd |||jg| | }|r$|d |||d |||y||Wqltk r}z t|Wdd}~XYqlXqlW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rYrrZ_setup_compileappendextendrnrmKeyErrorrrrP _c_extensions_cpp_extensionsrspawnrhrrrdirnamerirwrxr-rDrf)rZZsourcesrZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrtZ input_optZ output_optmsgZh_dirZrc_dirr}r5Zrc_fileargsrrr compile9sn               zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy,td|jd|| |jg|Wqt k r}z t |Wdd}~XYqXn td|dS)N)rz/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rYrr_fix_object_argslibrary_filename _need_linkr rr^r-rrr) rZrZoutput_libnamerr target_langoutput_filenameZlib_argsrrrr create_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|j || f}dd|pgD}||||d|g}tj |d} |dk r tj tj|\}}tj | ||}|d|| r| |dd<| r.|| tj tj|}||y,td|jd |||jg|Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r)r9Zsymrrr sz%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rYrrrZ _fix_lib_argswarnstrrrrr-rrorrwrxrrrrPZmkpathr rrgrrr)rZZ target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsrqZ export_optsZld_argsZdll_nameZdll_extZ implib_filerrrr linksL       zMSVCCompiler.linkc s4td}z|jtjd<t|S|tjd<XdS)Nr)rrBrer)superr)rZrHZold_path) __class__rr rs    zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r)rZrprrr library_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)r)rZrprrr runtime_library_dir_optionsz'MSVCCompiler.runtime_library_dir_optioncCs ||S)N)r)rZr^rrr library_optionszMSVCCompiler.library_optioncCs`|r|d|g}n|g}xB|D]6}x0|D](}tj|||}tj|r(|Sq(WqWdSdS)NZ_d)rrr-rr3)rZdirsr^rZ try_namesrpnameZlibfilerrr find_library_files    zMSVCCompiler.find_library_file)rrr)N)rr])NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesrrrrrrursZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrWrrrrrrrrrrr __classcell__rr)rr rVsJ   P  [  8 rV)N)rZshutilstatr+rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r!r2r7rMrTrcrVrrrr s"   " PKr ]Ҳv#__pycache__/dir_util.cpython-37.pycnu[B  fb@spdZddlZddlZddlmZmZddlmZiadddZ dd d Z dd d Z d dZ dddZ ddZdS)zWdistutils.dir_util Utility functions for manipulating directories and directory trees.N)DistutilsFileErrorDistutilsInternalError)logc Csnt|tstd|ftj|}g}tj|s<|dkr@|Sttj |rV|Stj |\}}|g}x4|r|rtj|stj |\}}| d|qnWx|D]}tj ||}tj |} t| rq|dkrt d||s^yt||WnVtk rR} z6| jtjkr,tj|sBtd|| jdfWdd} ~ XYnX||dt| <qW|S) aCreate a directory and any missing ancestor directories. If the directory already exists (or if 'name' is the empty string, which means the current directory, which of course exists), then do nothing. Raise DistutilsFileError if unable to create some directory along the way (eg. some sub-path exists, but is a file rather than a directory). If 'verbose' is true, print a one-line summary of each mkdir to stdout. Return the list of directories actually created. z(mkpath: 'name' must be a string (got %r)rrz creating %szcould not create '%s': %sN) isinstancestrrospathnormpathisdir _path_createdgetabspathsplitinsertjoinrinfomkdirOSErrorerrnoZEEXISTrargsappend) namemodeverbosedry_runZ created_dirsheadtailZtailsdZabs_headexcr#7/opt/alt/python37/lib64/python3.7/distutils/dir_util.pymkpaths>       &  r%c CsVt}x(|D] }|tj|tj|q Wx t|D]}t||||dq:WdS)aCreate all the empty directories under 'base_dir' needed to put 'files' there. 'base_dir' is just the name of a directory which doesn't necessarily exist yet; 'files' is a list of filenames to be interpreted relative to 'base_dir'. 'base_dir' + the directory portion of every file in 'files' will be created if it doesn't already exist. 'mode', 'verbose' and 'dry_run' flags are as for 'mkpath()'. )rrN)setaddr r rdirnamesortedr%)Zbase_dirfilesrrrZneed_dirfiledirr#r#r$ create_treePs   r-c Csdddlm}|s(tj|s(td|yt|} Wn>tk rt} z |rRg} ntd|| jfWdd} ~ XYnX|st ||dg} x| D]} tj || } tj || }| drq|rtj | rt | }|dkrtd |||st||| |qtj| r<| t| |||||||d q|| ||||||d | |qW| S) aCopy an entire directory tree 'src' to a new location 'dst'. Both 'src' and 'dst' must be directory names. If 'src' is not a directory, raise DistutilsFileError. If 'dst' does not exist, it is created with 'mkpath()'. The end result of the copy is that every file in 'src' is copied to 'dst', and directories under 'src' are recursively copied to 'dst'. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by 'update' or 'dry_run': it is simply the list of all files under 'src', with the names changed to be under 'dst'. 'preserve_mode' and 'preserve_times' are the same as for 'copy_file'; note that they only apply to regular files, not to directories. If 'preserve_symlinks' is true, symlinks will be copied as symlinks (on platforms that support them!); otherwise (the default), the destination of the symlink will be copied. 'update' and 'verbose' are the same as for 'copy_file'. r) copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %sN)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrlistdirrstrerrorr%r startswithislinkreadlinkrrsymlinkrextend copy_tree)srcdstZ preserve_modeZpreserve_timesZpreserve_symlinksupdaterrr.nameseZoutputsnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCsjxTt|D]F}tj||}tj|rBtj|sBt||q |tj|fq W|tj |fdS)zHelper for remove_tree().N) r r/r rrr2_build_cmdtuplerremovermdir)r cmdtuplesfZreal_fr#r#r$r=s  r=c Cs|dkrtd||rdSg}t||xp|D]h}y2|d|dtj|d}|tkrdt|=Wq0tk r}ztd||Wdd}~XYq0Xq0WdS)zRecursively remove an entire directory tree. Any errors are ignored (apart from being reported to stdout if 'verbose' is true). rz'removing '%s' (and everything under it)Nrzerror removing %s: %s) rrr=r r rrrwarn)Z directoryrrr@cmdrr"r#r#r$ remove_trees    rDcCs6tj|\}}|ddtjkr2||dd}|S)zTake the full path 'path', and make it a relative path. This is useful to make 'path' the second argument to os.path.join(). rrN)r r splitdrivesep)r Zdriver#r#r$ensure_relativesrG)rrr)rrr)rrrrrr)rr)__doc__r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$s  ?  D PKr ]{  *__pycache__/file_util.cpython-37.opt-1.pycnu[B  f@sZdZddlZddlmZddlmZddddZdd d Zdd dZdddZ ddZ dS)zFdistutils.file_util Utility functions for operating on single files. N)DistutilsFileError)logZcopyingz hard linkingzsymbolically linking)Nhardsym@c Csd}d}zvyt|d}Wn4tk rN}ztd||jfWdd}~XYnXtj|ryt|Wn4tk r}ztd||jfWdd}~XYnXyt|d}Wn4tk r}ztd||jfWdd}~XYnXxy||}Wn6tk r*}ztd||jfWdd}~XYnX|s4Py| |Wqtk rx}ztd||jfWdd}~XYqXqWWd|r| |r| XdS) a5Copy the file 'src' to 'dst'; both must be filenames. Any error opening either file, reading from 'src', or writing to 'dst', raises DistutilsFileError. Data is read/written in chunks of 'buffer_size' bytes (default 16k). No attempt is made to handle anything apart from regular files. Nrbzcould not open '%s': %szcould not delete '%s': %swbzcould not create '%s': %szcould not read from '%s': %szcould not write to '%s': %s) openOSErrorrstrerrorospathexistsunlinkreadwriteclose)srcdst buffer_sizeZfsrcZfdsteZbufr8/opt/alt/python37/lib64/python3.7/distutils/file_util.py_copy_file_contentssF $ """*rcCs ddlm}ddlm} m} m} m} tj |s %srr)Zdistutils.dep_utilrstatrrrrr r isfilerisdirjoinbasenamedirnamerdebug _copy_actionKeyError ValueErrorinforsamefilelinkr symlinkrutimechmod)rrZ preserve_modeZpreserve_timesupdater,verbosedry_runrrrrrdiractionstrrr copy_fileCsT!               r6c Csddlm}m}m}m}m}ddl} |dkr:td|||rB|S||sVt d|||rrt j |||}n||rt d||f|||st d||fd } yt ||WnPtk r } z0| j\} } | | jkrd } nt d ||| fWdd} ~ XYnX| rt|||d yt |Wnhtk r} zH| j\} } yt |Wntk rpYnXt d |||| fWdd} ~ XYnX|S)a%Move a file 'src' to 'dst'. If 'dst' is a directory, the file will be moved into it with the same name; otherwise, 'src' is just renamed to 'dst'. Return the new full name of the file. Handles cross-device moves on Unix using 'copy_file()'. What about other systems??? r)rr!r"r$r%Nrzmoving %s -> %sz#can't move '%s': not a regular filez0can't move '%s': destination '%s' already existsz2can't move '%s': destination '%s' not a valid pathFTzcouldn't move '%s' to '%s': %s)r1zAcouldn't move '%s' to '%s' by copy/delete: delete '%s' failed: %s)Zos.pathrr!r"r$r%errnorr*rr r r#renamer argsZEXDEVr6r)rrr1r2rr!r"r$r%r7Zcopy_itrZnummsgrrr move_filesR       " "r;cCs:t|d}z x|D]}||dqWWd|XdS)z{Create a file with the specified name and write 'contents' (a sequence of strings without line terminators) to it. w N)r rr)filenamecontentsflinerrr write_files   rB)r)rrrNrr)rr) __doc__r Zdistutils.errorsrZ distutilsrr'rr6r;rBrrrrs   3 c =PKr ]DS *__pycache__/text_file.cpython-37.opt-2.pycnu[B YI~d0@s"ddlZddlZGdddZdS)Nc@speZdZddddddddZdddZdd Zd d Zdd d ZdddZdddZ ddZ ddZ ddZ dS)TextFilerstrict)strip_comments skip_blanks lstrip_ws rstrip_ws join_lines collapse_joinerrorsNcKs|dkr|dkrtdx>|jD]0}||krBt||||q$t|||j|q$Wx&|D]}||jkrbtd|qbW|dkr||n||_||_d|_g|_ dS)Nz7you must supply either or both of 'filename' and 'file'zinvalid TextFile option '%s'r) RuntimeErrordefault_optionskeyssetattrKeyErroropenfilenamefile current_linelinebuf)selfrroptionsoptr8/opt/alt/python37/lib64/python3.7/distutils/text_file.py__init__Ns  zTextFile.__init__cCs&||_tj|jd|jd|_d|_dS)Nr)r r)riorr rr)rrrrrrosz TextFile.opencCs$|j}d|_d|_d|_|dS)N)rrrclose)rrrrrrvs zTextFile.closecCsjg}|dkr|j}||jdt|ttfrD|dt|n|d||t|d|S)Nz, z lines %d-%d: z line %d: )rappendr isinstancelisttuplestrjoin)rmsglineZoutmsgrrr gen_errorszTextFile.gen_errorcCstd|||dS)Nzerror: ) ValueErrorr()rr&r'rrrerrorszTextFile.errorcCs tjd|||ddS)Nz warning:  )sysstderrwriter()rr&r'rrrwarnsz TextFile.warncCs|jr|jd}|jd=|Sd}x|j}|dkr:d}|jr|r|d}|dkrXnX|dksp||ddkr|ddkrdpd}|d||}|dkrq$n |dd}|jr"|r"|dkr|d |S|j r| }||}t |j t r|j dd|j d<n|j |j dg|_ n:|dkr0dSt |j t rP|j dd|_ n |j d|_ |jrv|jrv|}n"|jr| }n|jr|}|dks|dkr|jrq$|jr|ddkr|dd}q$|d dd kr|dd d}q$|SdS) Nr#rr\r+z\#z2continuation line immediately precedes end-of-filez\ )rrreadlinerfindstripreplacer r/r lstripr!rr"rrrstripr)rr'Z buildup_lineposZeolrrrr4sf           zTextFile.readlinecCs,g}x"|}|dkr|S||qWdS)N)r4r )rlinesr'rrr readliness zTextFile.readlinescCs|j|dS)N)rr )rr'rrr unreadlineszTextFile.unreadline)NN)N)N)N) __name__ __module__ __qualname__r rrrr(r*r/r4r<r=rrrrr s ; !  x r)r,rrrrrrsPKr ]2'__pycache__/archive_util.cpython-37.pycnu[B  fF!@sDdZddlZddlmZddlZy ddlZWnek rDdZYnXddlmZddl m Z ddl m Z ddl mZyddlmZWnek rdZYnXydd lmZWnek rdZYnXd d Zd d Zd#ddZd$ddZedgdfedgdfedgdfedgdfedgdfegdfdZdd Zd%d!d"ZdS)&zodistutils.archive_util Utility functions for creating archive files (tarballs, zip files, that sort of thing).N)warn)DistutilsExecError)spawn)mkpath)log)getpwnam)getgrnamcCsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns a gid, given a group name.N)rKeyError)nameresultr ;/opt/alt/python37/lib64/python3.7/distutils/archive_util.py_get_gids  rcCsNtdks|dkrdSy t|}Wntk r8d}YnX|dk rJ|dSdS)z"Returns an uid, given a user name.Nr )rr )r r r r r_get_uid+s  rgzipcs.dddddd}dddd d }|d k r:||kr:td |d } |dkrZ| ||d7} ttj| |ddd l} t dt t fdd} |s| | d||} z| j || dWd | X|dkr*tdt| ||} tjdkr|| | g}n |d| g}t||d| S| S)a=Create a (possibly compressed) tar file from all the files under 'base_dir'. 'compress' must be "gzip" (the default), "bzip2", "xz", "compress", or None. ("compress" will be deprecated in Python 3.2) 'owner' and 'group' can be used to define an owner and a group for the archive that is being built. If not provided, the current owner and group will be used. The output tar file will be named 'base_dir' + ".tar", possibly plus the appropriate compression extension (".gz", ".bz2", ".xz" or ".Z"). Returns the output filename. Zgzbz2xz)rbzip2rNcompressz.gzz.bz2z.xzz.Z)rrrrNzKbad value for 'compress': must be None, 'gzip', 'bzip2', 'xz' or 'compress'z.tarr)dry_runrzCreating tar archivecs,dk r|_|_dk r(|_|_|S)N)gidZgnameuiduname)Ztarinfo)rgroupownerrr r _set_uid_gidasz"make_tarball.._set_uid_gidzw|%s)filterz'compress' will be deprecated.Zwin32z-f)keys ValueErrorgetrospathdirnametarfilerinforropenaddcloserPendingDeprecationWarningsysplatformr) base_namebase_dirrverboserrrZtar_compressionZ compress_extZ archive_namer%rtarZcompressed_namecmdr )rrrrr make_tarball7s<          r2c Cs|d}ttj||dtdkrp|r.d}nd}ytd|||g|dWn tk rjtd|YnXn:td|||sytj |d tj d }Wn&t k rtj |d tj d }YnX|tj krtjtj|d }|||td |xt|D]\}} } x>| D]6} tjtj|| d }|||td |qWxJ| D]B} tjtj|| }tj|rV|||td |qVWqW||S) avCreate a zip file from all the files under 'base_dir'. The output zip file will be named 'base_name' + ".zip". Uses either the "zipfile" Python module (if available) or the InfoZIP "zip" utility (if installed and found on the default search path). If neither tool is available, raises DistutilsExecError. Returns the name of the output zip file. z.zip)rNz-rz-rqzipzkunable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utilityz#creating '%s' and adding '%s' to itw)Z compressionrz adding '%s')rr"r#r$zipfilerrrr&ZZipFileZ ZIP_DEFLATED RuntimeErrorZ ZIP_STOREDcurdirnormpathjoinwritewalkisfiler)) r-r.r/rZ zip_filenameZ zipoptionsr3r#dirpathZdirnames filenamesr r r r make_zipfilesJ          r?)rrzgzip'ed tar-file)rrzbzip2'ed tar-file)rrzxz'ed tar-file)rrzcompressed tar file)rNzuncompressed tar filezZIP file)ZgztarZbztarZxztarZztarr0r3cCsx|D]}|tkr|SqWdS)zqReturns the first format from the 'format' list that is unknown. If all formats are known, returns None N)ARCHIVE_FORMATS)Zformatsformatr r rcheck_archive_formatss rBc Cst}|dk r6td|tj|}|s6t||dkrDtj}d|i} y t|} Wn t k rxt d|YnX| d} x| dD]\} } | | | <qW|dkr|| d<|| d <z| ||f| }Wd|dk rtd |t|X|S) aCreate an archive file (eg. zip or tar). 'base_name' is the name of the file to create, minus any format-specific extension; 'format' is the archive format: one of "zip", "tar", "gztar", "bztar", "xztar", or "ztar". 'root_dir' is a directory that will be the root directory of the archive; ie. we typically chdir into 'root_dir' before creating the archive. 'base_dir' is the directory where we start archiving from; ie. 'base_dir' will be the common prefix of all files and directories in the archive. 'root_dir' and 'base_dir' both default to the current directory. Returns the name of the archive file. 'owner' and 'group' are used when creating a tar archive. By default, uses the current owner and group. Nzchanging into '%s'rzunknown archive format '%s'rr3rrzchanging back to '%s') r"getcwdrdebugr#abspathchdirr7r@r r )r-rAZroot_dirr.r/rrrZsave_cwdkwargsZ format_infofuncargvalfilenamer r r make_archives2       rM)rrrNN)rr)NNrrNN)__doc__r"warningsrr+r5 ImportErrorZdistutils.errorsrZdistutils.spawnrZdistutils.dir_utilrZ distutilsrpwdrZgrprrrr2r?r@rBrMr r r rsB            G =      PKr ]4z)__pycache__/__init__.cpython-37.opt-1.pycnu[B  f@s&dZddlZejdejdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr7/opt/alt/python37/lib64/python3.7/distutils/__init__.py sPKr ]Rd .__pycache__/core.cpython-37.pycnu[B  f"@sdZddlZddlZddlmZddlTddlmZddlm Z ddl m Z ddl m Z d Zd d Zdadad Zd ZddZdddZdS)a#distutils.core The only module that needs to be imported to use the Distutils; provides the 'setup' function (which is to be called from the setup script). Also indirectly provides the Distribution and Command classes, although they are really defined in distutils.dist and distutils.cmd. N)DEBUG)*) Distribution)Command) PyPIRCCommand) Extensionzusage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: %(script)s --help [cmd1 cmd2 ...] or: %(script)s --help-commands or: %(script)s cmd --help cCstj|}ttS)N)ospathbasenameUSAGEvars) script_nameZscriptr3/opt/alt/python37/lib64/python3.7/distutils/core.py gen_usage s r) distclassr script_argsZoptionsnameversionZauthorZ author_emailZ maintainerZmaintainer_emailZurllicenseZ descriptionZlong_descriptionkeywordsZ platformsZ classifiersZ download_urlZrequiresZprovidesZ obsoletes)rZsourcesZ include_dirsZ define_macrosZ undef_macrosZ library_dirsZ librariesZruntime_library_dirsZ extra_objectsZextra_compile_argsZextra_link_argsZ swig_optsZexport_symbolsZdependsZlanguagec Ks|d}|r|d=nt}d|kr8tjtjd|d<d|krRtjdd|d<y||a}WnLtk r}z.d|krt d|nt d |d|fWdd}~XYnXt d kr|S| t rt d |t d kr|Sy |}Wn:tk r*}zt t|jd |Wdd}~XYnXt rBt d|t dkrP|S|ry |Wntk rt dYntk r}z.t rtjd|fnt d|fWdd}~XYnBttfk r }zt rnt dt|Wdd}~XYnX|S)aThe gateway to the Distutils: do everything your setup script needs to do, in a highly flexible and user-driven way. Briefly: create a Distribution instance; find and parse config files; parse the command line; run each Distutils command found there, customized by the options supplied to 'setup()' (as keyword arguments), in config files, and on the command line. The Distribution instance might be an instance of a class supplied via the 'distclass' keyword argument to 'setup'; if no such class is supplied, then the Distribution class (in dist.py) is instantiated. All other arguments to 'setup' (except for 'cmdclass') are used to set attributes of the Distribution instance. The 'cmdclass' argument, if supplied, is a dictionary mapping command names to command classes. Each command encountered on the command line will be turned into a command class, which is in turn instantiated; any class found in 'cmdclass' is used in place of the default, which is (for command 'foo_bar') class 'foo_bar' in module 'distutils.command.foo_bar'. The command class must provide a 'user_options' attribute which is a list of option specifiers for 'distutils.fancy_getopt'. Any command-line options between the current and the next command are used to set attributes of the current command object. When the entire command-line has been successfully parsed, calls the 'run()' method on each command object in turn. This method will be driven entirely by the Distribution object (which each command object has a reference to, thanks to its constructor), and the command-specific options that became attributes of each command object. rr rrNrzerror in setup command: %szerror in %s setup command: %sinitz%options (after parsing config files):configz error: %sz%options (after parsing command line): commandlineZ interruptedz error: %s z error: %szerror: )getrrr r sysargv_setup_distributionZDistutilsSetupError SystemExit_setup_stop_afterZparse_config_filesrprintZdump_option_dictsZparse_command_lineZDistutilsArgErrorrr Z run_commandsKeyboardInterruptOSErrorstderrwriteZDistutilsErrorZCCompilerErrorstr)ZattrsklassZdistmsgokexcrrrsetup9s`% " (   "r+runc Cs|dkrtd|f|atj}d|i}yZzH|tjd<|dk rP|tjdd<t|d}t||WdQRXWd|t_daXWntk rYnXt dkrt d|t S) a.Run a setup script in a somewhat controlled environment, and return the Distribution instance that drives things. This is useful if you need to find out the distribution meta-data (passed as keyword args from 'script' to 'setup()', or the contents of the config files or command-line. 'script_name' is a file that will be read and run with 'exec()'; 'sys.argv[0]' will be replaced with 'script' for the duration of the call. 'script_args' is a list of strings; if supplied, 'sys.argv[1:]' will be replaced by 'script_args' for the duration of the call. 'stop_after' tells 'setup()' when to stop processing; possible values: init stop after the Distribution instance has been created and populated with the keyword arguments to 'setup()' config stop after config files have been parsed (and their data stored in the Distribution instance) commandline stop after the command-line ('sys.argv[1:]' or 'script_args') have been parsed (and the data stored in the Distribution) run [default] stop after all commands have been run (the same as if 'setup()' had been called in the usual way Returns the Distribution instance, which provides all information used to drive the Distutils. )rrrr,z"invalid value for 'stop_after': %r__file__rNrrbzZ'distutils.core.setup()' was never called -- perhaps '%s' is not a Distutils setup script?) ValueErrorr rrcopyopenexecreadrr RuntimeError)r rZ stop_afterZ save_argvgfrrr run_setups(    r7)Nr,)__doc__rrZdistutils.debugrZdistutils.errorsZdistutils.distrZ distutils.cmdrZdistutils.configrZdistutils.extensionrr rr rZsetup_keywordsZextension_keywordsr+r7rrrrs       qPKr ]@|% % '__pycache__/errors.cpython-37.opt-2.pycnu[B YI~d @s4GdddeZGdddeZGdddeZGdddeZGdd d eZGd d d eZGd d d eZGdddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGd d!d!eZGd"d#d#eZGd$d%d%eZd&S)'c@s eZdZdS)DistutilsErrorN)__name__ __module__ __qualname__rr5/opt/alt/python37/lib64/python3.7/distutils/errors.pyr src@s eZdZdS)DistutilsModuleErrorN)rrrrrrrrsrc@s eZdZdS)DistutilsClassErrorN)rrrrrrrrsrc@s eZdZdS)DistutilsGetoptErrorN)rrrrrrrr sr c@s eZdZdS)DistutilsArgErrorN)rrrrrrrr sr c@s eZdZdS)DistutilsFileErrorN)rrrrrrrr $sr c@s eZdZdS)DistutilsOptionErrorN)rrrrrrrr *sr c@s eZdZdS)DistutilsSetupErrorN)rrrrrrrr 3sr c@s eZdZdS)DistutilsPlatformErrorN)rrrrrrrr8src@s eZdZdS)DistutilsExecErrorN)rrrrrrrr>src@s eZdZdS)DistutilsInternalErrorN)rrrrrrrrCsrc@s eZdZdS)DistutilsTemplateErrorN)rrrrrrrrHsrc@s eZdZdS)DistutilsByteCompileErrorN)rrrrrrrrKsrc@s eZdZdS)CCompilerErrorN)rrrrrrrrOsrc@s eZdZdS)PreprocessErrorN)rrrrrrrrRsrc@s eZdZdS) CompileErrorN)rrrrrrrrUsrc@s eZdZdS)LibErrorN)rrrrrrrrXsrc@s eZdZdS) LinkErrorN)rrrrrrrr\src@s eZdZdS)UnknownFileErrorN)rrrrrrrr`srN) Exceptionrrrr r r r r rrrrrrrrrrrrrrr s$ PKr ] *__pycache__/extension.cpython-37.opt-1.pycnu[B  f)@s.dZddlZddlZGdddZddZdS)zmdistutils.extension Provides the Extension class, used to describe C/C++ extension modules in setup scripts.Nc@s"eZdZdZdddZddZdS) Extensiona Just a collection of attributes that describes an extension module and everything needed to build it (hopefully in a portable way, but there are hooks that let you be as unportable as you need). Instance attributes: name : string the full name of the extension, including any packages -- ie. *not* a filename or pathname, but Python dotted name sources : [string] list of source filenames, relative to the distribution root (where the setup script lives), in Unix form (slash-separated) for portability. Source files may be C, C++, SWIG (.i), platform-specific resource files, or whatever else is recognized by the "build_ext" command as source for a Python extension. include_dirs : [string] list of directories to search for C/C++ header files (in Unix form for portability) define_macros : [(name : string, value : string|None)] list of macros to define; each macro is defined using a 2-tuple, where 'value' is either the string to define it to or None to define it without a particular value (equivalent of "#define FOO" in source or -DFOO on Unix C compiler command line) undef_macros : [string] list of macros to undefine explicitly library_dirs : [string] list of directories to search for C/C++ libraries at link time libraries : [string] list of library names (not filenames or paths) to link against runtime_library_dirs : [string] list of directories to search for C/C++ libraries at run time (for shared extensions, this is when the extension is loaded) extra_objects : [string] list of extra files to link with (eg. object files not implied by 'sources', static library that must be explicitly specified, binary resource files, etc.) extra_compile_args : [string] any extra platform- and compiler-specific information to use when compiling the source files in 'sources'. For platforms and compilers where "command line" makes sense, this is typically a list of command-line arguments, but for other platforms it could be anything. extra_link_args : [string] any extra platform- and compiler-specific information to use when linking object files together to create the extension (or to create a new static Python interpreter). Similar interpretation as for 'extra_compile_args'. export_symbols : [string] list of symbols to be exported from a shared extension. Not used on all platforms, and not generally necessary for Python extensions, which typically export exactly one symbol: "init" + extension_name. swig_opts : [string] any extra options to pass to SWIG if a source file has the .i extension. depends : [string] list of files that the extension depends on language : string extension language (i.e. "c", "c++", "objc"). Will be detected from the source extensions if not provided. optional : boolean specifies that a build failure in the extension should not abort the build process, but simply not install the failing extension. NcKst|tstdt|tr.tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}dt|}d |}t|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr8/opt/alt/python37/lib64/python3.7/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)rZoptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwZoptionsmsgrrr__init__Vs4              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r$rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r)r*__doc__r'r,rrrrrs ? !rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}zhg}x\|} | dkrfP| | rrqT| d| dkrd krnn| d | qT|| |} || } | d} t | g} d} x| ddD]}| dk r| |d} qt j|d}|dd }|d d}|d kr8| j |q|d krP| j |q|dkr|d}|dkr| j |dfn$| j |d|||d dfq|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr0| j} q|dkrB| j} q|dkrT| j} q|dkrx| j ||s| j} q|dkr| j |q| d|qW| | qTWWd|X|S)z3Reads a Setup file and returns Extension instances.r)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_wsN*z'%s' lines not handled yet)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr/r0r1Zdistutils.text_filer2Zdistutils.utilr3readlinematchr#rappendospathsplitextrrfindrrrrrrrrclose)filenamer/r0r1r2r3varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                          rI)r.r<r"rrIrrrrs zPKr ]9::%__pycache__/util.cpython-37.opt-1.pycnu[B  fO@sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd Zd d Zd d ZdaddZddZd(ddZdaaaddZddZd)ddZddZd*ddZd d!Zd+d"d#Z d,d$d%Z!Gd&d'd'Z"dS)-zudistutils.util Miscellaneous utility functions -- anything that doesn't fit into one of the other *util.py modules. N)DistutilsPlatformError)newer)spawn)log)DistutilsByteCompileErrorc Cstjdkr"dtjkrdStjSdtjkr6tjdStjdksJttdsPtjSt\}}}}}| dd}| d d }| dd }|d d dkrd||fS|d d dkr|ddkrd}dt |dd|dd f}ddd}|d|tj 7}n|d ddkr(d|||fS|d ddkrfd}t dt j}||}|r|}n>|d dd krdd l}dd l} || j|||\}}}d!|||fS)"aReturn a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. ntZamd64z win-amd64Z_PYTHON_HOST_PLATFORMposixuname/ _-NZlinuxz%s-%sZsunosr5Zsolarisz%d.%sZ32bitZ64bit)ilz.%sZaixz%s-%s.%scygwinz[\d.]+darwinz%s-%s-%s)osnamesysversionlowerplatformenvironhasattrr replaceintmaxsizerecompileASCIImatchgroup _osx_supportZdistutils.sysconfigZget_platform_osxZ sysconfigZget_config_vars) ZosnameZhostreleasermachineZbitnessZrel_remr& distutilsr+3/opt/alt/python37/lib64/python3.7/distutils/util.py get_platformsD          r-cCs~tjdkr|S|s|S|ddkr.td||ddkrFtd||d}xd|krf|dqRW|srtjStjj|S)aReturn 'pathname' as a name that will work on the native filesystem, i.e. split it on '/' and put it back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. r rzpath '%s' cannot be absolutezpath '%s' cannot end with '/'.)rsep ValueErrorsplitremovecurdirpathjoin)pathnamepathsr+r+r, convert_path`s       r9cCstjdkrc CsxtrdStjdkrZdtjkrZy$ddl}|tdtjd<Wnttfk rXYnXdtjkrpt tjd<dadS)aLEnsure that 'os.environ' has all the environment variables we guarantee that users can use in config files, command-line options, etc. Currently this includes: HOME - user's home directory (Unix only) PLAT - description of the current platform, including hardware and OS (see 'get_platform()') NrHOMErrZPLATr:) _environ_checkedrrrpwdgetpwuidgetuid ImportErrorKeyErrorr-)rAr+r+r, check_environs   rFc CsTt|fdd}ytd||Stk rN}ztd|Wdd}~XYnXdS)aPerform shell/Perl-style variable substitution on 'string'. Every occurrence of '$' followed by a name is considered a variable, and variable is substituted by the value found in the 'local_vars' dictionary, or in 'os.environ' if it's not in 'local_vars'. 'os.environ' is first checked/augmented to guarantee that it contains certain values: see 'check_environ()'. Raise ValueError for any variables not found in either 'local_vars' or 'os.environ'. cSs,|d}||krt||Stj|SdS)Nr:)r%strrr)r$ local_varsZvar_namer+r+r,_substs  zsubst_vars.._substz\$([a-zA-Z_][a-zA-Z_0-9]*)zinvalid variable '$%s'N)rFr!subrEr1)srHrIvarr+r+r, subst_varss  rMerror: cCs |t|S)N)rG)excprefixr+r+r,grok_environment_errorsrQcCs(tdtjatdatdadS)Nz [^\\\'\"%s ]*z'(?:[^'\\]|\\.)*'z"(?:[^"\\]|\\.)*")r!r"string whitespace _wordchars_re _squote_re _dquote_rer+r+r+r, _init_regexs rWcCstdkrt|}g}d}x`|rt||}|}|t|kr\||d|P||tjkr||d|||d }d}n||dkr|d|||dd}|d}n||dkrt ||}n*||dkrt ||}nt d|||dkr"t d|||\}}|d|||d|d||d}|d }|t|kr"||Pq"W|S) aSplit a string up according to Unix shell-like rules for quotes and backslashes. In short: words are delimited by spaces, as long as those spaces are not escaped by a backslash, or inside a quoted string. Single and double quotes are equivalent, and the quote characters can be backslash-escaped. The backslash is stripped from any two-character escape sequence, leaving only the escaped character. The quote characters are stripped from any quoted string. Returns a list of words. Nrr;r:'"z!this can't happen (bad char '%c')z"bad string (mismatched %s quotes?)r)rTrWstripr$endlenappendrRrSlstriprUrV RuntimeErrorr1span)rKZwordsposr)r[Zbegr+r+r, split_quoteds@         ,   rbcCsP|dkr6d|j|f}|dddkr6|ddd}t||sL||dS)aPerform some action that affects the outside world (eg. by writing to the filesystem). Such actions are special because they are disabled by the 'dry_run' flag. This method takes care of all that bureaucracy for you; all you have to do is supply the function to call and an argument tuple for it (to embody the "external action" being performed), and an optional message to print. Nz%s%rz,)r))__name__rinfo)funcargsmsgverbosedry_runr+r+r,executes  rlcCs2|}|dkrdS|dkr dStd|fdS)zConvert a string representation of truth to true (1) or false (0). True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else. )yZyesttrueZon1r:)nZnofZfalseZoff0rzinvalid truth value %rN)rr1)valr+r+r, strtobool&s rur:cCsRddl}tjrtd|dkr*do(|dk}|s8yddlm} | d\} } Wn.tk rzddlm} d| d} } YnXt d| |s| dk rt | d } n t | d } | d | d tt|d | d |||||f| tjg}|||| t||dtt j| fd| |dnddlm}x|D]}|dddkrfqL|dkr|dkr~dn|}tjj||d}n tj|}|}|r|dt||krtd||f|t|d}|rt j ||}t j !|}|rL|st"||r:t d|||sH||||nt#d||qLWdS)a~Byte-compile a collection of Python source files to .pyc files in a __pycache__ subdirectory. 'py_files' is a list of files to compile; any files that don't end in ".py" are silently skipped. 'optimize' must be one of the following: 0 - don't optimize 1 - normal optimization (like "python -O") 2 - extra optimization (like "python -OO") If 'force' is true, all files are recompiled regardless of timestamps. The source filename encoded in each bytecode file defaults to the filenames listed in 'py_files'; you can modify these with 'prefix' and 'basedir'. 'prefix' is a string that will be stripped off of each source filename, and 'base_dir' is a directory name that will be prepended (after 'prefix' is stripped). You can supply either or both (or neither) of 'prefix' and 'base_dir', as you wish. If 'dry_run' is true, doesn't actually do anything that would affect the filesystem. Byte-compilation is either done directly in this interpreter process with the standard py_compile module, or indirectly by writing a temporary script and executing it. Normally, you should let 'byte_compile()' figure out to use direct compilation or not (see the source for details). The 'direct' flag is used by the script generated in indirect mode; unless you know what you're doing, leave it set to None. rNzbyte-compiling is disabled.F)mkstempz.py)mktempz$writing byte-compilation script '%s'wz2from distutils.util import byte_compile files = [ z, z] z byte_compile(files, optimize=%r, force=%r, prefix=%r, base_dir=%r, verbose=%r, dry_run=0, direct=1) )rkz removing %s)r"r ) optimizationz1invalid prefix: filename %r doesn't start with %rzbyte-compiling %s to %sz%skipping byte-compilation of %s to %s)$ subprocessrdont_write_bytecoderZtempfilervrDrwrrfrfdopenopenwriter6mapreprclose executableextendZ"_optim_args_from_interpreter_flagsr]rrlr3 py_compiler" importlibutilcache_from_sourcer\r1r5basenamerdebug)Zpy_filesoptimizeZforcerPZbase_dirrjrkZdirectr{rvZ script_fdZ script_namerwZscriptcmdr"fileZoptcfiledfileZ cfile_baser+r+r, byte_compile6sl$                rcCs|d}d}||S)zReturn a version of the string escaped for inclusion in an RFC-822 header, by ensuring there are 8 spaces space after each newline.  z )r2r6)headerlinesr0r+r+r, rfc822_escapes rcCsV|sdSddlm}m}Gddd|}|dkr8|d}|||d}|j|dd dS) a Invoke 2to3 on a list of Python files. The files should all come from the build area, as the modification is done in-place. To reduce the build time, only files modified since the last invocation of this function should be passed in the files argument.Nr)RefactoringToolget_fixers_from_packagec@s$eZdZddZddZddZdS)z*run_2to3..DistutilsRefactoringToolc_stj|f|dS)N)rerror)selfrirhkwr+r+r, log_errorsz4run_2to3..DistutilsRefactoringTool.log_errorcWstj|f|dS)N)rrf)rrirhr+r+r, log_messagesz6run_2to3..DistutilsRefactoringTool.log_messagecWstj|f|dS)N)rr)rrirhr+r+r, log_debugsz4run_2to3..DistutilsRefactoringTool.log_debugN)re __module__ __qualname__rrrr+r+r+r,DistutilsRefactoringToolsrz lib2to3.fixes)optionsT)r)Zlib2to3.refactorrrZrefactor)files fixer_namesrexplicitrrrrr+r+r,run_2to3s  rc Csddlm}ddlm}ddlm}|} t} t|z | Wdt| X| j | j dd<|rx(| D]} | } | sqt| | qtWg} xV| j D]L} tj|| }|tj||tj|| |dd}|dr| |qWtdd | D|||d | S) zRecursively copy a directory, only copying new and changed files, running run_2to3 over all newly copied Python modules afterward. If you give a template string, it's parsed like a MANIFEST.in. r)mkpath) copy_file)FileListNr:)updatecSsg|]}|dr|qS)z.py)rendswith).0fnr+r+r, sz$copydir_run_2to3..)rrr)Zdistutils.dir_utilrZdistutils.file_utilrZdistutils.filelistrrgetcwdchdirfindallZallfilesr splitlinesrZZprocess_template_liner5r6dirnamer]r)srcdesttemplaterrrrrrZfilelistr4lineZcopiedfilenameZoutnameZresr+r+r,copydir_run_2to3s4        rc@s$eZdZdZdZdZdZddZdS) Mixin2to3zMixin class for commands that run 2to3. To configure 2to3, setup scripts may either change the class variables, or inherit from individual commands to override how 2to3 is invoked.NcCst||j|j|jS)N)rrrr)rrr+r+r,r"szMixin2to3.run_2to3)rerr__doc__rrrrr+r+r+r,rs r)rN)Nrr)rrNNr:rN)NNN)NNNN)#rrr!importlib.utilrrRrZdistutils.errorsrZdistutils.dep_utilrZdistutils.spawnrr*rrr-r9r>r@rFrMrQrTrUrVrWrbrlrurrrrrr+r+r+r,s@     N  =    PKr ]r'22-__pycache__/msvccompiler.cpython-37.opt-2.pycnu[B YI~d \ @sddlZddlZddlmZmZmZmZmZddlm Z m Z m Z ddl m Z dZy,ddlZdZeZejZejZejZejZWnhek ry4ddlZddlZdZeZejZejZejZejZWnek re dYnXYnXerejejejej fZ!dd Z"d d Z#d d Z$GdddZ%ddZ&ddZ'ddZ(Gddde Z)e&dkr~e *de)Z+ddl,m)Z)ddl,m%Z%dS)N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnyt||}Wntk r"dSXg}d}x||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rXrkZ_setup_compilerextendrhrgr/rMr-abspath _c_extensions_cpp_extensionsrrspawnrbrrrtdirnamercrmrqrfr`)r)Zsourcesrvr'Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrwZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWsj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)rvz/OUT:zskipping %s (up-to-date)) rXrk_fix_object_argslibrary_filename _need_linkr}r[rrr r) r)rZoutput_libnamervr target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}|dk rLtjtj|\}}tj tj|d||}|d|| r^| |dd<| rn|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnXn td|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:z/OUT:rz/IMPLIB:zskipping %s (up-to-date))rXrkrZ _fix_lib_argswarnstrr rMr-rfrrZ EXECUTABLErjrirrmrqr~rryZmkpathr}rarrr r)r)Z target_descrrrvZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksV       zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:r)r)dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)NZPathr\)r]rMr-rfrzisfiler^rD)r)Zexer1fnrrrr_5s   zMSVCCompiler.find_exex86cCstsgS|d}|jdkr,d|j|jf}nd|j|f}xHtD]@}t||}|r@|jdkrr|j||dS||dSq@W|jdkrx,tD]$}t|d|jdk r|dPqWgS) Nz dirsrRz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr\r;z%s\6.0zIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrSrUr,r rVr6rDr)r)r-platformrrrrrrrdKs(        zMSVCCompiler.get_msvc_pathscCs6|dkr|d}n ||}|r2d|tj|<dS)Nr[Zlibraryr\)rdrfrMr^)r)rr1rrrreos   zMSVCCompiler.set_path_env_var)rrr)rrl)NNNrNNN)NrN) NNNNNrNNNN)r)r)r7r8r9Z compiler_typeZ executablesr{r|rrrtrprsruZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr+rkrxrrrrrrrr_rdrerrrrrQsN  B  V  F  $rQg @z3Importing new compiler from distutils.msvc9compiler)rQ)r&)-rArMZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr,rr rr&rHrLrPrQrZOldMSVCCompilerZdistutils.msvc9compilerrrrr s\      - 9   PKr ]$T T *__pycache__/extension.cpython-37.opt-2.pycnu[B YI~d)@s*ddlZddlZGdddZddZdS)Nc@seZdZdddZddZdS) ExtensionNcKst|tstdt|tr.tdd|Ds6td||_||_|pHg|_|pRg|_|p\g|_ |pfg|_ |ppg|_ |pzg|_ | pg|_ | pg|_| pg|_| pg|_| pg|_|pg|_||_||_t|dkrdd|D}dt|}d |}t|dS) Nz'name' must be a stringcss|]}t|tVqdS)N) isinstancestr).0vr8/opt/alt/python37/lib64/python3.7/distutils/extension.py jsz%Extension.__init__..z#'sources' must be a list of stringsrcSsg|] }t|qSr)repr)roptionrrr sz&Extension.__init__..z, zUnknown Extension options: %s)rrAssertionErrorlistallnamesources include_dirs define_macros undef_macros library_dirs librariesruntime_library_dirs extra_objectsextra_compile_argsextra_link_argsexport_symbols swig_optsdependslanguageoptionallenjoinsortedwarningswarn)selfrrrrrrrrrrrrrrrrkwoptionsmsgrrr__init__Vs4              zExtension.__init__cCsd|jj|jj|jt|fS)Nz<%s.%s(%r) at %#x>) __class__ __module__ __qualname__rid)r%rrr__repr__s zExtension.__repr__)NNNNNNNNNNNNNN)__name__r+r,r)r.rrrrrsD !rcCsddlm}m}m}ddlm}ddlm}||}||dddddd}zhg}x\|} | dkrfP| | rrqT| d| dkrdkrnn| d | qT|| |} || } | d} t | g} d} x| ddD]}| dk r| |d} qt j|d}|dd }|d d}|d kr8| j |q|d krP| j |q|d kr|d}|dkr| j |dfn$| j |d|||d dfq|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr| j |q|dkr0| j} q|dkrB| j} q|dkrT| j} q|dkrx| j ||s| j} q|dkr| j |q| d|qW| | qTWWd|X|S)Nr)parse_makefileexpand_makefile_vars _variable_rx)TextFile) split_quoted)Zstrip_commentsZ skip_blanksZ join_linesZ lstrip_wsZ rstrip_ws*z'%s' lines not handled yet)z.cz.ccz.cppz.cxxz.c++z.mz.mmz-Iz-D=z-Uz-Cz-lz-Lz-Rz-rpathz-Xlinkerz -Xcompilerz-u)z.az.soz.slz.oz.dylibzunrecognized argument '%s')Zdistutils.sysconfigr0r1r2Zdistutils.text_filer3Zdistutils.utilr4readlinematchr$rappendospathsplitextrrfindrrrrrrrrclose)filenamer0r1r2r3r4varsfile extensionslineZwordsmoduleZextZappend_next_wordZwordsuffixZswitchvalueZequalsrrrread_setup_files                          rJ)r=r#rrJrrrrs zPKr ]aB@M!M!0__pycache__/cygwinccompiler.cpython-37.opt-1.pycnu[B  f^@@sdZddlZddlZddlZddlmZmZmZddlZddl m Z m Z ddl m Z ddlmZddlmZmZmZmZddlmZdd lmZdd lmZd d ZGd dde ZGdddeZdZdZdZ ddZ!e"dZ#ddZ$ddZ%ddZ&dS)adistutils.cygwinccompiler Provides the CygwinCCompiler class, a subclass of UnixCCompiler that handles the Cygwin port of the GNU C compiler to Windows. It also contains the Mingw32CCompiler class which handles the mingw32 port of GCC (same as cygwin in no-cygwin mode). N)PopenPIPE check_output)gen_preprocess_optionsgen_lib_options) UnixCCompiler) write_file)DistutilsExecErrorCCompilerError CompileErrorUnknownFileError)log) LooseVersion)find_executablecCstjd}|dkr|tj|d|d}|dkr8dgS|dkrFdgS|d krTd gS|d krbd gS|d krpdgStd|dS)zaInclude the appropriate MSVC runtime library if Python was built with MSVC 7.0 or later. zMSC v. Z1300Zmsvcr70Z1310Zmsvcr71Z1400Zmsvcr80Z1500Zmsvcr90Z1600Zmsvcr100zUnknown MS Compiler version %s N)sysversionfind ValueError)Zmsc_posZmsc_verr>/opt/alt/python37/lib64/python3.7/distutils/cygwinccompiler.py get_msvcr?s rc @sReZdZdZdZdZdZdZdZdZ dZ dd d Z d d Z dddZ dddZdS)CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows. cygwinz.oz.az.dllzlib%s%sz%s%sz.exercCst||||t\}}|d||f|tk rB|d|t\|_|_|_ ||j d|j|j|j f|jdkrd|_ nd|_ |jdkrd}nd }|j d d d d d|j |fd|jdkrdg|_ |dnt|_ dS)Nz%Python's GCC status: %s (details: %s)zPython's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s z2.10.90gccdllwrapz2.13z-sharedz -mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallz gcc -mcygwinz%s -mcygwin %s)compiler compiler_so compiler_cxx linker_exe linker_soz2.91.57Zmsvcrtz,Consider upgrading to a newer version of gcc)r__init__check_config_hZ debug_print CONFIG_H_OKwarn get_versions gcc_version ld_versionZdllwrap_version compiler_type linker_dllset_executables dll_librariesr)selfverbosedry_runforceZstatusZdetails shared_optionrrrr#ds<      zCygwinCCompiler.__init__c Cs|dks|dkrVy|dd|d|gWqtk rR}z t|Wdd}~XYqXnNy"||j||d|g|Wn*tk r}z t|Wdd}~XYnXdS)z:Compiles the source by spawning GCC and windres if needed.z.rcz.resZwindresz-iz-oN)Zspawnr r r)r.objsrcextZcc_argsextra_postargsZpp_optsmsgrrr_compiles zCygwinCCompiler._compileNcCsTt| p g} t|pg}t|p&g}||j|dk r||jksV|jdkrtj|d}tjtj |\}}tj ||d}tj |d|d}dtj |dg}x|D]}| |qW| t ||fd ||jd kr| d |g| d |gn | || s,| d t||||||||d| | | | | dS)zLink the objects.Nrrz.deflibz.az LIBRARY %sZEXPORTSz writing %srz --output-libz--defz-s)copyextendr-Z EXECUTABLEr+ospathdirnamesplitextbasenamejoinappendZexecuterrlink)r.Z target_descZobjectsZoutput_filename output_dirZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsdebugZ extra_preargsr6Z build_tempZ target_langZtemp_dirZdll_nameZ dll_extensionZdef_fileZlib_filecontentsZsymrrrrCs:          zCygwinCCompiler.linkcCs|dkr d}g}x|D]}tjtj|\}}||jddgkrTtd||f|rdtj|}|dkr|tj||||j q|tj|||j qW|S)z#Adds supports for rc and res files.NrGz.rcz.resz"unknown file type '%s' (from '%s'))z.resz.rc) r<r=r?normcaseZsrc_extensionsr r@rBrA obj_extension)r.Zsource_filenamesZ strip_dirrDZ obj_namesZsrc_namebaser5rrrobject_filenamess      z CygwinCCompiler.object_filenames)rrr) NNNNNrNNNN)rrG)__name__ __module__ __qualname____doc__r*rIZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr#r8rCrKrrrrrYs ; Krc@seZdZdZdZdddZdS)Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows. Zmingw32rc Csxt|||||jdkr d}nd}|jdkr4d}nd}trFtd|jdd d d d |j||fd g|_t |_dS)Nz2.13z-sharedz -mdll -staticz2.91.57z--entry _DllMain@12rGz1Cygwin gcc cannot be used with --compiler=mingw32z gcc -O -Wallzgcc -mdll -O -Wallz g++ -O -Wallrz%s %s %s)rrr r!r") rr#r)r( is_cygwingccr r,r+r-r)r.r/r0r1r2Z entry_pointrrrr#s&   zMingw32CCompiler.__init__N)rrr)rLrMrNrOr*r#rrrrrPsrPokznot okZ uncertainc Csddlm}dtjkrtdfS|}y@t|}z(d|krJtd|fStd|fSWd| XWn0t k r}zt d ||j ffSd}~XYnXdS) awCheck if the current Python installation appears amenable to building extensions with GCC. Returns a tuple (status, details), where 'status' is one of the following constants: - CONFIG_H_OK: all is well, go ahead and compile - CONFIG_H_NOTOK: doesn't look good - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains the string "GCC" (implying that this Python was built with GCC), or the installed "pyconfig.h" contains the string "__GNUC__". r) sysconfigZGCCzsys.version mentions 'GCC'Z__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'Nzcouldn't read '%s': %s) distutilsrSrrr%Zget_config_h_filenameopenreadCONFIG_H_NOTOKcloseOSErrorCONFIG_H_UNCERTAINstrerror)rSfnZconfig_hexcrrrr$Hs    r$s(\d+\.\d+(\.\d+)*)cCsl|d}t|dkrdSt|dtdj}z |}Wd|Xt|}|dkrZdSt | d S)zFind the version of an executable by running `cmd` in the shell. If the command is not found, or the output does not match `RE_VERSION`, returns None. rNT)shellstdout) splitrrrr_rVrX RE_VERSIONsearchrgroupdecode)cmd executableout out_stringresultrrr_find_exe_versionus     rkcCsdddg}tdd|DS)zg Try to find out the versions of gcc, ld and dllwrap. If not possible it returns None for it. zgcc -dumpversionzld -vzdllwrap --versioncSsg|] }t|qSr)rk).0rfrrr sz get_versions..)tuple)Zcommandsrrrr's r'cCstddg}|dS)z>Try to determine if the gcc that would be used is from cygwin.rz -dumpmachinescygwin)rstripendswith)rirrrrQs rQ)'rOr<rr: subprocessrrrreZdistutils.ccompilerrrZdistutils.unixccompilerrZdistutils.file_utilrZdistutils.errorsr r r r rTr Zdistutils.versionrZdistutils.spawnrrrrPr%rWrZr$compilerbrkr'rQrrrrs0)     ;1+ PKr ]!nJn&__pycache__/spawn.cpython-37.opt-2.pycnu[B YI~d@sddlZddlZddlmZmZddlmZddlmZdddZ dd Z dd d Z ej d krrdd lm Z dadadddZdddZdS)N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkrt | } | dkr"dSts,|}td|| fn,t!| rPqvntsZ|}td|| fqvWdS)Nrrr$MACOSX_DEPLOYMENT_TARGETcSsg|] }t|qSr)int).0xrrr esz _spawn_posix...cSsg|] }t|qSr)r()r)r*rrrr+kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&zunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %srz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %d)"rrrr execvpexecvsysplatform _cfg_targetr%Zget_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpidestatusr# exit_statusrrrr Xs      &     r c Cstj|\}}tjdkr*|dkr*|d}tj|r:|S|dkrtjdd}|dkrytd}Wnt t fk rtj }YnX|sdS| tj }x*|D]"}tj||}tj|r|SqWdS)Nwin32z.exePATHCS_PATH)r pathsplitextr/r0isfiler4r5confstrAttributeError ValueErrordefpathr2pathsepr)r"rL_Zextpathspfrrrrs(     r)rrr)rrr)rrr)N)r/r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr0r%r1r3r rrrrr s       QPKr ]nuKB&&)__pycache__/filelist.cpython-37.opt-1.pycnu[B  f 2@sdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z GdddZ dd Z ejfd d Zd d ZdddZdS)zsdistutils.filelist Provides the FileList class, used for poking about the filesystem and building lists of files. N) convert_path)DistutilsTemplateErrorDistutilsInternalError)logc@s|eZdZdZdddZddZejfddZd d Z d d Z d dZ ddZ ddZ ddZddZdddZdddZdS) FileListaA list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. Instance attributes: dir directory from which files will be taken -- only used if 'allfiles' not supplied to constructor files list of filenames currently being built/filtered/manipulated allfiles complete list of files under consideration (ie. without any filtering applied) NcCsd|_g|_dS)N)allfilesfiles)selfwarn debug_printr 7/opt/alt/python37/lib64/python3.7/distutils/filelist.py__init__szFileList.__init__cCs ||_dS)N)r)r rr r r set_allfiles#szFileList.set_allfilescCst||_dS)N)findallr)r dirr r r r&szFileList.findallcCsddlm}|rt|dS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugrprint)r msgrr r r r )s zFileList.debug_printcCs|j|dS)N)rappend)r itemr r r r3szFileList.appendcCs|j|dS)N)rextend)r itemsr r r r6szFileList.extendcCs@tttjj|j}g|_x |D]}|jtjj|q WdS)N)sortedmapospathsplitrrjoin)r Zsortable_filesZ sort_tupler r r sort9s z FileList.sortcCsDx>tt|jdddD]$}|j||j|dkr|j|=qWdS)Nr)rangelenr)r ir r r remove_duplicatesCszFileList.remove_duplicatescCs|}|d}d}}}|dkrTt|dkr ...cSsg|] }t|qSr )r).0wr r r Wsz1FileList._parse_template_line..r )zrecursive-includezrecursive-excludez,'%s' expects ...cSsg|] }t|qSr )r)r)r*r r r r+]s)graftprunez#'%s' expects a single zunknown action '%s')rr#rr)r lineZwordsactionpatternsr dir_patternr r r _parse_template_lineLs*         zFileList._parse_template_linecCsX||\}}}}|dkrZ|dd|x&|D]}|j|dds4td|q4Wn|dkr|dd|x&|D]}|j|dds|td |q|Wn|d kr|d d|x&|D]}|j|d dstd |qWnj|dkr8|dd|x*|D]"}|j|d dstd|qWn|dkr|d|d|fx|D]$}|j||ds`td||q`Wn|dkr|d|d|fx|D]$}|j||dstd||qWnx|dkr|d||jd|dsTtd|nB|dkrH|d||jd|dsTtd|n td|dS)Nr&zinclude  r )anchorz%warning: no files found matching '%s'r'zexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include rz>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %s)prefixz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'r-zgraft z+warning: no directories found matching '%s'r.zprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')r3r rinclude_patternrr exclude_patternr)r r/r0r1rr2patternr r r process_template_linehsf           zFileList.process_template_liner rcCspd}t||||}|d|j|jdkr4|x6|jD],}||r<|d||j|d}qr?r$r r r r8s zFileList.exclude_pattern)NN)r Nr)r Nr)__name__ __module__ __qualname____doc__rrrcurdirrr rrrr%r3r:r7r8r r r r rs     L ,rcCs&ddtj|ddD}ttjj|S)z% Find all files under 'path' css,|]$\}}}|D]}tj||VqqdS)N)rrr)r)basedirsrfiler r r sz#_find_all_simple..T) followlinks)rwalkfilterrisfile)rZresultsr r r _find_all_simplesrNcCs6t|}|tjkr.tjtjj|d}t||}t|S)z Find all files under 'dir' and return the list of full filenames. Unless dir is '.', return full filenames with dir prepended. )start) rNrrE functoolspartialrrelpathrlist)rrZmake_relr r r rs   rcCs8t|}tj}tjdkrd}d|}td||}|S)zTranslate a shell-like glob pattern to a regular expression; return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). \z\\\\z\1[^%s]z((?t|}nd}|dk rt|}|t|t|t|}tj} tjdkrd} |t|t|t|}d||| ||f}n|rd||t|df}t|S)aTranslate a shell-like wildcard pattern to a compiled regular expression. Return the compiled regex. If 'is_regex' true, then 'pattern' is directly compiled to a regex (if it's a string) or just returned as-is (assumes it's a regex object). _NrTz\\z%s\A%s%s.*%s%sz%s\A%s) isinstancestrrXcompilerZ partitionr#rrW) r9r5r6r=rOr[endr?Z prefix_rerWr r r r;%s(   r;)r Nr)rDrrXrUrPZdistutils.utilrZdistutils.errorsrrZ distutilsrrrNrErrZr;r r r r s  i  PKr ]32&__pycache__/debug.cpython-37.opt-1.pycnu[B  f@sddlZejdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr4/opt/alt/python37/lib64/python3.7/distutils/debug.pysPKr ]<j$__pycache__/log.cpython-37.opt-2.pycnu[B YI~d@shdZdZdZdZdZddlZGdddZeZejZej Z ej Z ej Z ej Z ej Z d d Zd d ZdS) Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr 2/opt/alt/python37/lib64/python3.7/distutils/log.py__init__sz Log.__init__cCs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }y| d|Wn:t k r|j }||d|}| d|YnX|dS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs||||dS)N)r")r rrr r r r log'szLog.logcGs|t||dS)N)r"r)r rr r r r debug*sz Log.debugcGs|t||dS)N)r"r)r rr r r r info-szLog.infocGs|t||dS)N)r"r)r rr r r r warn0szLog.warncGs|t||dS)N)r"r)r rr r r r error3sz Log.errorcGs|t||dS)N)r"r)r rr r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r"r#r$r%r&r'r(r r r r rs rcCstj}|t_|S)N) _global_logr)roldr r r set_thresholdAsr.cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r.rrr)vr r r set_verbosityGs   r0)rrrrrrrr,r#r$r%r&r'r(r.r0r r r r s+PKr ]vBPP*__pycache__/ccompiler.cpython-37.opt-1.pycnu[B  fI@sdZddlZddlZddlZddlTddlmZddlmZddl m Z ddl m Z m Z ddlmZmZdd lmZGd d d Zd Zdd dZddddddZddZdddZddZddZdS)zdistutils.ccompiler Contains CCompiler, an abstract base class that defines the interface for the Distutils compiler abstraction model.N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ dZ ddddddZ dddgZ dqdd Zd d Zd d ZddZddZdrddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d.d/Z!dsd0d1Z"d2d3Z#d4d5Z$d6d7Z%d8d9Z&dtd:d;Z'dudd?Z)dvd@dAZ*dBZ+dCZ,dDZ-dwdEdFZ.dxdGdHZ/dydIdJZ0dzdKdLZ1dMdNZ2dOdPZ3dQdRZ4d{dSdTZ5d|dUdVZ6d}dXdYZ7d~dZd[Z8dd\d]Z9dd_d`Z:ddbdcZ;dddeZdjdkZ?dldmZ@ddodpZAdS) CCompileraAbstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by several compiler classes. The basic idea behind a compiler abstraction class is that each instance can be used for all the compile/link steps in building a single project. Thus, attributes common to all of those compile and link steps -- include directories, macros to define, libraries to link against, etc. -- are attributes of the compiler instance. To allow for variability in how individual files are treated, most of those attributes may be varied on a per-compilation or per-link basis. Nczc++Zobjc)z.cz.ccz.cppz.cxxz.mrcCsf||_||_||_d|_g|_g|_g|_g|_g|_g|_ x$|j D]}| ||j |qHWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr8/opt/alt/python37/lib64/python3.7/distutils/ccompiler.py__init__UszCCompiler.__init__cKs@x:|D]2}||jkr(td||jjf||||qWdS)aDefine the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler class (via the 'executables' class attribute), but most will have: compiler the C/C++ compiler linker_so linker used to create shared objects and libraries linker_exe linker used to create binary executables archiver static library creator On platforms with a command-line (Unix, DOS/Windows), each of these is a string that will be split into executable name and (optional) list of arguments. (Splitting the string is done similarly to how Unix shells operate: words are delimited by spaces, but quotes and backslashes can override this. See 'distutils.util.split_quoted()'.) z$unknown executable '%s' for class %sN)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dS)N) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}x&|jD]}|d|kr |S|d7}q WdS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCsdx^|D]V}t|trHt|dkrHt|dts:|ddkrHt|dtstd|ddqWdS)zEnsures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. )r(r(Nrzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss    z"CCompiler._check_macro_definitionscCs.||}|dk r|j|=|j||fdS)a_Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined without an explicit value and the exact outcome depends on the compiler used (XXX true? does ANSI say anything about this?) N)r,rappend)rr)r'r*rrr define_macros zCCompiler.define_macrocCs0||}|dk r|j|=|f}|j|dS)aUndefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call takes precedence (including multiple redefinitions or undefinitions). If the macro is redefined/undefined on a per-compilation basis (ie. in the call to 'compile()'), then that takes precedence. N)r,rr2)rr)r*Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|j|dS)zAdd 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to 'add_include_dir()'. N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)aySet the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add to the list passed to 'set_include_dirs()'. This does not affect any list of standard include directories that the compiler may search by default. N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|j|dS)aAdd 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the name of the library itself: the actual filename will be inferred by the linker, the compiler, or the compiler class (depending on the platform). The linker will be instructed to link against libraries in the order they were supplied to 'add_library()' and/or 'set_libraries()'. It is perfectly valid to duplicate library names; the linker will be instructed to link against libraries as many times as they are mentioned. N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)zSet the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may include by default. N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|j|dS)a'Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)zSet the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|j|dS)zlAdd 'dir' to the list of directories that will be searched for shared libraries at runtime. N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)zSet the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by default. N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|j|dS)zAdd 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)zSet the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system libraries). N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t ||}i} xRt t |D]B} || } || } t j | d} |t j | | | f| | <qW||||| fS)z;Process arguments and decide which source files to compile.Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr()rr$r%r0rlistrr.object_filenamesgen_preprocess_optionsranger/ospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr*srcobjextrrr_setup_compile6s8   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrNdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)a'Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' is a list, and augments it with 'self.macros'; ensures that 'include_dirs' is a list, and augments it with 'self.include_dirs'. Guarantees that the returned values are of the correct type, i.e. for 'output_dir' either string or None, and for 'macros' and 'include_dirs' either list or None. Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)rr$r%r0rrDrr.)rrrrrrr_fix_compile_argsjs   zCCompiler._fix_compile_argscCs|j||d}|ifS)a+Decide which souce files must be recompiled. Determine the list of object files corresponding to 'sources', and figure out which ones really need to be recompiled. Return a list of all object files and a dictionary telling which source files can be skipped. )r)rE)rrLrrMrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)zTypecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of 'objects' and 'output_dir'. z,'objects' must be a list or tuple of stringsNz%'output_dir' must be a string or None)r$rDr.r0rr%)rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)a;Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions (eg. 'self.libraries' augments 'libraries'). Return a tuple with fixed versions of all arguments. Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)zjReturn true if we need to relink the files listed in 'objects' to recreate 'output_file'. Tnewer)ZmissingN)rr r)rr output_filer[rrr _need_links  zCCompiler._need_linkc Cst|ts|g}d}t|j}x^|D]V}tj|\}}|j|}y |j |}||krb|}|}Wq$t k rxYq$Xq$W|S)z|Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. N) r$rDr/language_orderrHrIrJ language_mapgetindexr) rrLZlangrasourcebaserRZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)aPreprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro definitions as for 'compile()', which will augment the macros set with 'define_macro()' and 'undefine_macro()'. 'include_dirs' is a list of directory names that will be added to the default list. Raises PreprocessError on failure. Nr)rrbr\rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc  Csz|||||||\}} }} } || ||} xH| D]@} y| | \}}Wntk r\w2YnX|| ||| || q2W| S)aK Compile one or more source files. 'sources' must be a list of filenames, most likely C/C++ files, but in reality anything that can be handled by a particular compiler and compiler class (eg. MSVCCompiler can handle resource files in 'sources'). Return a list of object filenames, one per source filename in 'sources'. Depending on the implementation, not all source files will necessarily be compiled, but all corresponding object filenames will be returned. If 'output_dir' is given, object files will be put under it, while retaining their original path component. That is, "foo/bar.c" normally compiles to "foo/bar.o" (for a Unix implementation); if 'output_dir' is "build", then it would compile to "build/foo/bar.o". 'macros', if given, must be a list of macro definitions. A macro definition is either a (name, value) 2-tuple or a (name,) 1-tuple. The former defines a macro; if the value is None, the macro is defined without an explicit value. The 1-tuple case undefines a macro. Later definitions/redefinitions/ undefinitions take precedence. 'include_dirs', if given, must be a list of strings, the directories to add to the default include file search path for this compilation only. 'debug' is a boolean; if true, the compiler will be instructed to output debug symbols in (or alongside) the object file(s). 'extra_preargs' and 'extra_postargs' are implementation- dependent. On platforms that have the notion of a command-line (e.g. Unix, DOS/Windows), they are most likely lists of strings: extra command-line arguments to prepand/append to the compiler command line. On other platforms, consult the implementation class documentation. In any event, they are intended as an escape hatch for those occasions when the abstract compiler framework doesn't cut the mustard. 'depends', if given, is a list of filenames that all targets depend on. If a source file is older than any file in depends, then the source file will be recompiled. This supports dependency tracking, but only at a coarse granularity. Raises CompileError on failure. )rSrVKeyError_compile)rrLrrrrTrerfrMrrNrOrUrQrPrRrrrcompiles6  zCCompiler.compilecCsdS)zCompile 'src' to product 'obj'.Nr)rrQrPrRrUrfrNrrrriCszCCompiler._compilecCsdS)a&Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to 'add_link_object()' and/or 'set_link_objects()', the libraries supplied to 'add_library()' and/or 'set_libraries()', and the libraries supplied as 'libraries' (if any). 'output_libname' should be a library name, not a filename; the filename will be inferred from the library name. 'output_dir' is the directory where the library file will be put. 'debug' is a boolean; if true, debugging information will be included in the library (note that on most platforms, it is the compile step where this matters: the 'debug' flag is included here just for consistency). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LibError on failure. Nr)rroutput_libnamerrT target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)auLink a bunch of stuff together to create an executable or shared library file. The "bunch of stuff" consists of the list of object files supplied as 'objects'. 'output_filename' should be a filename. If 'output_dir' is supplied, 'output_filename' is relative to it (i.e. 'output_filename' can provide directory components if needed). 'libraries' is a list of libraries to link against. These are library names, not filenames, since they're translated into filenames in a platform-specific way (eg. "foo" becomes "libfoo.a" on Unix and "foo.lib" on DOS/Windows). However, they can include a directory component, which means the linker will look in that specific directory rather than searching all the normal locations. 'library_dirs', if supplied, should be a list of directories to search for libraries that were specified as bare library names (ie. no directory component). These are on top of the system default and those supplied to 'add_library_dir()' and/or 'set_library_dirs()'. 'runtime_library_dirs' is a list of directories that will be embedded into the shared library and used to search for other shared libraries that *it* depends on at run-time. (This may only be relevant on Unix.) 'export_symbols' is a list of symbols that the shared library will export. (This appears to be relevant only on Windows.) 'debug' is as for 'compile()' and 'create_static_lib()', with the slight distinction that it actually matters on most platforms (as opposed to 'create_static_lib()', which includes a 'debug' flag mostly for form's sake). 'extra_preargs' and 'extra_postargs' are as for 'compile()' (except of course that they supply command-line arguments for the particular linker being used). 'target_lang' is the target language for which the given objects are being compiled. This allows specific linkage time treatment of certain languages. Raises LinkError on failure. N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrTrerf build_temprlrrrlinkis9zCCompiler.linkc Cs2|tj||j|dd||||||| | | | dS)Nshared)lib_type)rsr SHARED_LIBRARYlibrary_filename) rrrkrrrrrqrTrerfrrrlrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|tj||||||||| | | | dS)N)rsr SHARED_OBJECT) rrrprrrrrqrTrerfrrrlrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|tj|||||||d||| d| dS)N)rsr EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrTrerfrlrrrlink_executables  zCCompiler.link_executablecCstdS)zkReturn the compiler option to add 'dir' to the list of directories searched for libraries. N)ro)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)zsReturn the compiler option to add 'dir' to the list of directories searched for runtime libraries. N)ro)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)zReturn the compiler option to add 'lib' to the list of libraries linked into the shared library or executable. N)ro)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}t|d} z.x|D]} | d| q`W| d|Wd| Xy|j|g|d } Wntk rd SXy|j| d ||d Wnt t fk rd SXdS) zReturn a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. rNz.cT)textwz#include "%s" z=int main (int argc, char **argv) { %s(); return 0; } )rFza.out)rr) tempfileZmkstemprHfdopenwritecloserjZ CompileErrorr}Z LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8     zCCompiler.has_functioncCstdS)aHSearch the specified list of directories for a static or shared library file 'lib' and return the full path to that file. If 'debug' true, look for a debugging version (if that makes sense on the current platform). Return None if 'lib' wasn't found in any of the specified directories. N)ro)rr7rrTrrrfind_library_file$szCCompiler.find_library_filecCs|dkr d}g}x|D]|}tj|\}}tj|d}|tj|d}||jkrhtd||f|rxtj|}|tj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rHrIrJ splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namercrRrrrrEOs    zCCompiler.object_filenamescCs$|rtj|}tj|||jS)N)rHrIrrshared_lib_extension)rrrCrrrrshared_object_filename`s z CCompiler.shared_object_filenamecCs(|rtj|}tj|||jp"dS)Nr)rHrIrr exe_extension)rrrCrrrrr|fs zCCompiler.executable_filenamestaticc Cs`|dkrtdt||d}t||d}tj|\}}|||f} |rPd}tj||| S)N)rrtZdylibZ xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rgetattrrHrIsplitr) rr9rurCrZfmtrRr5rcfilenamerrrrwls zCCompiler.library_filenamer(cCst|dS)N)r rT)rmsglevelrrrannounceszCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst||jddS)N)r )rr )rcmdrrrrszCCompiler.spawncCst|||jdS)N)r )rr )rrPdstrrrrszCCompiler.move_filecCst|||jddS)N)r )rr )rr)moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r()Nr()r)Br! __module__ __qualname____doc__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr_r^rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrSrVrWrXrYrZr]rdrgrjrirmryrvr{rsrxrzr}r~rrrrrErr|rwrrrr rrrrrrrr s    $   +  "   B  4    + +      r ))zcygwin.*unix)posixr)ntmsvccCsV|dkrtj}|dkrtj}x4tD],\}}t||dk sJt||dk r"|Sq"WdS)akDetermine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the ones returned by os.name) and platform the common value returned by sys.platform for the platform in question. The default values are os.name and sys.platform in case the parameters are not given. Nr)rHr)rplatform_default_compilersrematch)Zosnamerpatterncompilerrrrget_default_compilers r)Z unixccompilerZ UnixCCompilerzstandard UNIX-style compiler)Z _msvccompilerZ MSVCCompilerzMicrosoft Visual C++)cygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Z bcppcompilerZ BCPPCompilerzBorland C++ Compiler)rrcygwinZmingw32ZbcppcCs\ddlm}g}x,tD] }|d|dt|dfqW|||}|ddS)zyPrint list of available compilers (used by the "--help-compiler" options to "build", "build_ext", "build_clib"). r) FancyGetoptz compiler=Nr-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sortZ print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXy*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)a[Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler for that platform. Currently only 'posix' and 'nt' are supported, and the default compilers are "traditional Unix interface" (UnixCCompiler class) and Visual C++ (MSVCCompiler class). Note that it's perfectly possible to ask for a Unix compiler object under Windows, and a Microsoft compiler object under Unix -- if you supply a value for 'compiler', 'plat' is ignored. Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rHr)rrrhZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2    rcCsg}x|D]}t|tr2dt|kr0dks>ntd|t|dkr^|d|dq t|dkr |ddkr|d|dq |d|q Wx|D]}|d |qW|S) aGenerate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) means undefine (-U) macro 'name', and (name,value) means define (-D) macro 'name' to 'value'. 'include_dirs' is just a list of directory names to be added to the header file search path (-I). Returns a list of command-line options suitable for either Unix compilers or Visual C++. r(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srNz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrNZmacror5rrrrF s $    rFc Csg}x|D]}|||q Wx4|D],}||}t|trJ||}q(||q(Wx^|D]V}tj|\}} |r||g| } | r|| q| d|q^|| |q^W|S)acGenerate linker options for searching library directories and linking with specific libraries. 'libraries' and 'library_dirs' are, respectively, lists of library names (not filenames!) and search directories. Returns a list of command-line options suitable for use with some compiler (depending on the two format strings passed in). z6no library file corresponding to '%s' found (skipping)) r2r~rr$rDrHrIrrrr) rrrrZlib_optsr5ZoptrZlib_dirZlib_nameZlib_filerrrgen_lib_options8s$        r)NN)NNrrr)rrrHrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrFrrrrrs6      --PKr ]dPϷ(__pycache__/version.cpython-37.opt-2.pycnu[B YI~d90@s:ddlZGdddZGdddeZGdddeZdS)Nc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)VersionNcCs|r||dS)N)parse)selfvstringr6/opt/alt/python37/lib64/python3.7/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs||}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__)N) r __module__ __qualname__rr rrrrrrrrrrs rc@s8eZdZedejejBZddZddZ ddZ dS) StrictVersionz)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|j|}|std||ddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s')rr) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrrmajorminorZpatchr&Zprerelease_numrrrrs  zStrictVersion.parsecCsb|jddkr*dtt|jdd}ndtt|j}|jr^||jdt|jd}|S)Nrr.r)r%joinr#r r&)rrrrr__str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|jsB|jsBdS|jrR|jsRdS|jsb|jrbdS|jr|jr|j|jkr~dS|j|jkrdSdSndS)Nrr) isinstancer rr%r&)rrrrrr s&         zStrictVersion._cmpN) r rrrecompileVERBOSEASCIIrrr+r rrrrr]s % rc@sDeZdZedejZd ddZddZddZ d d Z d d Z dS) LooseVersionz(\d+ | [a-z]+ | \.)NcCs|r||dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd|j|D}x:t|D].\}}yt|||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|qS)r)r).0xrrr 8sz&LooseVersion.parse..)r component_resplit enumerater$r r%)rrZ componentsiobjrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr+CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrr,r)r-r r2r%)rrrrrr Ks    zLooseVersion._cmp)N) r rrr.r/r0r6rrr+r r rrrrr2 s ! r2)r.rrr2rrrrs>/PKr ]4z#__pycache__/__init__.cpython-37.pycnu[B  f@s&dZddlZejdejdZdS)zdistutils The main package for the Python Module Distribution Utilities. Normally used from a setup script as from distutils.core import setup setup (...) N )__doc__sysversionindex __version__rr7/opt/alt/python37/lib64/python3.7/distutils/__init__.py sPKr ]UQ1__pycache__/versionpredicate.cpython-37.opt-1.pycnu[B  f @sdZddlZddlZddlZedejZedZedZ ddZ ej ej ej ejejejdZGd d d Zdad d ZdS) zBModule for parsing and testing package version predicate strings. Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCs6t|}|std||\}}|tj|fS)zVParse a single version comparison. Return (comparison string, StrictVersion) z"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predZrescompZverStrr ?/opt/alt/python37/lib64/python3.7/distutils/versionpredicate.pysplitUps    r )z>=z!=c@s(eZdZdZddZddZddZdS) VersionPredicateaParse and test package version predicates. >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)') The `name` attribute provides the full dotted name that is given:: >>> v.name 'pyepat.abc' The str() of a `VersionPredicate` provides a normalized human-readable version of the expression:: >>> print(v) pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3) The `satisfied_by()` method can be used to determine with a given version number is included in the set described by the version restrictions:: >>> v.satisfied_by('1.1') True >>> v.satisfied_by('1.4') True >>> v.satisfied_by('1.0') False >>> v.satisfied_by('4444.4') False >>> v.satisfied_by('1555.1b3') False `VersionPredicate` is flexible in accepting extra whitespace:: >>> v = VersionPredicate(' pat( == 0.1 ) ') >>> v.name 'pat' >>> v.satisfied_by('0.1') True >>> v.satisfied_by('0.2') False If any version numbers passed in do not conform to the restrictions of `StrictVersion`, a `ValueError` is raised:: >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)') Traceback (most recent call last): ... ValueError: invalid version number '1.2zb3' It the module or package name given does not conform to what's allowed as a legal module or package name, `ValueError` is raised:: >>> v = VersionPredicate('foo-bar') Traceback (most recent call last): ... ValueError: expected parenthesized list: '-bar' >>> v = VersionPredicate('foo bar (12.21)') Traceback (most recent call last): ... ValueError: expected parenthesized list: 'bar (12.21)' cCs|}|stdt|}|s.td||\|_}|}|rt|}|sbtd||d}dd|dD|_|jstd|ng|_d S) z*Parse a version predicate string. zempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|] }t|qSr )r ).0ZaPredr r r tsz-VersionPredicate.__init__..,zempty parenthesized list in %rN) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$      zVersionPredicate.__init__cCs8|jr.dd|jD}|jdd|dS|jSdS)NcSs g|]\}}|dt|qS) )r)rcondverr r r r}sz,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{szVersionPredicate.__str__cCs*x$|jD]\}}t|||sdSqWdS)zTrue if version is compatible with all the predicates in self. The parameter version must be acceptable to the StrictVersion constructor. It may be either a string or StrictVersion. FT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname____doc__rr"r$r r r r rs?rcCsdtdkrtdtja|}t|}|s8td||dpDd}|rVtj |}|d|fS)a9Return the name and optional version number of a provision. The version number, if given, will be returned as a `StrictVersion` instance, otherwise it will be `None`. >>> split_provision('mypkg') ('mypkg', None) >>> split_provision(' mypkg( 1.2 ) ') ('mypkg', StrictVersion ('1.2')) Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions    r2)r(r,Zdistutils.versionroperatorr-r.rrrr ltleeqgtgener#rr+r2r r r r s   nPKr ]frbb.__pycache__/unixccompiler.cpython-37.opt-2.pycnu[B ~ f|;@sddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z m Z mZmZddlmZejdkrzddlZGdd d eZdS) N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execsFt|j||||\}}}td}|r<||kr<|||||fS)NZLIBDIR)super __class__ _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir)r| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn*t k r} z t | Wdd} ~ XYnXdS)Nz-or)Z_fix_compile_argsrrextendappendforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr"r"r# preprocess_s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}y ||||d|g|Wn*tk rj}z t|Wdd}~XYnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr+rr) robjsrcZextZcc_argsr.r1rr2r"r"r#_compileys   zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j ry||j |gWqt k r}z t |Wdd}~XYqXn t d|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr'r(r)r*r+robjectsrrr r debug)rr?Zoutput_libnamer;r@ target_langoutput_filenamer2r"r"r#create_static_libs zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|y|tjkr|jdd}n|jdd}| dkrv|jrvd}tj|ddkrDd}xd||krB|d7}q(Wtj||d kr`d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=Z ld_so_aixr zskipping %s (up-to-date))r<rr isinstancestrtype TypeErrorr(r)joinr>r?r$r'r*rZ EXECUTABLErrrbasenamer4r5r6r7r+rr r r@)rZ target_descr?rBr;rr r!Zexport_symbolsr@r-r.Z build_temprAr/Zlib_optsZld_argsZlinkerioffsetr2r"r"r#linksN      zUnixCCompiler.linkcCsd|S)Nz-Lr")rdirr"r"r#library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r")rZ compiler_namer"r"r#_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NZCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r(r)rLrrr4r5rR)rrPrr"r"r#runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr")rlibr"r"r#library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptd}td|} | dkrfd } n | d } x|D]} tj | |} tj | |} tj | |}tj | |}tjdkrD| d s| d rD| d sDtj | | d d|} tj | | d d|} tj | | d d|}tj | | d d|}tj | rV| Stj |rh|Stj | rz| Stj |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)/rEz/System/z/usr/z /usr/local/) r=r4r5rrresearchgroupr(r)rK startswithexists)rdirsrVr@Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrPrXrYr[rZr"r"r#find_library_files>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr4r5Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr3r:rCrOrQrRrUrWrd __classcell__r"r")rr#r -sF       >*r )r(r4r]Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r5r6r r"r"r"r#s    PKr ]]88'__pycache__/msvccompiler.cpython-37.pycnu[B  f \ @sdZddlZddlZddlmZmZmZmZmZddl m Z m Z m Z ddl mZdZy,ddlZdZeZejZejZejZejZWnhek ry4ddlZddlZdZeZejZejZejZejZWnek redYnXYnXerejejej ej!fZ"d d Z#d d Z$d dZ%GdddZ&ddZ'ddZ(ddZ)Gddde Z*e'dkre+de*Z,ddl-m*Z*ddl-m&Z&dS)zdistutils.msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)logFTzWarning: Can't read registry to find the necessary compiler setting Make sure that Python modules winreg, win32api or win32con are installed.cCsnyt||}Wntk r"dSXg}d}x||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rXrjZ_setup_compilerextendrgrfr/rMr-abspath _c_extensions_cpp_extensionsrqspawnrarrrsdirnamerbrlrprer_)r)Zsourcesrur'Z include_dirsdebug extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrvZ input_optZ output_optmsgZh_dirZrc_dirr_Zrc_filerrrcompileWsj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)ruz/OUT:zskipping %s (up-to-date)) rXrj_fix_object_argslibrary_filename _need_linkr|rZrrr r~) r)rZoutput_libnamerur~ target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}|dk rLtjtj|\}}tj tj|d||}|d|| r^| |dd<| rn|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnXn td|dS)Nz5I don't know what to do with 'runtime_library_dirs': r z/EXPORT:z/OUT:rz/IMPLIB:zskipping %s (up-to-date))rXrjrZ _fix_lib_argswarnstrr rMr-rerrZ EXECUTABLErirhrrlrpr}rrxZmkpathr|r`rrr r~)r)Z target_descrrruZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr~rrZ build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymZld_argsZdll_nameZdll_extZ implib_filerrrrlinksV       zMSVCCompiler.linkcCsd|S)Nz /LIBPATH:r)r)dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr[)r\rMr-reryisfiler]rD)r)Zexer1fnrrrr^5s   zMSVCCompiler.find_exex86cCstsgS|d}|jdkr,d|j|jf}nd|j|f}xHtD]@}t||}|r@|jdkrr|j||dS||dSq@W|jdkrx,tD]$}t|d|jdk r|d PqWgS) zGet a list of devstudio directories (include, lib or path). Return a list of strings. The list will be empty if unable to access the registry or appropriate registry keys not found. z dirsrRz6%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directoriesz?%s\6.0\Build System\Components\Platforms\Win32 (%s)\Directoriesr[r;z%s\6.0NzIt seems you have Visual Studio 6 installed, but the expected registry settings are not present. You must at least run the Visual Studio GUI once so that these entries are created.) _can_read_regrSrUr,r rVr6rDr)r)r-platformrrrrrrrcKs(        zMSVCCompiler.get_msvc_pathscCs6|dkr|d}n ||}|r2d|tj|<dS)zSet environment variable 'name' to an MSVC path type value. This is equivalent to a SET command prior to execution of spawned commands. rZZlibraryr[N)rcrerMr])r)rr1rrrrdos   zMSVCCompiler.set_path_env_var)rrr)rrk)NNNrNNN)NrN) NNNNNrNNNN)r)r)r7r8r9__doc__Z compiler_typeZ executablesrzr{rqrsrorrrtZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr+rjrwrrrrrrrr^rcrdrrrrrQsP  B  V  F  $rQg @z3Importing new compiler from distutils.msvc9compiler)rQ)r&).rrArMZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr rwinregZhkey_modZ OpenKeyExr ZEnumKeyrZ EnumValuererrorr ImportErrorZwin32apiZwin32coninfoZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTr,rr rr&rHrLrPrQr~ZOldMSVCCompilerZdistutils.msvc9compilerrrrrs^      - 9   PKr ]32 __pycache__/debug.cpython-37.pycnu[B  f@sddlZejdZdS)NZDISTUTILS_DEBUG)osenvirongetDEBUGrr4/opt/alt/python37/lib64/python3.7/distutils/debug.pysPKr ]5-__pycache__/fancy_getopt.cpython-37.opt-2.pycnu[B YI~dxE@sddlZddlZddlZddlZddlTdZedeZedeefZe ddZ Gdd d Z d d Z d d ejDZddZddZGdddZedkrdZx2dD]*ZedeedeeeeqWdS)N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdddZddZddZddd Zd d Zd d ZddZ ddZ ddZ ddZ d ddZ ddZd!ddZd"ddZdS)# FancyGetoptNcCsN||_i|_|jr|i|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr;/opt/alt/python37/lib64/python3.7/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs,|jx|jD]}||j|d<qWdS)Nr)rclearr)roptionrrrrQs  zFancyGetopt._build_indexcCs||_|dS)N)rr)rrrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|j|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs     zFancyGetopt.add_optioncCs ||jkS)N)r)rrrrr has_optioncszFancyGetopt.has_optioncCs |tS)N) translate longopt_xlate)rrrrr get_attr_namehszFancyGetopt.get_attr_namecCsRxL|D]@\}}||jkr.td|||f||jkr td|||fq WdS)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)itemsrr)raliasesZwhatr optrrr_check_alias_dictns  zFancyGetopt._check_alias_dictcCs||d||_dS)Nr )r#r )rr rrr set_aliasesxs zFancyGetopt.set_aliasescCs||d||_dS)Nznegative alias)r#r )rr rrrset_negative_aliases}s z FancyGetopt.set_negative_aliasescCsg|_g|_|ji|_x|jD]}t|dkrH|\}}}d}n(t|dkrb|\}}}}ntd|ft|t rt|dkrt d||dkst|t rt|dkst d|||j|<|j ||d d kr|r|d }|dd }d|j |<nF|j |}|dk r@|j |r6t d ||f||jd <d|j |<|j|}|dk r|j ||j |krt d ||ft|st d||||j|<|r&|j |||j|d<q&WdS)Nrzinvalid option tuple: %rz9invalid long option '%s': must be a string of length >= 2z:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r r rrepeatrlen ValueError isinstancestrrrrr getr longopt_rematchrr)rrlongshorthelpr-Zalias_torrr_grok_option_tables^                   zFancyGetopt._grok_option_tablec Csr|dkrtjdd}|dkr*t}d}nd}|d|j}yt|||j\}}Wn,tjk r}z t |Wdd}~XYnXx|D]\}}t |dkr|ddkr|j |d}n |dd}|j |} | r| }|j|s |j |} | r| }d}nd}|j|} |r<|j | dk rsB        zFancyGetopt.getoptcCs|jdkrtdn|jSdS)Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsvd}xV|jD]L}|d}|d}t|}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d|} |r|g} nd g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| d ||| dfn| d ||fn:d ||f}| r:| d ||| dfn| d|x$| ddD]}| | |qVWqW| S)Nrr)r*r+r(Nr9zOption summary:r&z --%-*s %sz --%-*s z%s (-%s)z --%-*s)rr. wrap_textr)rheaderZmax_optrr5r6lZ opt_widthZ line_width text_widthZ big_indentlinesr7textZ opt_namesrrr generate_helpsF        zFancyGetopt.generate_helpcCs4|dkrtj}x ||D]}||dqWdS)N )r:stdoutrQwrite)rrLfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname__rrrrrrr#r$r%r8r>rHrQrWrrrrrs (  M = OrcCst|}|||||S)N)rr%r>)optionsZ negative_optrCrBparserrrr fancy_getoptos r]cCsi|]}dt|qS)r9)ord).0Z_wscharrrr usr`cCs"|dkr gSt||kr|gS|}|t}td|}dd|D}g}x|rg}d}xZ|rt|d}|||kr||d|d=||}q`|r|dddkr|d=Pq`W|r |dkr||dd||d|d|d<|dddkr |d=|d|qPW|S)Nz( +|-+)cSsg|] }|r|qSrr)r_Zchrrr szwrap_text..rr*r9)r. expandtabsrWS_TRANSresplitrr=)rPwidthZchunksrOZcur_lineZcur_lenrMrrrrKws:      rKcCs |tS)N)rr)r"rrrtranslate_longoptsrhc@seZdZgfddZdS)r<cCsx|D]}t||dqWdS)N)rA)rr[r"rrrrs zOptionDummy.__init__N)rXrYrZrrrrrr<sr<__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %drR)r:stringrer>Zdistutils.errorsZ longopt_patcompiler3Z neg_alias_rer1 maketransrrr]Z whitespacerdrKrhr<rXrPwprintr=rrrr s( T6   PKr ] (__pycache__/unixccompiler.cpython-37.pycnu[B  f|;@sdZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZejdkr~ddlZGd d d e ZdS) a9distutils.unixccompiler Contains the UnixCCompiler class, a subclass of CCompiler that handles the "typical" Unix-style command-line C compiler: * macros defined with -Dname[=value] * macros undefined with -Uname * include search directories specified with -Idir * libraries specified with -lllib * library search directories specified with -Ldir * compile handled by 'cc' (or similar) executable with -c option: compiles .c to .o * link static library handled by 'ar' command (possibly with 'ranlib') * link shared library handled by 'cc -shared' N) sysconfig)newer) CCompilergen_preprocess_optionsgen_lib_options)DistutilsExecError CompileErrorLibError LinkError)logdarwinc seZdZdZddgdgdgddgdgddgddZejddd krNd ged <d d d dddgZdZdZ dZ dZ dZ dZ ZZeZejdkrdZfddZd.ddZddZd/d d!Zd0d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd1d,d-ZZS)2 UnixCCompilerZunixNZccz-sharedZarz-cr) preprocessorcompiler compiler_so compiler_cxx linker_so linker_exearchiverranlibr rz.cz.Cz.ccz.cxxz.cppz.mz.oz.az.soz.dylibz.tbdzlib%s%scygwinz.execsFt|j||||\}}}td}|r<||kr<|||||fS)z'Remove standard library path from rpathZLIBDIR)super __class__ _fix_lib_argsrget_config_varremove)self libraries library_dirsruntime_library_dirsZlibdir)r| d|g|rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn*t k r} z t | Wdd} ~ XYnXdS)Nz-or)Z_fix_compile_argsrrextendappendZforcermkpathospathdirnamespawnrr) rsourceZ output_fileZmacrosZ include_dirs extra_preargsextra_postargs fixed_argsignorepp_optsZpp_argsmsgr!r!r" preprocess_s$      zUnixCCompiler.preprocessc Csp|j}tjdkr t|||}y ||||d|g|Wn*tk rj}z t|Wdd}~XYnXdS)Nr z-o)rsysplatform _osx_supportcompiler_fixupr)rr) robjsrcZextZcc_argsr,r/rr0r!r!r"_compileys   zUnixCCompiler._compilerc Cs|||\}}|j||d}|||r|tj|||j|g||j |j ry||j |gWqt k r}z t |Wdd}~XYqXn t d|dS)N) output_dirzskipping %s (up-to-date))_fix_object_argslibrary_filename _need_linkr%r&r'r(r)robjectsrrr r debug)rr=Zoutput_libnamer9r> target_langoutput_filenamer0r!r!r"create_static_libs zUnixCCompiler.create_static_libc Cs|||\}}||||}|\}}}t||||}t|ttdfsPtd|dk rftj ||}| ||r||j |d|g}| rdg|dd<| r| |dd<| r| | | tj|y|tjkr|jdd}n|jdd}| dkrv|jrvd}tj|ddkrDd}xd||krB|d7}q(Wtj||d kr`d}nd}|j||||<tjd krt||}|||Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz%'output_dir' must be a string or Nonez-oz-grzc++env=Z ld_so_aixr zskipping %s (up-to-date))r:rr isinstancestrtype TypeErrorr&r'joinr<r=r#r%r(rZ EXECUTABLErrrbasenamer2r3r4r5r)rr r r>)rZ target_descr=r@r9rrr Zexport_symbolsr>r+r,Z build_tempr?r-Zlib_optsZld_argsZlinkerioffsetr0r!r!r"linksN      zUnixCCompiler.linkcCsd|S)Nz-Lr!)rdirr!r!r"library_dir_optionsz UnixCCompiler.library_dir_optioncCsd|kpd|kS)NZgcczg++r!)rZ compiler_namer!r!r"_is_gccszUnixCCompiler._is_gcccCstjtd}tjdddkr,d|StjdddkrFd|Stjddd krz||rnd d|gSd d|gS||rtd d krd|Sd|Snd|SdS)NZCCrr z-LZfreebsdz -Wl,-rpath=zhp-uxz-Wl,+sz+sZGNULDZyesz-Wl,--enable-new-dtags,-Rz-Wl,-Rz-R)r&r'rJrrr2r3rP)rrNrr!r!r"runtime_library_dir_options     z(UnixCCompiler.runtime_library_dir_optioncCsd|S)Nz-lr!)rlibr!r!r"library_optionszUnixCCompiler.library_optioncCs|j|dd}|j|dd}|j|dd}|j|dd}tjdkrptd}td|} | dkrfd } n | d } x|D]} tj | |} tj | |} tj | |}tj | |}tjdkrD| d s| d rD| d sDtj | | d d|} tj | | d d|} tj | | d d|}tj | | d d|}tj | rV| Stj |rh|Stj | rz| Stj |rx|SqxWdS)Nshared)Zlib_typedylib xcode_stubstaticr ZCFLAGSz-isysroot\s*(\S+)/rCz/System/z/usr/z /usr/local/) r;r2r3rrresearchgroupr&r'rI startswithexists)rdirsrTr>Zshared_fZdylib_fZ xcode_stub_fZstatic_fZcflagsmZsysrootrNrVrWrYrXr!r!r"find_library_files>       zUnixCCompiler.find_library_file)NNNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname__Z compiler_typeZ executablesr2r3Zsrc_extensionsZ obj_extensionZstatic_lib_extensionZshared_lib_extensionZdylib_lib_extensionZxcode_stub_lib_extensionZstatic_lib_formatZshared_lib_formatZdylib_lib_formatZxcode_stub_lib_formatZ exe_extensionrr1r8rArMrOrPrSrUrb __classcell__r!r!)rr"r -sF       >*r )__doc__r&r2r[Z distutilsrZdistutils.dep_utilrZdistutils.ccompilerrrrZdistutils.errorsrrr r r r3r4r r!r!r!r"s    PKr ]V&__pycache__/spawn.cpython-37.opt-1.pycnu[B  f@sdZddlZddlZddlmZmZddlmZddlm Z dddZ d d Z dd d Z ej d krvddlmZdadadddZdddZdS)zdistutils.spawn Provides the 'spawn()' function, a front-end to various platform- specific functions for launching another program in a sub-process. Also provides the 'find_executable()' to search the path for a given executable name. N)DistutilsPlatformErrorDistutilsExecError)DEBUG)logcCsNt|}tjdkr"t|||dn(tjdkrt | } | dkr"dSts,|}td|| fn,t!| rPqvntsZ|}td|| fqvWdS)Nrrr$MACOSX_DEPLOYMENT_TARGETcSsg|] }t|qSr)int).0xrrr esz _spawn_posix...cSsg|] }t|qSr)r()r)r*rrrr+kszF$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure)r&zunable to execute %r: %s rz(unable to execute %r for unknown reasonszcommand %r failed: %srz"command %r terminated by signal %dz%command %r failed with exit status %dz1unknown error executing %r: termination status %d)"rrrr execvpexecvsysplatform _cfg_targetr%Zget_config_varsplit_cfg_target_splitenvirongetrdictexecvpeexecveforkr!rstderrwritestrerror_exitwaitpidrr WIFSIGNALEDWTERMSIG WIFEXITED WEXITSTATUS WIFSTOPPED)rrrrr"Zexec_fnenvZ cur_targetZmy_msgpideZstatusr#Z exit_statusrrrr Xs      &     r c Cstj|\}}tjdkr*|dkr*|d}tj|r:|S|dkrtjdd}|dkrytd}Wnt t fk rtj }YnX|sdS| tj }x*|D]"}tj||}tj|r|SqWdS)zTries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. Zwin32z.exeNPATHCS_PATH)r pathsplitextr/r0isfiler4r5confstrAttributeError ValueErrordefpathr2pathsepr)r"rI_Zextpathspfrrrrs(     r)rrr)rrr)rrr)N)__doc__r/r Zdistutils.errorsrrZdistutils.debugrZ distutilsrrrrr0r%r1r3r rrrrrs       QPKr ]ℂ __pycache__/log.cpython-37.pycnu[B  f@sldZdZdZdZdZdZddlZGdd d ZeZej Z ej Z ej Z ej Z ej Z ejZd d Zd d ZdS)z,A simple log mechanism styled after PEP 282.Nc@sPeZdZefddZddZddZddZd d Zd d Z d dZ ddZ dS)LogcCs ||_dS)N) threshold)selfrr 2/opt/alt/python37/lib64/python3.7/distutils/log.py__init__sz Log.__init__cCs|tttttfkr"tdt|||jkr|r8||}|tttfkrNtj }ntj }y| d|Wn:t k r|j }||d|}| d|YnX|dS)Nz%s wrong log levelz%s backslashreplace)DEBUGINFOWARNERRORFATAL ValueErrorstrrsysstderrstdoutwriteUnicodeEncodeErrorencodingencodedecodeflush)r levelmsgargsstreamrr r r _logs zLog._logcGs||||dS)N)r")r rrr r r r log'szLog.logcGs|t||dS)N)r"r)r rr r r r debug*sz Log.debugcGs|t||dS)N)r"r)r rr r r r info-szLog.infocGs|t||dS)N)r"r)r rr r r r warn0szLog.warncGs|t||dS)N)r"r)r rr r r r error3sz Log.errorcGs|t||dS)N)r"r)r rr r r r fatal6sz Log.fatalN) __name__ __module__ __qualname__rr r"r#r$r%r&r'r(r r r r rs rcCstj}|t_|S)N) _global_logr)roldr r r set_thresholdAsr.cCs8|dkrttn"|dkr$ttn|dkr4ttdS)Nrrr)r.rrr)vr r r set_verbosityGs   r0)__doc__rrrrrrrr,r#r$r%r&r'r(r.r0r r r r s +PKr ]#dCC.__pycache__/msvc9compiler.cpython-37.opt-1.pycnu[B  f/w@sRdZddlZddlZddlZddlZddlmZmZmZm Z m Z ddl m Z m Z mZddlmZddlmZddlZejZejZejZejZejejejejfZ ej!dkoej"dkZ#e#rd Z$d Z%d Z&n d Z$d Z%dZ&dddZ'GdddZ(GdddZ)ddZ*ddZ+ddZ,ddZ-d$ddZ.e*Z/e/d kr>ed!e/Gd"d#d#e Z0dS)%a distutils.msvc9compiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for the Microsoft Visual Studio 2008. The module is compatible with VS 2005 and VS 2008. You can find legacy support for older versions of VS in distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_preprocess_optionsgen_lib_options)log) get_platformwin32lz1Software\Wow6432Node\Microsoft\VisualStudio\%0.1fz5Software\Wow6432Node\Microsoft\Microsoft SDKs\Windowsz,Software\Wow6432Node\Microsoft\.NETFrameworkz%Software\Microsoft\VisualStudio\%0.1fz)Software\Microsoft\Microsoft SDKs\Windowsz Software\Microsoft\.NETFrameworkx86Zamd64)r z win-amd64c@sPeZdZdZddZeeZddZeeZddZeeZdd Ze eZd S) Regz2Helper class to read values from the registry cCs:x,tD]$}|||}|r||kr||SqWt|dS)N)HKEYS read_valuesKeyError)clspathkeybasedrtdd}YnX|rPtj|sd|}tj |d}|rtj|rtj |tj tj d}tj |}tj|std|dSntd||std dStj |d }tj|r|Std dS) zFind the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. z %s\Setup\VCr>z%Unable to find productdir in registryNzVS%0.f0COMNTOOLSZVCz%s is not a valid directoryz Env var %s is not set or invalidzNo productdir foundz vcvarsall.batzUnable to find vcvarsall.bat)r7rrrr debugrVrisdirenvirongetr[pardirabspathisfile)r;r8r>ZtoolskeyZtoolsdir vcvarsallrrrfind_vcvarsalls2         rec Cs<t|}ddddh}i}|dkr(tdtd||tjd||ftjtjd }z|\}}|d krzt| d | d }xr| d D]d}t |}d |krq| }| d d\} } | } | |kr| tjr| dd} t| || <qWWd|j|jXt|t|kr8ttt||S)zDLaunch vcvarsall.bat and read the settings from its environment includelibZlibpathrNzUnable to find vcvarsall.batz'Calling 'vcvarsall.bat %s' (version=%s)z "%s" %s & set)stdoutstderrrr+ =rrG)rerr r] subprocessPopenPIPEZ communicatewaitr*rQrr&stripr%endswithrVrZr\rhcloserirP ValueErrorstrlistkeys) r;ZarchrdZ interestingresultpopenrhrilinerr(rrrquery_vcvarsalls<          rzg @z(VC %0.1f is not supported by this modulec @seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd.ddZd/ddZd0ddZd1ddZd2ddZd3ddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd4d*d+Zd,d-ZdS)5 MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs8t||||t|_d|_g|_d|_d|_d|_dS)NzSoftware\Microsoft\VisualStudioF) rr<VERSION_MSVCCompiler__versionZ_MSVCCompiler__root_MSVCCompiler__paths plat_name_MSVCCompiler__arch initialized)r:verboseZdry_runZforcerrrr<IszMSVCCompiler.__init__NcCs|dkrt}d}||kr(td|fdtjkrfdtjkrf|drfd|_d|_d|_d|_d |_ n|tksx|d krt |}nt td t |}t t |}|d  tj|_|d tjd <|dtjd<t|jdkrtd|j|d|_|d|_|d|_|d|_|d |_ y,x&tjd  dD]}|j|q||j kr>|}d|}y"||jg| |g|gWqhtk r8}z t|Wdd}~XYqhXqhn||jkrtj |}tj |}yl||jgd|d|g|gtj tj |\}}tj ||d}||jgd|g|gWqhtk r}z t|Wdd}~XYqhXqhntd||fd |}y&||jg| | ||g|Wqhtk rj}z t|Wdd}~XYqhXqhW| S) Nz/cz/Tcz/Tpz/foz-hz-rz.rcz"Don't know how to compile %s to %sz/Fo)rrZ_setup_compilerextendrrrrVrrb _c_extensions_cpp_extensionsrspawnrrrrdirnamerrrr[r)r:Zsourcesrr6Z include_dirsr] extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsobjsrcrZ input_optZ output_optmsgZh_dirZrc_dirrrZrc_filerrrcompilesj              zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy||jg|Wqtk r}z t|Wdd}~XYqXn t d|dS)N)rz/OUT:zskipping %s (up-to-date)) rr_fix_object_argslibrary_filename _need_linkrrgrrr r]) r:rZoutput_libnamerr] target_langoutput_filenameZlib_argsrrrrcreate_static_libs zMSVCCompiler.create_static_libc CsX|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||rH|t j kr| r|j dd}q|jdd}n| r|j }n|j}g}x|pgD]}|d|qW||||d|g}tj|d} |dk rPtjtj|\}}tj | ||}|d|||| || rp| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnX|||}|dk rT|\}}d||f}y|dd d ||gWn,tk rD}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': rz/EXPORT:z/OUT:rz/IMPLIB:z-outputresource:%s;%szmt.exez-nologoz -manifestzskipping %s (up-to-date))rrrZ _fix_lib_argswarnrtr rVrr[rr EXECUTABLErrrrrrrmanifest_setup_ldargsrZmkpathrrrrmanifest_get_embed_infor r])r: target_descrrrZ librariesZ library_dirsZruntime_library_dirsZexport_symbolsr]rr build_temprZ fixed_argsZlib_optsZldflagsZ export_optsZsymld_argsZdll_nameZdll_extZ implib_filerZmfinfoZ mffilenamemfidZout_argrrrlink6sl           zMSVCCompiler.linkcCs,tj|tj|d}|d|dS)Nz .manifestz/MANIFESTFILE:)rVrr[rr)r:rrr temp_manifestrrrrsz"MSVCCompiler.manifest_setup_ldargscCs`x,|D] }|dr|ddd}PqWdS|tjkr>d}nd}||}|dkrXdS||fS)Nz/MANIFESTFILE::rrL) startswithrQrr_remove_visual_c_ref)r:rrargrrrrrrs    z$MSVCCompiler.manifest_get_embed_infocCsyt|}z |}Wd|Xtdtj}t|d|}d}t|d|}tdtj}t||dkrrdSt|d}z|||S|XWnt k rYnXdS)NzU|)rz*\s*zI|)w) openreadrrrerDOTALLrFsearchwriteOSError)r:Z manifest_fileZ manifest_fZ manifest_bufpatternrrrrs.     z!MSVCCompiler._remove_visual_c_refcCsd|S)Nz /LIBPATH:r)r:dirrrrlibrary_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)NztjddD]*}tjtj||}tj|rH|SqHW|S)aReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. ZPathr)r~rVrr[rbrcr_rQ)r:ZexerAfnrrrrs   zMSVCCompiler.find_exe)rrr)N)rr)NNNrNNN)NrN) NNNNNrNNNN)r) r/r0r1r2Z compiler_typeZ executablesrrrrrrrZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionr<rrrrrrrrrrrrrrrrrr{+sR  W  V  R + r{)r )1r2rVrlrNrZdistutils.errorsrrrrrZdistutils.ccompilerrrr Z distutilsr Zdistutils.utilr winregZ OpenKeyExrZEnumKeyrZ EnumValuer$errorrZ HKEY_USERSHKEY_CURRENT_USERHKEY_LOCAL_MACHINEZHKEY_CLASSES_ROOTrplatformmaxsizeZ NATIVE_WIN64r7r@r?rrr5rUrYr\rerzr|r{rrrrsL  >. # )  PKr ]>44bb'__pycache__/bcppcompiler.cpython-37.pycnu[B  fW:@sxdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z ddl mZddlmZddlmZGdd d e ZdS) zdistutils.bcppcompiler Contains BorlandCCompiler, an implementation of the abstract CCompiler class for the Borland C++ compiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkErrorUnknownFileError) CCompilergen_preprocess_optionsgen_lib_options) write_file)newer)logc @seZdZdZdZiZdgZdddgZeeZdZ dZ d Z d Z Z d Zdd dZdddZdddZd ddZd!ddZd"ddZd#ddZdS)$ BCPPCompilerzConcrete class that implements an interface to the Borland C/C++ compiler, as defined by the CCompiler abstract class. Zbcppz.cz.ccz.cppz.cxxz.objz.libz.dllz%s%sz.exercCst||||d|_d|_d|_d|_ddddg|_ddddg|_d d dd g|_d d dd g|_ g|_ d dd g|_ d dd d g|_ dS) Nz bcc32.exez ilink32.exeztlib.exez/tWMz/O2z/qz/g0z/Odz/Tpdz/Gnz/xz/r) r__init__cclinkerlibZpreprocess_optionscompile_optionscompile_options_debugldflags_sharedldflags_shared_debugZldflags_static ldflags_exeldflags_exe_debug)selfverboseZdry_runforcer;/opt/alt/python37/lib64/python3.7/distutils/bcppcompiler.pyr5s zBCPPCompiler.__init__Nc  Cs|||||||\}} }} } |p$g} | d|rB| |jn | |jxD| D]:} y| | \}}Wntk rwVYnXtj|}tj| } | tj | |dkrqV|dkry| dd| |gWqVt k r}z t |Wdd}~XYqVXqV||jkrd}n||jkr,d}nd}d| }y,| |jg| | ||g||gWqVt k r}z t |Wdd}~XYqVXqVW| S) Nz-cz.resz.rcZbrcc32z-foz-Pz-o)Z_setup_compileappendextendrrKeyErrorospathnormpathmkpathdirnamespawnrr _c_extensions_cpp_extensionsr)rZsources output_dirmacros include_dirsdebug extra_preargsextra_postargsZdependsobjectspp_optsZbuildZ compile_optsobjsrcextmsgZ input_optZ output_optrrrcompileQsF        (zBCPPCompiler.compilec Cs|||\}}|j||d}|||r~|dg|}|r:y||jg|Wqtk rz}z t|Wdd}~XYqXn td|dS)N)r*z/uzskipping %s (up-to-date)) _fix_object_argslibrary_filename _need_linkr'rrrr r-) rr0Zoutput_libnamer*r- target_langoutput_filenameZlib_argsr5rrrcreate_static_libs  zBCPPCompiler.create_static_libc Cs|||\}}||||\}}}|r8tdt||dk rNtj||}|||r|t j krd}| r~|j dd}q|j dd}n&d}| r|j dd}n|jdd}|dkrd}ntj|\}}tj|\}}tj|d}tj|d|}dg}x&|pgD]}|d||fqW|t||fd |ttjj|}|g}g}xF|D]>}tjtj|\}}|d kr||n ||qfWx$|D]}|d tj|qW|d |||d |g|dx<|D]4}|||| }|dkr(||n ||qW|d|d|d |g|d ||| r| |dd<| r|| |tj|y||jg|Wn,tk r}z t|Wdd}~XYnXn td|dS)Nz7I don't know what to do with 'runtime_library_dirs': %sZc0w32Zc0d32rrz%s.defZEXPORTSz %s=_%sz writing %sz.resz/L%sz/L.,z,,Zimport32Zcw32mtzskipping %s (up-to-date)) r7Z _fix_lib_argsr warnstrr"r#joinr9rZ EXECUTABLErrrrsplitsplitextr&rZexecuter mapr$normcaser find_library_filer%r'rrrr-) rZ target_descr0r;r*Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsr-r.r/Z build_tempr:Z startup_objZld_argsZdef_fileheadtailmodnamer4Ztemp_dircontentsZsymZobjects2Z resourcesfilebaselrlibfiler5rrrlinks|                    zBCPPCompiler.linkc Csv|r"|d}|d|d||f}n |d|f}xB|D]6}x0|D](}tj|||}tj|r>|Sq>Wq4WdSdS)NZ_dZ_bcpp)r"r#r@r8exists) rdirsrr-ZdlibZ try_namesdirnamerMrrrrE4s      zBCPPCompiler.find_library_filercCs|dkr d}g}x|D]}tjtj|\}}||jddgkrTtd||f|rdtj|}|dkr|tj|||q|dkr|tj||dq|tj|||j qW|S)Nrz.rcz.resz"unknown file type '%s' (from '%s')) r"r#rBrDsrc_extensionsrbasenamerr@ obj_extension)rZsource_filenamesZ strip_dirr*Z obj_namesZsrc_namerKr4rrrobject_filenamesNs"    zBCPPCompiler.object_filenamesc Cs|d||\}}}t||}dg|} |dk r>| d||rN|| dd<|r\| || ||js~|dks~t||r|r|tj |y| | Wn2t k r} zt | t | Wdd} ~ XYnXdS)Nz cpp32.exez-or)Z_fix_compile_argsr rr rr r%r"r#r&r'rprintr) rsourceZ output_filer+r,r.r/_r1Zpp_argsr5rrr preprocessis$      zBCPPCompiler.preprocess)rrr)NNNrNNN)NrN) NNNNNrNNNN)r)rr)NNNNN)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesr(r)rSrUZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrr6r<rNrErVrZrrrrrsJ   B  |  r)r^r"Zdistutils.errorsrrrrrrZdistutils.ccompilerrr r Zdistutils.file_utilr Zdistutils.dep_utilr Z distutilsr rrrrrs     PKr ]N"]1]1(__pycache__/_msvccompiler.cpython-37.pycnu[B  fM@sdZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZdd Zd d Zd d ZddZdddZdddZGddde ZdS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. N)DistutilsExecErrorDistutilsPlatformError CompileErrorLibError LinkError) CCompilergen_lib_options)log) get_platform)countc CsytjtjdtjtjBd}Wntk r<tddSXd}d}|xtD]}yt ||\}}}Wntk rPYnX|rT|tj krTt j |rTytt|}Wnttfk rwTYnX|dkrT||krT||}}qTWWdQRX||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)accesszVisual C++ is not registered)NNr)winregZ OpenKeyExHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYOSErrorr debugr Z EnumValueZREG_SZospathisdirintfloat ValueError TypeError)key best_versionbest_dirivZvc_dirZvtversionrpsz_get_vc_env..zUnable to find vcvarsall.batzcmd /u /c "{}" {} && set)stderrzutf-16lereplace)r&zError executing {}cSs$i|]\}}}|r|r||qSr)r8)r9rr5r:rrr r;scss|]}|dVqdS)=N) partition)r9linerrr sz_get_vc_env..)rgetenvr)itemsr7rr+r,formatZSTDOUTdecoder/r erroroutputcmd splitlines)r4r6r5outexcenvrrr _get_vc_envns$     rMcCsN|stdtj}x2|D]*}tjtj||}tj|r|SqW|S)atReturn path to an MSVC executable program. Tries to find the program in several places: first, one of the MSVC program search paths from the registry; next, the directories in the PATH environment variable. If any of those work, return an absolute path that is known to exist. If none of them work, just return the original program name, 'exe'. r)rrBsplitpathseprr-abspathr3)Zexepathspfnrrr _find_exes   rTZx86Z x86_amd64)Zwin32z win-amd64c seZdZdZdZiZdgZdddgZdgZdgZ eeee Z d Z d Z d Z d Zd ZZdZd(ddZd)ddZd*ddZd+ddZd,ddZd-ddZfddZd d!Zd"d#Zd$d%Zd.d&d'ZZS)/ MSVCCompilerzwConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.Zmsvcz.cz.ccz.cppz.cxxz.rcz.mcz.resz.objz.libz.dllz%s%sz.exercCs t||||d|_d|_dS)NF)r__init__ plat_name initialized)selfverboseZdry_runZforcerrr rVszMSVCCompiler.__init__NcCs|jrtd|dkrt}|tkr6tdttt|}t|}|sRtd|dd|_ |j t j }t d||_t d||_t d||_t d ||_t d ||_t d ||_x2|d d t j D]}|r||t jqWx6|d d t j D]}|r||t jqWd|_ddddddg|_ddddddg|_dddg}ddddg}|d!|_|d"|_|d#|_|d$|_||_||_ t!j"df|jt!j"df|jt!j"d f|jt!j#df|jt!j#df|jt!j#d f|jt!j$df|jt!j$df|jt!j$d f|j i |_%d |_dS)%Nzdon't init multiple timesz--plat-name must be one of {}z7Unable to find a compatible Visual Studio installation.rzcl.exezlink.exezlib.exezrc.exezmc.exezmt.exeZincludelibz/nologoz/Oxz/W3z/GLz/DNDEBUGz/MDz/Odz/MDdz/Ziz/D_DEBUGz/INCREMENTAL:NOz/LTCGz /DEBUG:FULL/MANIFEST:EMBED,ID=1/DLL/MANIFEST:EMBED,ID=2/MANIFESTUAC:NOFT)r])r])r^r_r`)r^r_r`)&rXAssertionErrorr PLAT_TO_VCVARSrrDtuplerMr*_pathsrNrrOrTcclinkerr\rcmcZmtZadd_include_dirrstripsepZadd_library_dirZpreprocess_optionscompile_optionscompile_options_debugZ ldflags_exeZldflags_exe_debugZldflags_sharedZldflags_shared_debugZldflags_staticZldflags_static_debugrZ EXECUTABLEZ SHARED_OBJECTZSHARED_LIBRARY_ldflags)rYrWr4Zvc_envrQdirldflagsZ ldflags_debugrrr initializesZ                     zMSVCCompiler.initializer[csTfddjDfddjjDp4dfdd}tt||S)Ncsi|] }j|qSr) obj_extension)r9ext)rYrr r;sz1MSVCCompiler.object_filenames..csi|] }j|qSr) res_extension)r9rr)rYrr r;sr[cstj|\}}r"tj|}n2tj|\}}|tjjtjjfrT|dd}ytj||St k rt d |YnXdS)NzDon't know how to compile {}) rrsplitextbasename splitdrive startswithrjaltsepr- LookupErrorrrD)rRbaserrr5)ext_map output_dir strip_dirrr make_out_path#s z4MSVCCompiler.object_filenames..make_out_path)src_extensions_rc_extensions_mc_extensionslistmap)rYZsource_filenamesr~r}rr)r|r}rYr~r object_filenamess zMSVCCompiler.object_filenamesc  Cs|js||||||||} | \}} }} } |p6g} | d|rT| |jn | |jd}x| D]}y| |\}}Wntk rwlYnX|rtj |}||j krd|}nD||j krd|}d}n*||j krB|}d|}y||jg| ||gWqltk r<}z t|Wdd}~XYqlXqln||jkrtj |}tj |}y\||jd|d||gtj tj |\}}tj ||d }||jd||gWqltk r}z t|Wdd}~XYqlXqlntd |||jg| | }|r$|d |||d |||y||Wqltk r}z t|Wdd}~XYqlXqlW| S) Nz/cFz/Tcz/TpTz/foz-hz-rz.rcz"Don't know how to compile {} to {}z/EHscz/Fo)rXrpZ_setup_compileappendextendrlrkKeyErrorrrrP _c_extensions_cpp_extensionsrspawnrgrrrdirnamerhrurvr-rDre)rYZsourcesr}ZmacrosZ include_dirsr extra_preargsextra_postargsZdependsZ compile_infoobjectsZpp_optsZbuildZ compile_optsZ add_cpp_optsobjsrcrrZ input_optZ output_optmsgZh_dirZrc_dirr{r5Zrc_fileargsrrr compile9sn               zMSVCCompiler.compilec Cs|js||||\}}|j||d}|||r|d|g}|rJy,td|jd|| |jg|Wqt k r}z t |Wdd}~XYqXn td|dS)N)r}z/OUT:zExecuting "%s" %s zskipping %s (up-to-date)) rXrp_fix_object_argslibrary_filename _need_linkr rr\r-rrr) rYrZoutput_libnamer}r target_langoutput_filenameZlib_argsrrrr create_static_libs zMSVCCompiler.create_static_libc Cs|js||||\}}||||}|\}}}|rL|dt|t||||}|dk rptj ||}| ||r|j || f}dd|pgD}||||d|g}tj |d} |dk r tj tj|\}}tj | ||}|d|| r| |dd<| r.|| tj tj|}||y,td|jd |||jg|Wn,tk r}z t|Wdd}~XYnXn td |dS) Nz5I don't know what to do with 'runtime_library_dirs': cSsg|] }d|qS)z/EXPORT:r)r9Zsymrrr sz%MSVCCompiler.link..z/OUT:rz/IMPLIB:zExecuting "%s" %srzskipping %s (up-to-date))rXrprZ _fix_lib_argswarnstrrrrr-rrmrrurvrrrrPZmkpathr rrfrrr)rYZ target_descrrr}Z librariesZ library_dirsZruntime_library_dirsZexport_symbolsrrrZ build_temprZ fixed_argsZlib_optsroZ export_optsZld_argsZdll_nameZdll_extZ implib_filerrrr linksL       zMSVCCompiler.linkc s4td}z|jtjd<t|S|tjd<XdS)Nr)rrBrdr)superr)rYrHZold_path) __class__rr rs    zMSVCCompiler.spawncCsd|S)Nz /LIBPATH:r)rYrnrrr library_dir_optionszMSVCCompiler.library_dir_optioncCs tddS)Nz:don't know how to set runtime library search path for MSVC)r)rYrnrrr runtime_library_dir_optionsz'MSVCCompiler.runtime_library_dir_optioncCs ||S)N)r)rYr\rrr library_optionszMSVCCompiler.library_optioncCs`|r|d|g}n|g}xB|D]6}x0|D](}tj|||}tj|r(|Sq(WqWdSdS)NZ_d)rrr-rr3)rYdirsr\rZ try_namesrnnameZlibfilerrr find_library_files    zMSVCCompiler.find_library_file)rrr)N)rr[)NNNrNNN)NrN) NNNNNrNNNN)r)__name__ __module__ __qualname____doc__Z compiler_typeZ executablesrrrrrrsrqZstatic_lib_extensionZshared_lib_extensionZstatic_lib_formatZshared_lib_formatZ exe_extensionrVrprrrrrrrrr __classcell__rr)rr rUsL   P  [  8 rU)N)rrZshutilstatr+rZdistutils.errorsrrrrrZdistutils.ccompilerrrZ distutilsr Zdistutils.utilr itertoolsr r!r2r7rMrTrbrUrrrr s$   " PKr ]hv)v)'__pycache__/fancy_getopt.cpython-37.pycnu[B  fxE@sdZddlZddlZddlZddlZddlTdZedeZedeefZ e ddZ Gd d d Z d d Zd dejDZddZddZGdddZedkrdZx2dD]*ZedeedeeeeqWdS)a6distutils.fancy_getopt Wrapper around the standard getopt module that provides the following additional features: * short and long options are tied together * options have help strings, so fancy_getopt could potentially create a complete usage summary * options set attributes of a passed-in object N)*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z ^(%s)=!(%s)$-_c@seZdZdZdddZddZddZd d d Zd d Zd dZ ddZ ddZ ddZ ddZ d!ddZddZd"ddZd#ddZdS)$ FancyGetoptaWrapper around the standard 'getopt()' module that provides some handy extra functionality: * short and long options are tied together * options have help strings, and help text can be assembled from them * options set attributes of a passed-in object * boolean options can have "negative aliases" -- eg. if --quiet is the "negative alias" of --verbose, then "--quiet" on the command line sets 'verbose' to false NcCsN||_i|_|jr|i|_i|_g|_g|_i|_i|_i|_ g|_ dS)N) option_table option_index _build_indexaliasnegative_alias short_opts long_opts short2long attr_name takes_arg option_order)selfrr;/opt/alt/python37/lib64/python3.7/distutils/fancy_getopt.py__init__)s zFancyGetopt.__init__cCs,|jx|jD]}||j|d<qWdS)Nr)rclearr)roptionrrrrQs  zFancyGetopt._build_indexcCs||_|dS)N)rr)rrrrrset_option_tableVszFancyGetopt.set_option_tablecCs<||jkrtd|n |||f}|j|||j|<dS)Nz'option conflict: already an option '%s')rDistutilsGetoptErrorrappend)r long_optionZ short_optionZ help_stringrrrr add_optionZs     zFancyGetopt.add_optioncCs ||jkS)zcReturn true if the option table for this parser has an option with long name 'long_option'.)r)rrrrr has_optioncszFancyGetopt.has_optioncCs |tS)zTranslate long option name 'long_option' to the form it has as an attribute of some object: ie., translate hyphens to underscores.) translate longopt_xlate)rrrrr get_attr_namehszFancyGetopt.get_attr_namecCs`t|tstxL|D]@\}}||jkr= 2Nz:invalid short option '%s': must a single character or None=:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens only)r r r rrepeatrlen ValueErrorr strrrrr getr longopt_rematchrr)rrlongshorthelpr0Zalias_torrr_grok_option_tables^                   zFancyGetopt._grok_option_tablec Cs|dkrtjdd}|dkr*t}d}nd}|d|j}yt|||j\}}Wn,tjk r}z t |Wdd}~XYnXx|D]\}}t |dkr|ddkr|j |d}n,t |dkr|ddd kst |dd}|j |} | r| }|j|s@|d ks t d |j|} | r<| }d}nd}|j|} |rr|j| dk rrt|| dd}t|| ||j||fqW|r||fS|SdS) aParse command-line options in args. Store as attributes on object. If 'args' is None or not supplied, uses 'sys.argv[1:]'. If 'object' is None or not supplied, creates a new OptionDummy object, stores option values there, and returns a tuple (args, object). If 'object' is supplied, it is modified in place and 'getopt()' just returns 'args'; in both cases, the returned 'args' is a modified copy of the passed-in 'args' list, which is left untouched. Nr,TF r+rrz--zboolean option can't have value)sysargv OptionDummyr:joinr getoptr errorZDistutilsArgErrorr1r r"r r4rr rr0getattrsetattrrr) rargsobjectZcreated_objectr Zoptsmsgr%valr attrrrrrAsF         zFancyGetopt.getoptcCs|jdkrtdn|jSdS)zReturns the list of (option, value) tuples processed by the previous run of 'getopt()'. Raises RuntimeError if 'getopt()' hasn't been called yet. Nz!'getopt()' hasn't been called yet)r RuntimeError)rrrrget_option_orders  zFancyGetopt.get_option_ordercCsvd}xV|jD]L}|d}|d}t|}|ddkr<|d}|dk rL|d}||kr |}q W|ddd}d}||} d |} |r|g} nd g} x|jD]}|dd \}}} t| | } |ddkr|dd}|dkr| r| d ||| dfn| d ||fn:d||f}| r:| d ||| dfn| d|x$| ddD]}| | |qVWqW| S)zGenerate help text (a list of strings, one per suggested line of output) from the option table for this FancyGetopt object. rr,r-r.Nr+Nr;zOption summary:r)z --%-*s %sz --%-*s z%s (-%s)z --%-*s)rr1 wrap_textr)rheaderZmax_optrr7r8lZ opt_widthZ line_widthZ text_widthZ big_indentlinesr9textZ opt_namesrrr generate_helpsF        zFancyGetopt.generate_helpcCs4|dkrtj}x ||D]}||dqWdS)N )r=stdoutrSwrite)rrOfilelinerrr print_helphszFancyGetopt.print_help)N)NN)NN)N)NN)__name__ __module__ __qualname____doc__rrrrrrr&r'r(r:rArKrSrYrrrrrs  (  M = OrcCst|}|||||S)N)rr(rA)optionsZ negative_optrFrEparserrrr fancy_getoptos r`cCsi|]}dt|qS)r;)ord).0Z_wscharrrr usrccCs"|dkr gSt||kr|gS|}|t}td|}dd|D}g}x|rg}d}xZ|rt|d}|||kr||d|d=||}q`|r|dddkr|d=Pq`W|r |dkr||dd||d|d|d<|dddkr |d=|d|qPW|S) zwrap_text(text : string, width : int) -> [string] Split 'text' into multiple lines of no more than 'width' characters each, and return the list of strings that results. Nz( +|-+)cSsg|] }|r|qSrr)rbZchrrr szwrap_text..rr-r;r<)r1 expandtabsrWS_TRANSresplitrr@)rRwidthZchunksrQZcur_lineZcur_lenrPrrrrNws:      rNcCs |tS)zXConvert a long option name to a valid Python identifier by changing "-" to "_". )rr)r%rrrtranslate_longoptsrjc@seZdZdZgfddZdS)r?z_Dummy class just used as a place to hold command-line option values as instance attributes.cCsx|D]}t||dqWdS)zkCreate a new OptionDummy instance. The attributes listed in 'options' will be initialized to None.N)rD)rr^r%rrrrs zOptionDummy.__init__N)rZr[r\r]rrrrrr?sr?__main__zTra-la-la, supercalifragilisticexpialidocious. How *do* you spell that odd word, anyways? (Someone ask Mary -- she'll know [or she'll say, "How should I know?"].)) (z width: %drT)r]r=stringrgrAZdistutils.errorsZ longopt_patcompiler5Z neg_alias_rer3 maketransrrr`Z whitespacerfrNrjr?rZrRwprintr@rrrr s* T6   PKr ][-,Q6Q6__pycache__/cmd.cpython-37.pycnu[B  fF@sbdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddlm Z GdddZ dS)ztdistutils.cmd Provides the Command class, the base class for the command classes in the distutils.command package. N)DistutilsOptionError)utildir_util file_util archive_utildep_util)logc@s"eZdZdZgZddZddZddZdd Zd d Z dCddZ ddZ dDddZ ddZ dEddZdFddZddZdGddZdd Zd!d"Zd#d$Zd%d&ZdHd'd(ZdId*d+Zd,d-Zd.d/Zd0d1ZdJd2d3ZdKd5d6ZdLd7d8ZdMd9d:ZdNd;d<ZdOd=d>Z dPd?d@Z!dQdAdBZ"d S)RCommanda}Abstract base class for defining command classes, the "worker bees" of the Distutils. A useful analogy for command classes is to think of them as subroutines with local variables called "options". The options are "declared" in 'initialize_options()' and "defined" (given their final values, aka "finalized") in 'finalize_options()', both of which must be defined by every command class. The distinction between the two is necessary because option values might come from the outside world (command line, config file, ...), and any options dependent on other options must be computed *after* these outside influences have been processed -- hence 'finalize_options()'. The "body" of the subroutine, where it does all its work based on the values of its options, is the 'run()' method, which must also be implemented by every command class. cCsbddlm}t||std|jtkr0td||_|d|_ |j |_ d|_ d|_ d|_ dS)zCreate and initialize a new Command object. Most importantly, invokes the 'initialize_options()' method, which is the real initializer and depends on the actual command being instantiated. r) Distributionz$dist must be a Distribution instancezCommand is an abstract classN)Zdistutils.distr isinstance TypeError __class__r RuntimeError distributioninitialize_optionsZ_dry_runverboseforcehelp finalized)selfZdistr r2/opt/alt/python37/lib64/python3.7/distutils/cmd.py__init__/s    zCommand.__init__cCs<|dkr0t|d|}|dkr*t|j|S|Snt|dS)Ndry_run_)getattrrAttributeError)rattrZmyvalrrr __getattr___s  zCommand.__getattr__cCs|js|d|_dS)N)rfinalize_options)rrrrensure_finalizediszCommand.ensure_finalizedcCstd|jdS)aSet default values for all the options that this command supports. Note that these defaults may be overridden by other commands, by the setup script, by config files, or by the command-line. Thus, this is not the place to code dependencies between options; generally, 'initialize_options()' implementations are just a bunch of "self.foo = None" assignments. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr{s zCommand.initialize_optionscCstd|jdS)aSet final values for all the options that this command supports. This is always called as late as possible, ie. after any option assignments from the command-line or from other commands have been done. Thus, this is the place to code option dependencies: if 'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as long as 'foo' still has the same value it was assigned in 'initialize_options()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrr s zCommand.finalize_optionsNcCsddlm}|dkr d|}|j||tjd|d}x\|jD]R\}}}||}|ddkrp|dd}t||}|j|d||ftjdqDWdS) Nr) longopt_xlatezcommand options for '%s':)levelz =z%s = %s) Zdistutils.fancy_getoptr#get_command_nameannouncerINFOZ user_options translater)rheaderindentr#optionrvaluerrr dump_optionss      zCommand.dump_optionscCstd|jdS)aA command's raison d'etre: carry out the action it exists to perform, controlled by the options initialized in 'initialize_options()', customized by other commands, the setup script, the command-line, and config files, and finalized in 'finalize_options()'. All terminal output and filesystem interaction should be done by 'run()'. This method must be implemented by all command classes. z,abstract method -- subclass %s must overrideN)rr )rrrrruns z Command.runrcCst||dS)zmIf the current verbosity level is of greater than or equal to 'level' print 'msg' to stdout. N)r)rmsgr$rrrr(szCommand.announcecCs&ddlm}|r"t|tjdS)z~Print 'msg' to stdout if the global DEBUG (taken from the DISTUTILS_DEBUG environment variable) flag is true. r)DEBUGN)Zdistutils.debugr2printsysstdoutflush)rr1r2rrr debug_prints zCommand.debug_printcCsBt||}|dkr"t||||St|ts>td|||f|S)Nz'%s' must be a %s (got `%s`))rsetattrr strr)rr-whatdefaultvalrrr_ensure_stringlikes   zCommand._ensure_stringlikecCs||d|dS)zWEnsure that 'option' is a string; if not defined, set it to 'default'. stringN)r=)rr-r;rrr ensure_stringszCommand.ensure_stringcCspt||}|dkrdSt|tr6t||td|n6t|trTtdd|D}nd}|sltd||fdS)zEnsure that 'option' is a list of strings. If 'option' is currently a string, we split it either on /,\s*/ or /\s+/, so "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become ["foo", "bar", "baz"]. Nz,\s*|\s+css|]}t|tVqdS)N)r r9).0vrrr sz-Command.ensure_string_list..Fz''%s' must be a list of strings (got %r)) rr r9r8resplitlistallr)rr-r<okrrrensure_string_lists   zCommand.ensure_string_listcCs6||||}|dk r2||s2td|||fdS)Nzerror in '%s' option: )r=r)rr-Ztesterr:Z error_fmtr;r<rrr_ensure_tested_stringszCommand._ensure_tested_stringcCs||tjjdddS)z5Ensure that 'option' is the name of an existing file.filenamez$'%s' does not exist or is not a fileN)rIospathisfile)rr-rrrensure_filenames zCommand.ensure_filenamecCs||tjjdddS)Nzdirectory namez)'%s' does not exist or is not a directory)rIrKrLisdir)rr-rrrensure_dirnames zCommand.ensure_dirnamecCst|dr|jS|jjSdS)N command_name)hasattrrQr __name__)rrrrr' s zCommand.get_command_namecGsJ|j|}|x0|D](\}}t||dkrt||t||qWdS)a>Set the values of any "undefined" options from corresponding option values in some other command object. "Undefined" here means "is None", which is the convention used to indicate that an option has not been changed between 'initialize_options()' and 'finalize_options()'. Usually called from 'finalize_options()' for options that depend on some other command rather than another option of the same command. 'src_cmd' is the other command from which option values will be taken (a command object will be created for it if necessary); the remaining arguments are '(src_option,dst_option)' tuples which mean "take the value of 'src_option' in the 'src_cmd' command object, and copy it to 'dst_option' in the current command object". N)rget_command_objr!rr8)rZsrc_cmdZ option_pairsZ src_cmd_objZ src_optionZ dst_optionrrrset_undefined_optionss  zCommand.set_undefined_optionscCs|j||}||S)zWrapper around Distribution's 'get_command_obj()' method: find (create if necessary and 'create' is true) the command object for 'command', call its 'ensure_finalized()' method, and return the finalized command object. )rrTr!)rcommandZcreateZcmd_objrrrget_finalized_command$szCommand.get_finalized_commandrcCs|j||S)N)rreinitialize_command)rrVZreinit_subcommandsrrrrX0szCommand.reinitialize_commandcCs|j|dS)zRun some other command: uses the 'run_command()' method of Distribution, which creates and finalizes the command object if necessary and then invokes its 'run()' method. N)r run_command)rrVrrrrY4szCommand.run_commandcCs6g}x,|jD]"\}}|dks$||r ||q W|S)akDetermine the sub-commands that are relevant in the current distribution (ie., that need to be run). This is based on the 'sub_commands' class attribute: each tuple in that list may include a method that we call to determine if the subcommand needs to be run for the current distribution. Return a list of command names. N) sub_commandsappend)rZcommandsZcmd_namemethodrrrget_sub_commands;s zCommand.get_sub_commandscCstd||dS)Nzwarning: %s: %s )rwarnr')rr1rrrr^Ksz Command.warncCstj||||jddS)N)r)rexecuter)rfuncargsr1r$rrrr_NszCommand.executecCstj|||jddS)N)r)rmkpathr)rnamemoderrrrcQszCommand.mkpathc Cstj|||||j ||jdS)zCopy a file respecting verbose, dry-run and force flags. (The former two default to whatever is in the Distribution object, and the latter defaults to false for commands that don't define it.))r)r copy_filerr)rinfileoutfile preserve_modepreserve_timeslinkr$rrrrfTs  zCommand.copy_filec Cstj||||||j |jdS)z\Copy an entire directory tree respecting verbose, dry-run, and force flags. )r)r copy_treerr)rrgrhrirjZpreserve_symlinksr$rrrrl]s zCommand.copy_treecCstj|||jdS)z$Move a file respecting dry-run flag.)r)r move_filer)rsrcdstr$rrrrmfszCommand.move_filecCs ddlm}||||jddS)z2Spawn an external command respecting dry-run flag.r)spawn)rN)Zdistutils.spawnrpr)rcmdZ search_pathr$rprrrrpjs z Command.spawnc Cstj|||||j||dS)N)rownergroup)r make_archiver)rZ base_nameformatZroot_dirZbase_dirrrrsrrrrtos zCommand.make_archivecCs|dkrd|}t|tr"|f}nt|ttfs8td|dkrRd|d|f}|jsdt||rv| ||||n t |dS)aSpecial case of 'execute()' for operations that process one or more input files and generate one output file. Works just like 'execute()', except the operation is skipped and a different message printed if 'outfile' already exists and is newer than all files listed in 'infiles'. If the command defined 'self.force', and it is true, then the command is unconditionally run -- does no timestamp checks. Nzskipping %s (inputs unchanged)z9'infiles' must be a string, or a list or tuple of stringszgenerating %s from %sz, ) r r9rEtupler joinrrZ newer_groupr_rdebug)rZinfilesrhr`raZexec_msgZskip_msgr$rrr make_fileus  zCommand.make_file)Nr")r)N)N)N)r)r)Nr)rb)rrNr)rrrr)r)rr)NNNN)NNr)#rS __module__ __qualname____doc__rZrrr!rr r/r0r(r7r=r?rHrIrNrPr'rUrWrXrYr]r^r_rcrfrlrmrprtryrrrrr sF0              r )r|r4rKrCZdistutils.errorsrZ distutilsrrrrrrr rrrrs   PKr ]뭲(__pycache__/version.cpython-37.opt-1.pycnu[B  f90@s>dZddlZGdddZGdddeZGdddeZdS) aProvides classes to represent module version numbers (one class for each style of version numbering). There are currently two such classes implemented: StrictVersion and LooseVersion. Every version number class implements the following interface: * the 'parse' method takes a string and parses it to some internal representation; if the string is an invalid version number, 'parse' raises a ValueError exception * the class constructor takes an optional string argument which, if supplied, is passed to 'parse' * __str__ reconstructs the string that was passed to 'parse' (or an equivalent string -- ie. one that will generate an equivalent version number instance) * __repr__ generates Python code to recreate the version number instance * _cmp compares the current instance with either another instance of the same class or a string (which will be parsed to an instance of the same class, thus must follow the same rules) Nc@sJeZdZdZdddZddZddZd d Zd d Zd dZ ddZ dS)VersionzAbstract base class for version numbering classes. Just provides constructor (__init__) and reproducer (__repr__), because those seem to be the same for all version numbering classes; and route rich comparisons to _cmp. NcCs|r||dS)N)parse)selfvstringr6/opt/alt/python37/lib64/python3.7/distutils/version.py__init__&szVersion.__init__cCsd|jjt|fS)Nz %s ('%s')) __class____name__str)rrrr__repr__*szVersion.__repr__cCs||}|tkr|S|dkS)Nr)_cmpNotImplemented)rothercrrr__eq__-s zVersion.__eq__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__lt__3s zVersion.__lt__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__le__9s zVersion.__le__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__gt__?s zVersion.__gt__cCs||}|tkr|S|dkS)Nr)r r)rrrrrr__ge__Es zVersion.__ge__)N) r __module__ __qualname____doc__rr rrrrrrrrrrs rc@s<eZdZdZedejejBZddZ ddZ ddZ d S) StrictVersiona?Version numbering for anal retentives and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag on the end. The pre-release tag consists of the letter 'a' or 'b' followed by a number. If the numeric components of two version numbers are equal, then one with a pre-release tag will always be deemed earlier (lesser) than one without. The following are valid version numbers (shown in the order that would be obtained by sorting according to the supplied cmp function): 0.4 0.4.0 (these two are equivalent) 0.4.1 0.5a1 0.5b3 0.5 0.9.6 1.0 1.0.4a3 1.0.4b1 1.0.4 The following are examples of invalid version numbers: 1 2.7.2.2 1.3.a4 1.3pl1 1.3c4 The rationale for this version numbering system will be explained in the distutils documentation. z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs|j|}|std||ddddd\}}}}}|rTttt|||g|_nttt||gd|_|r|dt|f|_nd|_dS) Nzinvalid version number '%s')rr) version_rematch ValueErrorgrouptuplemapintversion prerelease)rrr majorminorZpatchr'Zprerelease_numrrrrs  zStrictVersion.parsecCsb|jddkr*dtt|jdd}ndtt|j}|jr^||jdt|jd}|S)Nrr.r)r&joinr$r r')rrrrr__str__s zStrictVersion.__str__cCst|trt|}|j|jkr2|j|jkr.dSdS|jsB|jsBdS|jrR|jsRdS|jsb|jrbdS|jr|jr|j|jkr~dS|j|jkrdSdSndS)Nrr) isinstancer rr&r')rrrrrr s&         zStrictVersion._cmpN) r rrrrecompileVERBOSEASCIIrrr,r rrrrr]s # rc@sHeZdZdZedejZdddZddZ dd Z d d Z d d Z dS) LooseVersionaVersion numbering for anarchists and software realists. Implements the standard interface for version number classes as described above. A version number consists of a series of numbers, separated by either periods or strings of letters. When comparing version numbers, the numeric components will be compared numerically, and the alphabetic components lexically. The following are all valid version numbers, in no particular order: 1.5.1 1.5.2b2 161 3.10a 8.02 3.4j 1996.07.12 3.2.pl0 3.1.1.6 2g6 11g 0.960923 2.2beta29 1.13++ 5.5.kw 2.0b1pl0 In fact, there is no such thing as an invalid version number under this scheme; the rules for comparison are simple and predictable, but may not always give the results you want (for some definition of "want"). z(\d+ | [a-z]+ | \.)NcCs|r||dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd|j|D}x:t|D].\}}yt|||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|qS)r*r).0xrrr 8sz&LooseVersion.parse..)r component_resplit enumerater%r!r&)rrZ componentsiobjrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr,CszLooseVersion.__str__cCs dt|S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|trt|}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrr-r)r.r r3r&)rrrrrr Ks    zLooseVersion._cmp)N) r rrrr/r0r1r7rrr,r r rrrrr3 s r3)rr/rrr3rrrrs >/PKr ] rArA*__pycache__/ccompiler.cpython-37.opt-2.pycnu[B YI~dI@sddlZddlZddlZddlTddlmZddlmZddlm Z ddl m Z m Z ddl mZmZddlmZGd d d Zd Zdd d ZddddddZddZdddZddZddZdS)N)*)spawn) move_file)mkpath)newer_pairwise newer_group) split_quotedexecute)logc @seZdZdZdZdZdZdZdZdZ dZ ddddddZ dddgZ dpddZ d d Zd d Zd dZddZdqddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Z drd/d0Z!d1d2Z"d3d4Z#d5d6Z$d7d8Z%dsd9d:Z&dtd;d<Z'd=d>Z(dud?d@Z)dAZ*dBZ+dCZ,dvdDdEZ-dwdFdGZ.dxdHdIZ/dydJdKZ0dLdMZ1dNdOZ2dPdQZ3dzdRdSZ4d{dTdUZ5d|dWdXZ6d}dYdZZ7d~d[d\Z8dd^d_Z9ddadbZ:dcddZ;dedfZdkdlZ?ddndoZ@dS) CCompilerNczc++Zobjc)z.cz.ccz.cppz.cxxz.mrcCsf||_||_||_d|_g|_g|_g|_g|_g|_g|_ x$|j D]}| ||j |qHWdS)N) dry_runforceverbose output_dirmacros include_dirs libraries library_dirsruntime_library_dirsobjects executableskeysset_executable)selfrr rkeyr8/opt/alt/python37/lib64/python3.7/distutils/ccompiler.py__init__UszCCompiler.__init__cKs@x:|D]2}||jkr(td||jjf||||qWdS)Nz$unknown executable '%s' for class %s)r ValueError __class____name__r)rkwargsrrrrset_executablesys   zCCompiler.set_executablescCs,t|trt||t|n t|||dS)N) isinstancestrsetattrr)rrvaluerrrrs zCCompiler.set_executablecCs0d}x&|jD]}|d|kr |S|d7}q WdS)Nr)r)rnameidefnrrr _find_macros    zCCompiler._find_macrocCsdx^|D]V}t|trHt|dkrHt|dts:|ddkrHt|dtstd|ddqWdS)N)r(r(rzinvalid macro definition '%s': z.must be tuple (string,), (string, string), or z(string, None))r$tuplelenr% TypeError)rZ definitionsr+rrr_check_macro_definitionss    z"CCompiler._check_macro_definitionscCs.||}|dk r|j|=|j||fdS)N)r,rappend)rr)r'r*rrr define_macros zCCompiler.define_macrocCs0||}|dk r|j|=|f}|j|dS)N)r,rr2)rr)r*Zundefnrrrundefine_macros zCCompiler.undefine_macrocCs|j|dS)N)rr2)rdirrrradd_include_dirszCCompiler.add_include_dircCs|dd|_dS)N)r)rdirsrrrset_include_dirsszCCompiler.set_include_dirscCs|j|dS)N)rr2)rlibnamerrr add_libraryszCCompiler.add_librarycCs|dd|_dS)N)r)rZlibnamesrrr set_librariesszCCompiler.set_librariescCs|j|dS)N)rr2)rr5rrradd_library_dirszCCompiler.add_library_dircCs|dd|_dS)N)r)rr7rrrset_library_dirs szCCompiler.set_library_dirscCs|j|dS)N)rr2)rr5rrradd_runtime_library_dirsz!CCompiler.add_runtime_library_dircCs|dd|_dS)N)r)rr7rrrset_runtime_library_dirssz"CCompiler.set_runtime_library_dirscCs|j|dS)N)rr2)robjectrrradd_link_object szCCompiler.add_link_objectcCs|dd|_dS)N)r)rrrrrset_link_objects(szCCompiler.set_link_objectscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|dkrg}|j|d|d}t ||}i} xRt t |D]B} || } || } t j | d} |t j | | | f| | <qW||||| fS)Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of stringsr) strip_dirrr()rr$r%r0rlistrr.object_filenamesgen_preprocess_optionsranger/ospathsplitextrdirname)rZoutdirrZincdirssourcesdependsZextrarpp_optsbuildr*srcobjextrrr_setup_compile6s8   zCCompiler._setup_compilecCs0|dg}|rdg|dd<|r,||dd<|S)Nz-cz-grr)rrNdebugZbeforecc_argsrrr _get_cc_argsas   zCCompiler._get_cc_argscCs|dkr|j}nt|ts"td|dkr2|j}n"t|trL||jpFg}ntd|dkrd|j}n*t|ttfrt||jpg}ntd|||fS)Nz%'output_dir' must be a string or Nonez/'macros' (if supplied) must be a list of tuplesz6'include_dirs' (if supplied) must be a list of strings)rr$r%r0rrDrr.)rrrrrrr_fix_compile_argsjs   zCCompiler._fix_compile_argscCs|j||d}|ifS)N)r)rE)rrLrrMrrrr _prep_compiles zCCompiler._prep_compilecCsHt|ttfstdt|}|dkr.|j}nt|ts@td||fS)Nz,'objects' must be a list or tuple of stringsz%'output_dir' must be a string or None)r$rDr.r0rr%)rrrrrr_fix_object_argss zCCompiler._fix_object_argscCs|dkr|j}n*t|ttfr2t||jp,g}ntd|dkrJ|j}n*t|ttfrlt||jpfg}ntd|dkr|j}n*t|ttfrt||jpg}ntd|||fS)Nz3'libraries' (if supplied) must be a list of stringsz6'library_dirs' (if supplied) must be a list of stringsz>'runtime_library_dirs' (if supplied) must be a list of strings)rr$rDr.r0rr)rrrrrrr _fix_lib_argss&zCCompiler._fix_lib_argscCs2|jr dS|jr t||dd}n t||}|SdS)NTnewer)missing)rr r)rr output_filer[rrr _need_links  zCCompiler._need_linkc Cst|ts|g}d}t|j}x^|D]V}tj|\}}|j|}y |j |}||krb|}|}Wq$t k rxYq$Xq$W|S)N) r$rDr/language_orderrHrIrJ language_mapgetindexr) rrLlangrbsourcebaserRZextlangZextindexrrrdetect_languages      zCCompiler.detect_languagecCsdS)Nr)rrdr]rr extra_preargsextra_postargsrrr preprocesss zCCompiler.preprocessc  Csz|||||||\}} }} } || ||} xH| D]@} y| | \}}Wntk r\w2YnX|| ||| || q2W| S)N)rSrVKeyError_compile)rrLrrrrTrgrhrMrrNrOrUrQrPrRrrrcompiles6  zCCompiler.compilecCsdS)Nr)rrQrPrRrUrhrNrrrrkCszCCompiler._compilecCsdS)Nr)rroutput_libnamerrT target_langrrrcreate_static_libIszCCompiler.create_static_libZ shared_objectZshared_library executablecCstdS)N)NotImplementedError)rZ target_descroutput_filenamerrrrexport_symbolsrTrgrh build_temprnrrrlinkis9zCCompiler.linkc Cs2|tj||j|dd||||||| | | | dS)Nshared)lib_type)rur SHARED_LIBRARYlibrary_filename) rrrmrrrrrsrTrgrhrtrnrrrlink_shared_libs  zCCompiler.link_shared_libc Cs(|tj||||||||| | | | dS)N)rur SHARED_OBJECT) rrrrrrrrrsrTrgrhrtrnrrrlink_shared_objects zCCompiler.link_shared_objectc Cs.|tj|||||||d||| d| dS)N)rur EXECUTABLEexecutable_filename) rrZoutput_prognamerrrrrTrgrhrnrrrlink_executables  zCCompiler.link_executablecCstdS)N)rq)rr5rrrlibrary_dir_optionszCCompiler.library_dir_optioncCstdS)N)rq)rr5rrrruntime_library_dir_optionsz$CCompiler.runtime_library_dir_optioncCstdS)N)rq)rlibrrrlibrary_optionszCCompiler.library_optionc Csddl}|dkrg}|dkr g}|dkr,g}|dkr8g}|jd|dd\}}t|d} z.x|D]} | d| q`W| d|Wd| Xy|j|g|d} Wntk rd SXy|j| d ||d Wnt t fk rd SXdS) Nrz.cT)textwz#include "%s" z=int main (int argc, char **argv) { %s(); return 0; } )rFza.out)rr) tempfileZmkstemprHfdopenwritecloserlZ CompileErrorrZ LinkErrorr0) rfuncnameZincludesrrrrfdZfnamefZinclrrrr has_functions8     zCCompiler.has_functioncCstdS)N)rq)rr7rrTrrrfind_library_file$szCCompiler.find_library_filecCs|dkr d}g}x|D]|}tj|\}}tj|d}|tj|d}||jkrhtd||f|rxtj|}|tj |||j qW|S)Nrr(z"unknown file type '%s' (from '%s')) rHrIrJ splitdriveisabssrc_extensionsZUnknownFileErrorbasenamer2join obj_extension)rZsource_filenamesrCrZ obj_namesZsrc_namererRrrrrEOs    zCCompiler.object_filenamescCs$|rtj|}tj|||jS)N)rHrIrrshared_lib_extension)rrrCrrrrshared_object_filename`s z CCompiler.shared_object_filenamecCs(|rtj|}tj|||jp"dS)Nr)rHrIrr exe_extension)rrrCrrrrr~fs zCCompiler.executable_filenamestaticc Cs`|dkrtdt||d}t||d}tj|\}}|||f} |rPd}tj||| S)N)rrvZdylibZ xcode_stubz?'lib_type' must be "static", "shared", "dylib", or "xcode_stub"Z _lib_formatZ_lib_extensionr)rgetattrrHrIsplitr) rr9rwrCrZfmtrRr5refilenamerrrryls zCCompiler.library_filenamer(cCst|dS)N)r rT)rmsglevelrrrannounceszCCompiler.announcecCsddlm}|rt|dS)Nr)DEBUG)Zdistutils.debugrprint)rrrrrr debug_prints zCCompiler.debug_printcCstjd|dS)Nz warning: %s )sysstderrr)rrrrrwarnszCCompiler.warncCst||||jdS)N)r r )rfuncargsrrrrrr szCCompiler.executecCst||jddS)N)r )rr )rcmdrrrrszCCompiler.spawncCst|||jdS)N)r )rr )rrPdstrrrrszCCompiler.move_filecCst|||jddS)N)r )rr )rr)moderrrrszCCompiler.mkpath)rrr)N)N)NNNNN)NNNrNNN)NrN) NNNNNrNNNN) NNNNNrNNNN) NNNNNrNNNN)NNNNrNNN)NNNN)r)rr)rr)rr)rrr)r()Nr()r)Ar! __module__ __qualname__Z compiler_typerrZstatic_lib_extensionrZstatic_lib_formatZshared_lib_formatrr`r_rr#rr,r1r3r4r6r8r:r;r<r=r>r?rArBrSrVrWrXrYrZr^rfrirlrkror{rxr}rurzr|rrrrrrrErr~ryrrrr rrrrrrrr s  $   +  "   B  4    + +      r ))zcygwin.*unix)posixr)ntmsvccCsV|dkrtj}|dkrtj}x4tD],\}}t||dk sJt||dk r"|Sq"WdS)Nr)rHr)rplatform_default_compilersrematch)Zosnamerpatterncompilerrrrget_default_compilers r)Z unixccompilerZ UnixCCompilerzstandard UNIX-style compiler)Z _msvccompilerZ MSVCCompilerzMicrosoft Visual C++)cygwinccompilerZCygwinCCompilerz'Cygwin port of GNU C Compiler for Win32)rZMingw32CCompilerz(Mingw32 port of GNU C Compiler for Win32)Z bcppcompilerZ BCPPCompilerzBorland C++ Compiler)rrcygwinZmingw32ZbcppcCs\ddlm}g}x,tD] }|d|dt|dfqW|||}|ddS)Nr) FancyGetoptz compiler=r-zList of available compilers:)Zdistutils.fancy_getoptrcompiler_classrr2sort print_help)rZ compilersrZpretty_printerrrrshow_compilerss  rc Cs|dkrtj}y"|dkr t|}t|\}}}Wn8tk rhd|}|dk r\|d|}t|YnXy*d|}t|tj|} t | |} WnBt k rt d|Yn$tk rt d||fYnX| d||S)Nz5don't know how to compile C/C++ code on platform '%s'z with '%s' compilerz distutils.z4can't compile C/C++ code: unable to load module '%s'zBcan't compile C/C++ code: unable to find class '%s' in module '%s') rHr)rrrjZDistutilsPlatformError __import__rmodulesvars ImportErrorZDistutilsModuleError) Zplatrrr rZ module_name class_nameZlong_descriptionrmoduleklassrrr new_compilers2    rcCsg}x|D]}t|tr2dt|kr0dks>ntd|t|dkr^|d|dq t|dkr |ddkr|d|dq |d|q Wx|D]}|d|qW|S) Nr(r-zPbad macro definition '%s': each element of 'macros' list must be a 1- or 2-tuplez-U%srz-D%sz-D%s=%sz-I%s)r$r.r/r0r2)rrrNZmacror5rrrrF s $    rFc Csg}x|D]}|||q Wx4|D],}||}t|trJ||}q(||q(Wx^|D]V}tj|\}} |r||g| } | r|| q| d|q^|| |q^W|S)Nz6no library file corresponding to '%s' found (skipping)) r2rrr$rDrHrIrrrr) rrrrZlib_optsr5optrZlib_dirZlib_nameZlib_filerrrgen_lib_options8s$        r)NN)NNrrr)rrHrZdistutils.errorsZdistutils.spawnrZdistutils.file_utilrZdistutils.dir_utilrZdistutils.dep_utilrrZdistutils.utilrr Z distutilsr r rrrrrrFrrrrrs4      --PKr ]{oo0command/__pycache__/bdist_wininst.cpython-37.pycnu[B  f<@spdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc @seZdZdZddddefdddd d d d d dddg ZddddgZejdkZ ddZ ddZ ddZ ddZ d%dd Zd!d"Zd#d$ZdS)& bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACz keep-tempzno-target-compilezno-target-optimizez skip-buildwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr D/opt/alt/python37/lib64/python3.7/distutils/command/bdist_wininst.pyinitialize_options=sz bdist_wininst.initialize_optionscCs|dd|jdkrR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jrx2|jjD]}|jtj |krPqWtd|jdS) Nbdist)rrZwininstzMtarget version can only be %s, or the '--skip-build' option must be specified)rr)rrz(install_script '%s' not found in scripts)Zset_undefined_optionsrrr distributionZget_command_objget_finalized_command bdist_baseospathjoinrhas_ext_modulesrZDistutilsOptionErrorrscriptsbasename)rr#r'Z short_versionscriptr r r!finalize_optionsMs4      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|s|jstd d tjdd }d |j |f}|d}tj|jd ||_x4dD],}|}|dkr|d}t|d||qWtd|j |tjdtj|j d|tjd=ddlm }|} |j!} |j"| d|j d} |#| | |j$|jrt%} nd} |jj&'d| |(| ft)d| t*| |j+st,|j |j-ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz Should have already checked thisz%d.%dz.%s-%slib)ZpurelibZplatlibheadersr,datar6z/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run).sysplatformr%r+Zhas_c_librariesZDistutilsPlatformErrorrZ run_commandZreinitialize_commandrrootZwarn_dirrcompileoptimizerAssertionError version_infor&r(r)r*Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfiler8 get_fullnameZ make_archive create_exerrZ dist_filesappendget_installer_filenamedebugremoverrr;) rr1r3rZplat_specifierr0keyvaluer8Zarchive_basenamefullnamearcnameZ pyversionr r r!rGssf                  zbdist_wininst.runc Cs^g}|jj}|d|jpdd}dd}xJdD]B}t||d}|r2|d|||f}|d|||fq2W|d |jr|d |j|d |||d |j |d |j |j r|d|j |j r|d|j |j p |j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r$ cSs |ddS)NrRz\n)replace)sr r r!escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r%metadatarJZlong_descriptiongetattr capitalizerrrrrrrHtime distutilsZctime __version__r*) rlinesrYrErUrWr7rr\r]Z build_infor r r! get_inidatas:    zbdist_wininst.get_inidataNc Csddl}||j|}||}|d||rPt|d}t|}nd}t|d} | | |rz| |t |t r| d}|d}|jrt|jddd } |  d} WdQRX|| d }n|d}| ||d d t||} | | | t|ddS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs    PKr ]>64command/__pycache__/install_lib.cpython-37.opt-2.pycnu[B YI~d @sHddlZddlZddlZddlmZddlmZdZGdddeZ dS)N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default])z no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])z skip-buildNzskip the build stepsrr z skip-buildz no-compilecCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_build)selfrB/opt/alt/python37/lib64/python3.7/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtsyt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr )rr )rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddS)Nbuild_py build_ext)rrrZ run_commandhas_ext_modules)rrrrrfs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirr Z copy_treer warn)rr!rrrrms  zinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r r)rrprefixdry_run)rrr*verboser+) sysdont_write_bytecoder)Zdistutils.utilr get_finalized_commandrootr rr+rr,)rfilesr Z install_rootrrrr vs     zinstall_lib.byte_compilec Csh|sgS||}|}t||}t|ttj}g}x(|D] } |tj|| |dq@W|S)N) r/ get_outputsgetattrlenr&sepappendr'join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss    zinstall_lib._mutate_outputscCsvg}xl|D]d}tjtj|d}|tkr0q |jrL|tjj |dd|j dkr |tjj ||j dq W|S)Nr) optimizationr) r&r'splitextnormcasePYTHON_SOURCE_EXTENSIONr r6 importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)Nr#rr$)r:rrr r rCr%)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr2s   zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||S)Nr#r$)rrr/extendr2r%)rZinputsr#r$rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optrrr"rrr r:rCr2rErrrrrs(   r) r&importlib.utilr@r-Zdistutils.corerZdistutils.errorsrr?rrrrrs   PKr ]r++.command/__pycache__/sdist.cpython-37.opt-2.pycnu[B YI~d7J@sddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z ddl m Z dd l mZdd lmZdd lmZdd lmZmZd dZGdddeZdS)N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCsdddlm}ddlm}g}x,|D] }|d|d||dfq&W|||ddS)Nr) FancyGetopt)ARCHIVE_FORMATSzformats=z.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsort print_help)rrformatsformatrd?Zd@dAZdBdCZdDdEZ dFdGZ!dHdIZ"dS)Jsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)N)metadata_check)selfrrrchecking_metadata(szsdist.checking_metadata)z template=tz5name of manifest template file [default: MANIFEST.in])z manifest=mz)name of manifest file [default: MANIFEST])z use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults])z no-defaultsNz"don't include the default file set)pruneNzspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])zno-pruneNz$don't automatically exclude anything)z manifest-onlyozEjust regenerate the manifest and then stop (implies --force-manifest))zforce-manifestfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)zformats=Nz6formats for source distribution (comma-separated list))z keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])zmetadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]z use-defaultsr z manifest-onlyzforce-manifestz keep-tempzmetadata-checkz help-formatsNz#list available distribution formats)z no-defaultszno-prunecheck)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|dt|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r*r)Zensure_string_listrZcheck_archive_formatsrr r.)rZ bad_formatrrrfinalize_options|s      zsdist.finalize_optionscCsBt|_x|D]}||qW||jr6dS|dS)N)r filelistZget_sub_commandsZ run_command get_file_listr,make_distribution)rZcmd_namerrrrunsz sdist.runcCs*tdt|jd}||dS)Nzadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr')rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr7)rr'rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)Nz?manifest template '%s' does not exist (using default file list))ospathisfiler)_manifest_is_not_generated read_manifestr4rZremove_duplicatesrfindallr+ add_defaults read_templater prune_file_listwrite_manifest)rZtemplate_existsrrrr5s&       zsdist.get_file_listcCs<|||||||dS)N)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scripts)rrrrrAszsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|kS)NF)r;r<existsabspathsplitlistdir)fspathrMZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}x|D]}t|trn|}d}x(|D] }||r0d}|j|Pq0W|s|dd |q||r|j|q|d|qWdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESr9Z script_name isinstancetuplerRr4rrjoin)rZ standardsfnZaltsZgot_itrrrrEs       zsdist._add_defaults_standardscCs8ddg}x*|D]"}ttjjt|}|j|qWdS)Nz test/test*.pyz setup.cfg)filterr;r<r=rr4extend)rZoptionalpatternfilesrrrrFs zsdist._add_defaults_optionalcCsd|d}|jr$|j|x:|jD]0\}}}}x"|D]}|jtj ||q>Wq,WdS)Nbuild_py) get_finalized_commandr9Zhas_pure_modulesr4rYget_source_files data_filesrr;r<rV)rr\ZpkgZsrc_dirZ build_dir filenamesrQrrrrGs    zsdist._add_defaults_pythoncCs|jr~xr|jjD]f}t|trDt|}tj|rz|j |q|\}}x,|D]$}t|}tj|rR|j |qRWqWdS)N) r9Zhas_data_filesr_rTstrr r;r<r=r4r)ritemdirnamer`r"rrrrH$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)r9Zhas_ext_modulesr]r4rYr^)rrdrrrrI5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)r9Zhas_c_librariesr]r4rYr^)rrerrrrJ:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)r9Z has_scriptsr]r4rYr^)rrfrrrrK?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zlxf|}|dkrr rgr*r4r[insertZexecuterZ write_file)rZcontentrrrrDys  zsdist.write_manifestcCs<tj|jsdSt|j}z |}Wd|X|dkS)NFz+# file GENERATED by distutils, do NOT edit )r;r<r=r*openrhrj)rfpZ first_linerrrr>s   z sdist._manifest_is_not_generatedcCsVtd|jt|j}x0|D](}|}|ds|s:q|j|qW|dS)Nzreading manifest file '%s'#) r rgr*rxstrip startswithr4rrj)rr*rkrrrr?s  zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t|xD|D]<}tj |s~td|q`tj ||}|j |||dq`W|j j|dS) N)dry_runlinkZhardzmaking hard links in %s...zcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r~)ZmkpathrZ create_treer}hasattrr;r rrgr<r=rVZ copy_filer9ZmetadataZwrite_pkg_info)rrur[r~rlfiledestrrrmake_release_trees       zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j krT|j |j |j dxD|j D]:}|j ||||j|jd}| ||jj dd|fq\W||_|jstj||jddS)NZtar)rur0r1r)r})r9rrr;r<rVr.rr4r[rrpopindexZ make_archiver0r1Z dist_filesr/r-rZ remove_treer})rruZ base_namer/Zfmtrrrrr6s     zsdist.make_distributioncCs|jS)N)r/)rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrSr2r3r7r:r5rA staticmethodrRrErFrGrHrIrJrKrBrCrDr>r?rr6rrrrrr$s^  (  *r)r;rsrwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs          PKr ]@9command/__pycache__/install_egg_info.cpython-37.opt-2.pycnu[B YI~d+ @s`ddlmZddlmZmZddlZddlZddlZGdddeZddZ dd Z d d Z dS) )Command)logdir_utilNc@s6eZdZdZdgZddZddZddZd d Zd S) install_egg_infoz8Install package's PKG-INFO metadata as an .egg-info file)z install-dir=dzdirectory to install tocCs d|_dS)N) install_dir)selfr G/opt/alt/python37/lib64/python3.7/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|dddtt|jtt|jftjdd}t j |j ||_ |j g|_dS)NZ install_lib)rrz%s-%s-py%d.%d.egg-info)Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinrtargetoutputs)rbasenamer r r finalize_optionss z!install_egg_info.finalize_optionsc Cs|j}tj|r0tj|s0tj||jdnNtj|rV| tj |jfd|n(tj|j s~| tj |j fd|j t d||jst|ddd}|jj|WdQRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkrmakedirsrinfoopenrZmetadataZwrite_pkg_file)rrfr r r run s   zinstall_egg_info.runcCs|jS)N)r)rr r r get_outputs.szinstall_egg_info.get_outputsN) __name__ __module__ __qualname__ descriptionZ user_optionsr rr%r&r r r r r s  rcCstdd|S)Nz[^A-Za-z0-9.]+-)resub)namer r r r6srcCs|dd}tdd|S)N .z[^A-Za-z0-9.]+r+)replacer,r-)versionr r r r>s rcCs |ddS)Nr+_)r1)r.r r r r Hsr ) Z distutils.cmdrZ distutilsrrrrr,rrrr r r r r s + PKr ]E*!!1command/__pycache__/register.cpython-37.opt-1.pycnu[B  f-@sddZddlZddlZddlZddlZddlmZddlm Z ddl Tddl m Z Gddde Z dS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejddgZejdddgZddd fgZd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdddZdS) registerz7register the distribution with the Python package index)zlist-classifiersNz list the valid Trove classifiers)strictNzBWill stop the registering if the meta-data are not fully compliantverifyzlist-classifiersrcheckcCsdS)NT)selfr r ?/opt/alt/python37/lib64/python3.7/distutils/command/register.pyzregister.cCst|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr)r r r r rs zregister.initialize_optionscCs*t|d|jfdd}||jjd<dS)Nr)r)rrestructuredtextr )rfinalize_optionsr distributionZcommand_options)r Z check_optionsr r r r$s zregister.finalize_optionscCsX||x|D]}||qW|jr<|n|jrL|n|dS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)r Zcmd_namer r r run+s  z register.runcCs8tdt|jd}||j|_d|_|dS)zDeprecated API.zddistutils.command.register.check_metadata is deprecated, use the check command insteadr rN)rPendingDeprecationWarningrZget_command_objZensure_finalizedrrr)r r r r r check_metadata:s zregister.check_metadatacCsz|}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_d S) z: Reads the configuration file and set attributes. usernamepassword repositoryrealmTZpypiz%s not found in .pypircFN)Z _read_pypircrrrr has_configZDEFAULT_REPOSITORY ValueError)r Zconfigr r r rDs     zregister._set_configcCs*|jd}tj|}t||dS)z8 Fetch the list of classifiers from the server. z?:action=list_classifiersN)rurllibrequestZurlopenrinfo_read_pypi_response)r ZurlZresponser r r rUs  zregister.classifierscCs&||d\}}td||dS)zF Send the metadata to the package index server to be checked. rzServer response (%s): %sN)post_to_serverbuild_post_datarr$)r coderesultr r r r\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}d}x:||krf|dtjt}|sTd}q.||kr.tdq.W|dkr|x|std}qtWx|st d}qWt j }t j |jd }||j|||||d |\}}|d ||ftj|d kr|jr||j_nj|d tj|d|tjd}x&|dkr\td}|s8d}q8W|dkr|||n|dkrddi} d| d<| d<| d<d| d<x| dstd| d<qWx| d| dkrNx| dst d| d<qWx| dst d| d<qW| d| dkrd| d<d| d<tdqWx| dsltd| d<qRW|| \}}|d krtd ||ntdtd nT|d!krdd"i} d| d<x| dstd#| d<qW|| \}}td ||dS)$a_ Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. 1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitzServer response (%s): %szAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2z:actionusernamerZemailNZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r rrsplitannouncerINFOinputprintgetpassr"r#ZHTTPPasswordMgrparseZurlparserZ add_passwordrr&r'rZ _get_rc_filelowerZ _store_pypircr$) r ZchoicerrchoicesauthZhostr(r)datar r r rcs                     zregister.send_metadatacCs|jj}|d|||||||| | | | | |||d}|ds|ds|drd|d<|S)Nz1.0)z:actionmetadata_versionr3versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrFrGrHz1.1r@)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)r actionmetar?r r r r's* zregister.build_post_dataNc Csd|kr$|d|d|jftjd}d|}|d}t}x|D]\}}t|tgtdfkrp|g}xZ|D]R}t|}| || d|| d| ||rv|d d krv| d qvWqJW| || d | d }d |tt |d} t j|j|| } t jt jj|d} d}y| | } Wnxt jjk r} z"|jrl| j}| j| jf} Wdd} ~ XYnJt jjk r} zdt| f} Wdd} ~ XYnX|jr|| }d} |jrd d|df}||tj| S)zC Post a query to the server, and return a string response. r3zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--r z* Content-Disposition: form-data; name="%s"z   zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr,Ni)r-ZOKzK---------------------------------------------------------------------------)r6rrr7ioStringIOitemstypestrwritegetvalueencodelenr"r#ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr(msgZURLErrorr%join)r r?r>boundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqopenerr)er[r r r r&sV         zregister.post_to_server)N)__name__ __module__ __qualname__rCrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr'r&r r r r rs"  zr)__doc__r:rNZ urllib.parser"Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r r s   PKr ]n))(command/__pycache__/clean.cpython-37.pycnu[B  f @sDdZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZd d Zd d Zd dZdS)cleanz-clean up temporary files from 'build' command)z build-base=bz2base build directory (default: 'build.build-base'))z build-lib=Nzs    PKr ]8command/__pycache__/install_headers.cpython-37.opt-2.pycnu[B YI~d@s ddlmZGdddeZdS))Commandc@sFeZdZdZddgZdgZddZddZd d Zd d Z d dZ dS)install_headerszinstall C/C++ header files)z install-dir=dz$directory to install header files to)forcefz-force installation (overwrite existing files)rcCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr F/opt/alt/python37/lib64/python3.7/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|ddddS)Ninstall)rr)rr)Zset_undefined_options)r r r r finalize_optionssz install_headers.finalize_optionscCsL|jj}|sdS||jx*|D]"}|||j\}}|j|q"WdS)N) distributionheadersZmkpathrZ copy_filerappend)r rheaderout_r r r run!s  zinstall_headers.runcCs |jjp gS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r)r r r r get_outputs.szinstall_headers.get_outputsN) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsr rrrrr r r r r s rN)Zdistutils.corerrr r r r s PKr ]D(command/__pycache__/build.cpython-37.pycnu[B  f@sTdZddlZddlZddlmZddlmZddlmZddZ Gdd d eZ dS) zBdistutils.command.build Implements the Distutils 'build' command.N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rrs    PKr ]Y556command/__pycache__/build_scripts.cpython-37.opt-2.pycnu[B YI~dX@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z m Z ddlm Z ddlZedZGd d d eZGd d d ee ZdS) N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=dzdirectory to "build" (copy) to)forcefz1forcibly build everything (ignore file timestamps)z executable=ez*specify final destination interpreter pathr cCs"d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfrD/opt/alt/python37/lib64/python3.7/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|dddd|jj|_dS)NZbuild)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|dS)N)r copy_scripts)rrrrrun/szbuild_scripts.runc Cs||jg}g}x(|jD]}d}t|}tj|jtj|}|||j spt ||spt d|qyt |d}Wn tk r|jsd}YnXXt|j\}}|d|} | s|d|qt| } | rd}| dpd} |rt d ||j|||jstjs.|j} n(tjtd d td td f} t| } d| | d} y| dWn$tk rt d!| YnXy| |Wn&tk rt d!| |YnXt |d}|"| |#|$WdQRX|r<|%q|r&|%|||&||qWtj'dkrxh|D]`}|jrlt d|nDt(|t)d@}|dBd@}||krRt d|||t*||qRW||fS)NFznot copying %s (up-to-date)rbrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrZget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfiler encodinglinesZ first_liner/Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                  zbuild_scripts.copy_scriptsN) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&t|\}}|js||||fS)N)r rr(Zrun_2to3)rrr>rrrrs zbuild_scripts_2to3.copy_scriptsN)rBrCrDrrrrrrFsrF)r rer<rZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr)compiler.r rFrrrrs       PKr ]J8f440command/__pycache__/install.cpython-37.opt-1.pycnu[B  fuh@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZmZdd lmZdd l mZdd lmZdd lmZdZddddddZddddddddddddedZerdddddded <ddd!d"dded#<dZGd$d%d%eZdS)&zFdistutils.command.install Implements the Distutils 'install' command.N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@s:eZdZdZdddddddd d d d d ddddddgZdddgZer`edddefedddiZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEefdFefdGefdHefdIdJdKfgZdS)Linstallz'install everything from build directory)zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nz/opt/alt/python37/lib64/python3.7/distutils/command/install.pyinitialize_optionss2 zinstall.initialize_optionsc Csx|js|js|jr&|js|jr&td|jr@|js8|jr@td|jrl|jsd|jsd|jsd|jsd|jrltdtjdkr|jr| dd|_| dtjdkr| n| | dt jd }td d \}}y t j}Wntk rd }YnX|j|j|j|d t jdddt jdd|||||d |_trf|j|jd<|j|jd<|| d|j|jd<|j|jd<trd dlm}td||j| | d|jr|!|j"dkr|jj#r|j$|_"n|j%|_"|&dddddddd|'|j"|_(tj)*|j"|j+|_"|j,dk r\|-ddddddd| d |.d!d"d#dS)$zFinalizes options.zWmust supply either prefix/exec-prefix/home or install-base/install-platbase -- not bothz9must supply either home or prefix/exec-prefix -- not bothzGcan't combine user with prefix, exec_prefix/home, or install_(plat)baseposixz+exec-prefix option ignored on this platformNzpre-finalize_{unix,other}zpost-finalize_{unix,other}()rr r!z%d.%dz%d%d) Z dist_nameZ dist_versionZ dist_fullname py_versionZpy_version_shortZpy_version_nodotZ sys_prefixr Zsys_exec_prefixr!abiflagsuserbaseZusersitezpost-expand_basedirs()baseZplatbase)pprintz config vars:zpost-expand_dirs()librrrrrZlibbasezafter prepending rootbuild)r3r3)r4r4)/r r!r"r#r$r rosnamewarn dump_dirs finalize_unixfinalize_othersysversionsplitrr>AttributeError distributionZget_nameZ get_versionZ get_fullname version_info config_vars HAS_USER_SITEr,r-expand_basedirsrrAprint expand_dirscreate_home_pathr)Z ext_modulesr'r& convert_pathshandle_extra_pathinstall_libbasepathjoin extra_dirsr% change_rootsZset_undefined_options)r6r=r r!r>rAr7r7r8finalize_optionss                           zinstall.finalize_optionscCstsdSddlm}t|dx||jD]r}|d}|ddkrN|dd}||jkrz|j|}||}t|| }n||}t||}td||q*WdS)zDumps the list of user options.Nr) longopt_xlate:=z %s: %s) rZdistutils.fancy_getoptr^rdebug user_options negative_opt translategetattr)r6msgr^ZoptZopt_namevalr7r7r8rGus         zinstall.dump_dirscCs"|jdk s|jdk r\|jdkr2|jdkr2|jdksP|jdksP|jdksP|jdkrXtddS|j r|j dkrtt d|j |_|_| dn|j dk r|j |_|_| dnl|jdkr|jdk rtdtjtj|_tjtj|_n|jdkr|j|_|j|_|j|_| ddS)z&Finalizes options for posix platforms.NzPinstall-base or install-platbase supplied, but installation scheme is incompletez$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)r#r$r)r&r'r(r*r+r rr,r select_schemer"r r!rDrYnormpathrJ)r6r7r7r8rHs<             zinstall.finalize_unixcCs|jr8|jdkrtd|j|_|_|tjdn|jdk r\|j|_|_|dn\|j dkrvtj t j |_ |j |_|_y|tjWn"t k rtdtjYnXdS)z)Finalizes options for non-posix platformsNz$User base directory is not specifiedZ_userrz)I don't know how to install stuff on '%s')rr,rr#r$rirDrEr"r rYrjrJKeyError)r6r7r7r8rIs"    zinstall.finalize_othercCs@t|}x2tD]*}d|}t||dkrt||||qWdS)z=Sets the install directories by applying the install schemes.install_N)INSTALL_SCHEMES SCHEME_KEYSrfsetattr)r6rEZschemekeyZattrnamer7r7r8ris  zinstall.select_schemecCs\xV|D]N}t||}|dk rtjdks0tjdkr|D]2}||}x"|D]}||kr&||q&WqW|jrl|jrl|tj|j |jd|S)z.Assembles the outputs of all the sub-commands.z.pth) rget_finalized_commandrappendryr0rDrYrZrX)r6rrcmdrr7r7r8rWs  zinstall.get_outputscCs2g}x(|D]}||}||qW|S)z*Returns the inputs of all the sub-commands)rrextend get_inputs)r6Zinputsrrr7r7r8rhs  zinstall.get_inputscCs|jp|jS)zSReturns true if the current distribution has any Python modules to install.)rNZhas_pure_modulesZhas_ext_modules)r6r7r7r8has_libts zinstall.has_libcCs |jS)zLReturns true if the current distribution has any headers to install.)rN has_headers)r6r7r7r8rzszinstall.has_headerscCs |jS)zMReturns true if the current distribution has any scripts to. install.)rN has_scripts)r6r7r7r8rszinstall.has_scriptscCs |jS)zJReturns true if the current distribution has any data to. install.)rNZhas_data_files)r6r7r7r8has_dataszinstall.has_datar)r(r*r+Zinstall_egg_infocCsdS)NTr7)r6r7r7r8zinstall.) __name__ __module__ __qualname__Z descriptionrcZboolean_optionsrQrrrdr9r]rGrHrIrirsrRrTrVrWr\rUrrrrrrrrZ sub_commandsr7r7r7r8rIsh    N(  " , r)__doc__rJrDZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrQZWINDOWS_SCHEMErmrnrr7r7r7r8sV            PKr ]>J))1command/__pycache__/register.cpython-37.opt-2.pycnu[B YI~d-@s`ddlZddlZddlZddlZddlmZddlmZddl Tddl m Z GdddeZ dS)N)warn) PyPIRCCommand)*)logc@seZdZdZejddgZejdddgZddd fgZd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdddZdS) registerz7register the distribution with the Python package index)zlist-classifiersNz list the valid Trove classifiers)strictNzBWill stop the registering if the meta-data are not fully compliantverifyzlist-classifiersrcheckcCsdS)NT)selfr r ?/opt/alt/python37/lib64/python3.7/distutils/command/register.pyzregister.cCst|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr)r r r r rs zregister.initialize_optionscCs*t|d|jfdd}||jjd<dS)Nr)r)rrestructuredtextr )rfinalize_optionsr distributionZcommand_options)r Z check_optionsr r r r$s zregister.finalize_optionscCsX||x|D]}||qW|jr<|n|jrL|n|dS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)r Zcmd_namer r r run+s  z register.runcCs8tdt|jd}||j|_d|_|dS)Nzddistutils.command.register.check_metadata is deprecated, use the check command insteadr r)rPendingDeprecationWarningrZget_command_objZensure_finalizedrrr)r r r r r check_metadata:s zregister.check_metadatacCsz|}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_dS) Nusernamepassword repositoryrealmTZpypiz%s not found in .pypircF)Z _read_pypircrrrr has_configZDEFAULT_REPOSITORY ValueError)r Zconfigr r r rDs     zregister._set_configcCs*|jd}tj|}t||dS)Nz?:action=list_classifiers)rurllibrequestZurlopenrinfo_read_pypi_response)r ZurlZresponser r r rUs  zregister.classifierscCs&||d\}}td||dS)NrzServer response (%s): %s)post_to_serverbuild_post_datarr$)r coderesultr r r r\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}d}x:||krf|dtjt}|sTd}q.||kr.tdq.W|dkr|x|std}qtWx|st d}qWt j }t j |jd }||j|||||d |\}}|d ||ftj|d kr|jr||j_nj|d tj|d|tjd}x&|dkr\td}|s8d}q8W|dkr|||n|dkrddi} d| d<| d<| d<d| d<x| dstd| d<qWx| d| dkrNx| dst d| d<qWx| dst d| d<qW| d| dkrd| d<d| d<tdqWx| dsltd| d<qRW|| \}}|d krtd ||ntdtdnT|d krdd!i} d| d<x| dstd"| d<qW|| \}}td ||dS)#N1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitzServer response (%s): %szAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2z:actionusernamerZemailZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r rrsplitannouncerINFOinputprintgetpassr"r#ZHTTPPasswordMgrparseZurlparserZ add_passwordrr&r'rZ _get_rc_filelowerZ _store_pypircr$) r choicerrchoicesauthZhostr(r)datar r r rcs                     zregister.send_metadatacCs|jj}|d|||||||| | | | | |||d}|ds|ds|drd|d<|S)Nz1.0)z:actionmetadata_versionr3versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrGrHrIz1.1rA)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)r actionmetar@r r r r's* zregister.build_post_dataNc Csd|kr$|d|d|jftjd}d|}|d}t}x|D]\}}t|tgtdfkrp|g}xZ|D]R}t|}| || d|| d| ||rv|d d krv| d qvWqJW| || d | d }d |tt |d} t j|j|| } t jt jj|d} d}y| | } Wnxt jjk r} z"|jrl| j}| j| jf} Wdd} ~ XYnJt jjk r} zdt| f} Wdd} ~ XYnX|jr|| }d} |jrd d|df}||tj| S)Nr3zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--r z* Content-Disposition: form-data; name="%s"z   zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr,i)r-ZOKzK---------------------------------------------------------------------------)r6rrr7ioStringIOitemstypestrwritegetvalueencodelenr"r#ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr(msgZURLErrorr%join)r r@r?boundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqopenerr)er\r r r r&sV         zregister.post_to_server)N)__name__ __module__ __qualname__rDrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr'r&r r r r rs"  zr) r:rOZ urllib.parser"Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r r s   PKr ]==,command/__pycache__/build_ext.cpython-37.pycnu[B  fv@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZed Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r@/opt/alt/python37/lib64/python3.7/distutils/command/build_ext.pyr s r c@seZdZdZdejZdddddefdd d d efd d ddddefddddddddddgZddddd gZ d!d"d#e fgZ d$d%Z d&d'Z d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zejd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZd"S)H build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z build-lib=bz(directory for compiled extension modules)z build-temp=tz1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s))inplaceiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link withz library-dirs=Lz.directories to search for external C libraries)zrpath=Rz7directories to search for shared C libraries at runtime)z link-objects=Oz2extra explicit link objects to include in the link)debuggz'compile/link with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)zswig-cppNz)make SWIG create C++ files (default is C))z swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)userNz#add user include, library and rpathrrrzswig-cppr#z help-compilerNzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsrrcompilerswigswig_cpp swig_optsr#parallel)selfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|ddddddd d |jdkr8|jj|_|jj|_|}|jd d }|j dkrn|jj pjg|_ t |j t r|j t j|_ tjtjkr|j t jtjd |j | t jj||kr|j | t jj|d|d|jdkrg|_|jdkrg|_nt |jt r:|j t j|_|jdkrNg|_nt |jt rl|j t j|_t jdkrh|jt jtjdtjtjkr|jt jtjd|jrt j|jd|_nt j|jd|_|j t jtt tdd}|r|j||j!dkr*d}n|j!dd}t jtjd}|r\t j||}|j|tj"dddkrtj#$t jtjdr|jt jtjddt%dn |jd|&dr|j's|j|&d n |jd|j(r|j( d!}d"d#|D|_(|j)r4|j) d!|_)|j*dkrHg|_*n|j* d$|_*|j+rt jt,d }t jt,d} t j-|r|j |t j-| r|j| |j| t |j.t ryt/|j.|_.Wnt0k rt1d%YnXdS)&Nr) sysconfigZbuild)r%r%)r'r')r0r0)rr)rr)r4r4)r&r&)Z plat_specificZincluder,r/ntZlibsZDebugZRelease_homewin32ZPCbuildcygwinbinlibpythonZconfig.Py_ENABLE_SHAREDZLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)2 distutilsr7Zset_undefined_optionsr( distributionZ ext_packageZ ext_modulesr$Zget_python_incr) isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinextendZensure_string_listr,r-r.nameprefixrr'dirnamergetattrr&platform executable startswithrget_config_varZ python_buildr*r+r3r#r isdirr4int ValueErrorZDistutilsOptionError) r5r7Z py_includeZplat_py_includeZ _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                           zbuild_ext.finalize_optionscCsrddlm}|jsdS|jrL|d}|j|p:g|j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j |j|jdk r|j |j|jdk rx |jD]\}}|j ||qW|jdk rx|jD]}|j |qW|jdk r|j |j|j dk r2|j |j |jdk rL|j |j|j dk rf|j !|j |"dS)Nr) new_compiler build_clib)r0verbosedry_runrr9)#r rdr$rJZhas_c_librariesget_finalized_commandr,rVZget_library_namesr-rSrer0rfrgrrrNrWr&r Z initializer)Zset_include_dirsr*Z define_macror+Zundefine_macroZ set_librariesZset_library_dirsr.Zset_runtime_library_dirsr/Zset_link_objectsbuild_extensions)r5rdrerWvaluemacrorrrruns>             z build_ext.runc Cst|tstdxjt|D]\\}}t|tr4qt|trJt|dkrRtd|\}}td|t|t rzt |stdt|t stdt||d}x*dD]"}| |}|d k rt|||qW| d |_d |krtd | d }|rtg|_g|_xj|D]b} t| tr,t| dks4tdt| dkrT|j| dnt| dkr|j| qW|||<qWd S)aEnsure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sources)r)r-r, extra_objectsextra_compile_argsextra_link_argsNr.Zdef_filez9'def_file' element of build info dict no longer supportedmacros)r8rmz9'macros' element of build info dict must be 1- or 2-tupler8r)rKlistDistutilsSetupError enumeratertuplelenr warnrLextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrS) r5r$rextext_nameZ build_infokeyvalrrrkrrrcheck_extensions_listVsP           zbuild_ext.check_extensions_listcCs0||jg}x|jD]}||jqW|S)N)rr$rVrn)r5 filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs6||jg}x |jD]}|||jqW|S)N)rr$rSget_ext_fullpathrW)r5Zoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(||j|jr|n|dS)N)rr$r4_build_extensions_parallel_build_extensions_serial)r5rrrris  zbuild_ext.build_extensionsc sj}jdkrt}yddlm}Wntk r@d}YnX|dkrVdS||dTfddjD}x6tj|D]&\}} || WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}j|qSr)Zsubmitbuild_extension)rFr)executorr5rrrGsz8build_ext._build_extensions_parallel..) r4rN cpu_countZconcurrent.futuresr ImportErrorrr$zip_filter_build_errorsresult)r5ZworkersrZfuturesrZfutr)rr5rrs       z$build_ext._build_extensions_parallelc Cs4x.|jD]$}||||WdQRXqWdS)N)r$rr)r5rrrrrs  z"build_ext._build_extensions_serialc csTy dVWnDtttfk rN}z |js*|d|j|fWdd}~XYnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrxrW)r5rerrrrs zbuild_ext._filter_build_errorsc CsT|j}|dkst|ttfs*td|jt|}||j}||j}|jslt ||dslt d|jdSt d|j| ||}|jpg}|jdd}x|jD]}||fqW|jj||j||j|j ||jd}|dd|_|jr||j|jpg}|jp|j|} |jj|||||j|j|| ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrrr)rextra_postargsdepends)r,r-r~rexport_symbolsrr'Z target_lang)!rnrKrsrvrtrWrrrrr rinfo swig_sourcesrprrrSr0compiler'r)Z_built_objectsrorVrqlanguageZdetect_languageZlink_shared_object get_librariesr-r~get_export_symbols) r5rrnext_pathrZ extra_argsrrr+ZobjectsrrrrrsN         zbuild_ext.build_extensioncCs0g}g}i}|jrtd|js6d|jks6d|jkr        zbuild_ext.swig_sourcescCs`tjdkrdStjdkrNxBdD]&}tjd|d}tj|r|SqWdSntdtjdS) zReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. posixr1r9)z1.3z1.2z1.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s'N)rNrWrTrUisfileZDistutilsPlatformError)r5Zversfnrrrrgs    zbuild_ext.find_swigcCs||}|d}||d}|jsRtjj|dd|g}tj|j|Sd|dd}|d}tj | |}tj||S)zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). rBrNrbuild_py) get_ext_fullnamerMget_ext_filenamerrNrTrUr%rhabspathZget_package_dir)r5rfullnameZmodpathfilenamer(rZ package_dirrrrrs   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNrB)r()r5rrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|d}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). r)r^rBZ EXT_SUFFIX)distutils.sysconfigr^rMrNrTrU)r5rr^rZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCs0d|jdd}||jkr*|j||jS)aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. ZPyInit_rBr)rWrMrrS)r5rZ initfunc_namerrrrs  zbuild_ext.get_export_symbolscCstjdkrdddlm}t|j|s\d}|jr4|d}|tjd?tjd?d@f}|j|gS|jSnttjd krt|jStjd d d kr|jSdd l m }| drd tjd?tjd?d@| d}|j|gS|jSd S)zReturn the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). r;r) MSVCCompilerz python%d%dZ_ddarwinNZaix)r7rCz python{}.{}{}ZABIFLAGS) rPr[Zdistutils._msvccompilerrrKr0r hexversionr,rIr7r^format)r5rrtemplateZ pythonlibr7rrrrs*         zbuild_ext.get_libraries) __name__ __module__ __qualname__Z descriptionrNrOZsep_byr Z user_optionsZboolean_optionsr Z help_optionsr6rcrlrrrrirr contextlibcontextmanagerrrrrrrrrrrrrrr!s^  @N  K6   r)__doc__rrNrerPZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rIr Zsiter rryr rrrrrs"       PKr ]8;r)command/__pycache__/upload.cpython-37.pycnu[B  f]@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZddZddZd d Z d d Z d S)uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesr cCs,t|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr=/opt/alt/python37/lib64/python3.7/distutils/command/upload.pyr s  zupload.initialize_optionscCsrt||jr|jstd|}|ikrV|d|_|d|_|d|_|d|_ |jsn|j jrn|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rZconfigrrrr(s      zupload.finalize_optionscCs>|jjsd}t|x$|jjD]\}}}||||qWdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc$Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } z | } Wd| X|j j } d d | | tj|| f||t| d | | | | | | | | | | | | | d}d}|dkrZt!"\}}}|rtd||f}n|dkrtdt!j!dd}||d<|jrtj|dt|dd f|d<|j#d|j$%d}dt&|'d}d}d|%d}|d}t()}x|*D]\}}d|}t+|t,s |g}xr|D]j}t-|t.krR|d |d!7}|d}nt/|%d"}|0||0|%d"|0d#|0|q&WqW|0||1}d$||jf}|2|t3j4d%|t/t5||d&}t6|j||d'}yt7|}|8} |j9}!Wnft:k r:}"z|"j;} |"j9}!Wdd}"~"XYn8tr|?|}#d*@d+|#d+f}|2|t3j4n"d,| |!f}|2|t3j=tA|dS)-NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper Z md5_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %s)Ztersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s zK---------------------------------------------------------------------------zUpload failed (%s): %s)BrrAssertionErrorr rr r$openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZmd5Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesr-distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvalueZannouncer INFOlenrrZgetcoderrcodeOSErrorZERRORrZ_read_pypi_responsejoinr)$rrr r!ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr)metar2r/r>r(idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitlerr3ZrequestresultZstatusreasonetextrrrrBs                      zupload.upload_fileN) __name__ __module__ __qualname__r+r Z user_optionsZboolean_optionsrrr"rrrrrr s r )__doc__r:rAr-r=base64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PKr ]W [[8command/__pycache__/install_scripts.cpython-37.opt-1.pycnu[B  f@sDdZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@sLeZdZdZddddgZddgZdd Zd d Zd d ZddZ ddZ dS)install_scriptsz%install scripts (Python or otherwise))z install-dir=dzdirectory to install scripts to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))z skip-buildNzskip the build stepsrz skip-buildcCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfrF/opt/alt/python37/lib64/python3.7/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |dd|dddddS)NZbuild) build_scriptsr Zinstall)rr )rr)r r )Zset_undefined_options)r rrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|d||j|j|_tjdkrxT|D]H}|j rNt d|q6t |t dBd@}t d||t||q6WdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)r Z run_commandZ copy_treer r outfilesosname get_outputsZdry_runrinfostatrchmod)r filemoderrrrun)s  zinstall_scripts.runcCs |jjp gS)N)Z distributionZscripts)r rrr get_inputs8szinstall_scripts.get_inputscCs |jpgS)N)r)r rrrr;szinstall_scripts.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrrsr) __doc__rZdistutils.corerZ distutilsrrrrrrrrs    PKr ]\O -command/__pycache__/bdist_dumb.cpython-37.pycnu[B  f1@shdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZddddefdddd d d d g Zd ddgZdddZddZddZ ddZ dS) bdist_dumbz"create a "dumb" built distribution)z bdist-dir=dz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))zformat=fz>archive format to create (tar, gztar, bztar, xztar, ztar, zip))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=r z-directory to put final built distributions in)z skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths (default: false))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]z keep-tempz skip-buildrZgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfrA/opt/alt/python37/lib64/python3.7/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|dj}tj|d|_|jdkrfy|jtj|_Wn"t k rdt dtjYnX| dddddS)NZbdistZdumbz@don't know how to create dumb built distributions on platform %s)rr)rr)rr) rZget_finalized_command bdist_baseospathjoinrdefault_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)rr rrrfinalize_options=s   zbdist_dumb.finalize_optionscCs(|js|d|jddd}|j|_|j|_d|_td|j|dd|j |j f}t j |j|}|js~|j}nJ|jr|j|jkrtdt|jt|jfnt j |jt|j}|j||j||j|jd }|jrt}nd }|jjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirrranyr )dry_run) rZ run_commandZreinitialize_commandrrootZwarn_dirrinfoZ distributionZ get_fullnamerr!r"r#rrZhas_ext_modulesZ install_baseZinstall_platbaser'reprrZ make_archiverrrrZ dist_filesappendrrr,)rr)Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionrrrrunOs>          zbdist_dumb.runN) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr$rr(r2rrrrr s$  r )__doc__r!Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs    PKr ]n)).command/__pycache__/clean.cpython-37.opt-1.pycnu[B  f @sDdZddlZddlmZddlmZddlmZGdddeZdS)zBdistutils.command.clean Implements the Distutils 'clean' command.N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZd d Zd d Zd dZdS)cleanz-clean up temporary files from 'build' command)z build-base=bz2base build directory (default: 'build.build-base'))z build-lib=Nzs    PKr ]ޮ/command/__pycache__/config.cpython-37.opt-2.pycnu[B YI~d3@shddlZddlZddlmZddlmZddlmZddlm Z dddZ Gd d d eZ d d d Z dS)N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZdddddddd d g Zd d Zd dZddZddZddZ ddZ ddZ ddZ ddZ d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddgfd,d-Zd6d.d/ZdS)7configzprepare to build)z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_files)selfr=/opt/alt/python37/lib64/python3.7/distutils/command/config.pyinitialize_options3szconfig.initialize_optionscCs|jdkr|jjpg|_nt|jtr6|jtj|_|jdkrHg|_nt|jtr^|jg|_|jdkrpg|_nt|jtr|jtj|_dS)N) rZ distribution isinstancestrsplitospathseprr)rrrrfinalize_optionsBs       zconfig.finalize_optionscCsdS)Nr)rrrrrunRsz config.runcCszddlm}m}t|j|sv||j|jdd|_t|j|jrN|j|j|j rb|j |j |j rv|j |j dS)Nr) CCompiler new_compilerr)rdry_runforce) distutils.ccompilerr r!rrr"rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr r!rrr_check_compilerYs  zconfig._check_compilercCsldt|}t|d}|r@x|D]}|d|q W|d|||ddkr`|d||S)NZ _configtestwz#include <%s>  )LANG_EXTopenwriteclose)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks       zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.i)r)r3rextendrZ preprocess)rr-r.rr/srcoutrrr _preprocessxs zconfig._preprocesscCs\||||}|jr"t|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':)r)r3r dump_filerZobject_filenamesrr4compile)rr-r.rr/r5objrrr_compileszconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdk r\| |jj} |j | ||| fS)Nr)rrZ target_lang) r;rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr-r.rrrr/r5r:progrrr_links    z config._linkc GsX|s|j}g|_tdd|x0|D](}yt|Wq(tk rNYq(Xq(WdS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr0rrr_cleans z config._cleanNrcCsRddlm}|d}y|||||Wn|k rDd}YnX||S)Nr) CompileErrorTF)r$rIr%r7rH)rr-r.rr/rIokrrrtry_cpps  zconfig.try_cppc Csx||||||\}}t|tr0t|}t|}d} x&|} | dkrPP|| r>d} Pq>W| | | S)NFT) r%r7rrrer9r*readlinesearchr,rH) rpatternr-r.rr/r5r6r1matchlinerrr search_cpps    zconfig.search_cppcCsdddlm}|y|||||d}Wn|k rDd}YnXt|rRdpTd||S)Nr)rITFzsuccess!zfailure.)r$rIr%r;rrCrH)rr-r.rr/rIrJrrr try_compiles  zconfig.try_compilec Cspddlm}m}|y|||||||d} Wn||fk rPd} YnXt| r^dp`d|| S)Nr)rI LinkErrorTFzsuccess!zfailure.)r$rIrUr%rArrCrH) rr-r.rrrr/rIrUrJrrrtry_links   zconfig.try_linkc Csddlm}m}|y.|||||||\} } } || gd} Wn||tfk rdd} YnXt| rrdptd| | S)Nr)rIrUTFzsuccess!zfailure.) r$rIrUr%rAZspawnrrrCrH) rr-r.rrrr/rIrUr5r:ZexerJrrrtry_runs   zconfig.try_runrc Cst|g}|r|d||d|r<|d|n|d||dd|d}||||||S)Nz int %s ();z int main () {z %s();z %s;}r')r%r?rDrV) rfuncr.rrrZdeclZcallr-rrr check_funcs   zconfig.check_funccCs ||d|||g||S)Nzint main (void) { })r%rV)rZlibraryrr.rZother_librariesrrr check_lib6s  zconfig.check_libcCs|jd|g|dS)Nz /* No body */)r-r.r)rK)rr2rrr/rrr check_headerDs zconfig.check_header)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__ descriptionZ user_optionsrrrr%r3r7r;rArHrKrSrTrVrWrZr[r\rrrrrsB         rcCsJ|dkrtd|n t|t|}zt|Wd|XdS)Nz%s)rrCr*readr,)r0headr1rrrr8Ns r8)N) rrMZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr)rr8rrrr s     ;PKr ]8;r/command/__pycache__/upload.cpython-37.opt-1.pycnu[B  f]@sdZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZddlmZdd lmZGd d d eZdS) zm distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to a package index). N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZddZddZd d Z d d Z d S)uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesr cCs,t|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr=/opt/alt/python37/lib64/python3.7/distutils/command/upload.pyr s  zupload.initialize_optionscCsrt||jr|jstd|}|ikrV|d|_|d|_|d|_|d|_ |jsn|j jrn|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rZconfigrrrr(s      zupload.finalize_optionscCs>|jjsd}t|x$|jjD]\}}}||||qWdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc$Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } z | } Wd| X|j j } d d | | tj|| f||t| d | | | | | | | | | | | | | d}d}|dkrZt!"\}}}|rtd||f}n|dkrtdt!j!dd}||d<|jrtj|dt|dd f|d<|j#d|j$%d}dt&|'d}d}d|%d}|d}t()}x|*D]\}}d|}t+|t,s |g}xr|D]j}t-|t.krR|d |d!7}|d}nt/|%d"}|0||0|%d"|0d#|0|q&WqW|0||1}d$||jf}|2|t3j4d%|t/t5||d&}t6|j||d'}yt7|}|8} |j9}!Wnft:k r:}"z|"j;} |"j9}!Wdd}"~"XYn8tr|?|}#d*@d+|#d+f}|2|t3j4n"d,| |!f}|2|t3j=tA|dS)-NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper Z md5_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %s)Ztersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s zK---------------------------------------------------------------------------zUpload failed (%s): %s)BrrAssertionErrorr rr r$openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZmd5Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesr-distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvalueZannouncer INFOlenrrZgetcoderrcodeOSErrorZERRORrZ_read_pypi_responsejoinr)$rrr r!ZschemaZnetlocZurlZparamsZqueryZ fragmentsZgpg_argsfr)metar2r/r>r(idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitlerr3ZrequestresultZstatusreasonetextrrrrBs                      zupload.upload_fileN) __name__ __module__ __qualname__r+r Z user_optionsZboolean_optionsrrr"rrrrrr s r )__doc__r:rAr-r=base64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PKr ]鼡V-command/__pycache__/build_clib.cpython-37.pycnu[B  fV@sTdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rrA/opt/alt/python37/lib64/python3.7/distutils/command/build_clib.pyrs rc@sleZdZdZdddddgZddgZd d d efgZd d ZddZ ddZ ddZ ddZ ddZ ddZd S) build_clibz/build C/C++ libraries used by Python extensions)z build-clib=bz%directory to build C/C++ libraries to)z build-temp=tz,directory to put temporary build by-products)debuggz"compile with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler typer rz help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefr rcompiler)selfrrr initialize_options4szbuild_clib.initialize_optionscCsh|dddddd|jj|_|jr0||j|jdkrH|jjpDg|_t|jtrd|jtj |_dS)NZbuild)rr )rr)rr)r r )rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)rrrr finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|j|j|j dk rzx |j D]\}}|j ||q`W|j dk rx|j D]}|j |qW| |jdS)Nr) new_compiler)rdry_runr)rrr!rr"rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)rr!namevalueZmacrorrr run^s        zbuild_clib.runcCst|tstdx|D]z}t|ts:t|dkr:td|\}}t|tsTtdd|ksptjdkrtj|krtd|dt|tstdqWd S) a`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) rlistDistutilsSetupErrortuplelenrrsepdict)rrlibr$ build_inforrr rvs"     zbuild_clib.check_library_listcCs0|js dSg}x|jD]\}}||qW|S)N)rappend)rZ lib_nameslib_namer0rrr get_library_namess zbuild_clib.get_library_namescCs^||jg}xH|jD]>\}}|d}|dks@t|ttfsLtd|||qW|S)Nsourceszfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)rrgetrr)r+r*extend)r filenamesr2r0r4rrr get_source_filess  zbuild_clib.get_source_filescCsx|D]\}}|d}|dks.t|ttfs:td|t|}td||d}|d}|jj||j |||j d}|jj |||j |j dqWdS)Nr4zfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenameszbuilding '%s' librarymacrosr) output_dirr9rr )r:r ) r5rr)r+r*rinforcompilerr Zcreate_static_libr )rrr2r0r4r9rZobjectsrrr r#s$      zbuild_clib.build_libraries)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsrr r&rr3r8r#rrrr r s  $ r ) __doc__rZdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr rrrr s    PKr ]\O 3command/__pycache__/bdist_dumb.cpython-37.opt-1.pycnu[B  f1@shdZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gd d d eZdS) zdistutils.command.bdist_dumb Implements the Distutils 'bdist_dumb' command (create a "dumb" built distribution -- i.e., just an archive to be unpacked under $prefix or $exec_prefix).N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZddddefdddd d d d g Zd ddgZdddZddZddZ ddZ dS) bdist_dumbz"create a "dumb" built distribution)z bdist-dir=dz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))zformat=fz>archive format to create (tar, gztar, bztar, xztar, ztar, zip))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=r z-directory to put final built distributions in)z skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths (default: false))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]z keep-tempz skip-buildrZgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfrA/opt/alt/python37/lib64/python3.7/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|dj}tj|d|_|jdkrfy|jtj|_Wn"t k rdt dtjYnX| dddddS)NZbdistZdumbz@don't know how to create dumb built distributions on platform %s)rr)rr)rr) rZget_finalized_command bdist_baseospathjoinrdefault_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)rr rrrfinalize_options=s   zbdist_dumb.finalize_optionscCs(|js|d|jddd}|j|_|j|_d|_td|j|dd|j |j f}t j |j|}|js~|j}nJ|jr|j|jkrtdt|jt|jfnt j |jt|j}|j||j||j|jd }|jrt}nd }|jjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirrranyr )dry_run) rZ run_commandZreinitialize_commandrrootZwarn_dirrinfoZ distributionZ get_fullnamerr!r"r#rrZhas_ext_modulesZ install_baseZinstall_platbaser'reprrZ make_archiverrrrZ dist_filesappendrrr,)rr)Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionrrrrunOs>          zbdist_dumb.runN) __name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsr$rr(r2rrrrr s$  r )__doc__r!Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs    PKr ][k*biEiE2command/__pycache__/bdist_msi.cpython-37.opt-2.pycnu[B YI~d@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGd ddeZdS)N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sBeZdZddZddZdddZdd d Zdd dZddZdS)PyDialogcOs>tj|f||jd}d|d}|dd||jddS)N$iHZ BottomLiner)r__init__hlinew)selfargskwZrulerZbmwidthr@/opt/alt/python37/lib64/python3.7/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|ddddddd|dS)NTitle i@<iz{\VerdanaBold10}%s)r )rtitlerrrr #szPyDialog.titleBackc Cs,|r d}nd}||d|jddd|||S)Nr"8) pushbuttonr)rr nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}||d|jddd|||S)Nr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}||d|jddd|||S)Nr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@sz PyDialog.nextc Cs,||t|j|d|jdddd||S)Nr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN)r!r")r.r")r0r") __name__ __module__ __qualname__rr r-r/r)r4rrrrrs   rc@seZdZdZddddefdddd d d d d g ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(Z d)d*Z d+d,Z d-d.Z d/d0Z d1d2Zd3d4Zd5d6Zd7S)8 bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz keep-tempzno-target-compilezno-target-optimizez skip-buildz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|dd|jdkr2|dj}tj|d|_t}|jsN|j rN||_|jr|jg|_ |j s|j r|j|krt d|fn t|j|_ |ddd|jrt d|jrx2|j jD]}|jtj|krPqWt d|jd|_dS) NZbdist)rDrDZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rCrC)r@r@z5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsr?get_finalized_command bdist_baseospathjoinrrB distributionhas_ext_modulesrGrDrlist all_versionsrFrEZscriptsbasenameinstall_script_key)rrJZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCsz|js|d|jddd}|j|_|j|_d|_|d}d|_d|_|j r|j }|spdt j dd}d |j |f}|d}tj|jd ||_td |j|t jdtj|jd |t jd=||j|j}||}tj|}tj|r"t||jj }|j!} | s<|j"} | sFd } |#} dt$| j%} |j}|j r~d|j |f} nd|} t&'|t(| t&)| | |_*t&+|j*t,d| fg} |j-p|j.}|r| /d|f|j0r| /d|j0f| rt1|j*d| |2|3|4|5|j*6t7|jdr^d|j pJd|f}|jj8/||j9svt:|j|j;ddS)Nbuildinstallr")Zreinit_subcommandsr install_libz%d.%dz.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr8any)dry_run) }|d?d%d@dAd%d)dB|d7d-dCdDd-d)dE|dFd-dGdHdddI| dJdKd-dLdHdMdNdOddd |jd1dPd1d/} | d0d1|j dPd }|d?d%d@dAd%d)d|d7d-d-dDd-d)d|dFd-ddHddd| ddd-ddHdddddd |ddndd d0d9t|d||||||ddd" }|d|dd%ddtddddXd }|dd ddd-d|dd ddd-d|jd#dd d!| dd"} | dddd| j d0d9dd|d"d} | ddst|d||||||d"d"d"d=d> }|d?d-d%dAd%d)d|dFddddwddġ|ddddd-ddơ|dd&d|d&d-dd} | ddF| ddddZddRddddd } | ddˡ|jddd=d!|j dd"d=d!|d"d# ddst|d||||||ddd" }|d͡|dd%ddHdhddС|dd%ddHddddXd }|dd ddAd{d֡|dd ddAd{d١|jddd=d!| dd"} | dddd| dddd@| ddddN| dddd| dddd| dddd| dddd| dddd| d0d9dd-|d"dѡ ddsdS)Nriri,z[ProductName] Setupr#r" rZ)Z DefaultUIFontDlgFont8)Z ErrorDialogErrorDlg)Z Progress1ZInstall)Z Progress2Zinstalls)MaintenanceForm_ActionRepair) WhichUsersALLZ TextStyle)rTahoma Nr)Z DlgFontBold8rNr")Z VerdanaBold10VerdanarNr")Z VerdanaRed9rrrr) PrepareDlgz(Not Privileged or Windows9x or Installed) WhichUsersDlgz.Privileged and not Windows9x and not Installed)SelectFeaturesDlgz Not Installedi)MaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectedi) ProgressDlgNi ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r+r.r!Z Description1rFi@Piz[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.)r*Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryF)Zbitmaprz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnorerreiZ ErrorTextr0r|NxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r&r'ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.fr(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar0Z SpawnDialogrzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogrXZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHiderzZ DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?rZ AdminInstallzGSelect whether to install [ProductName] for all users of this computer.rrzInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"rz({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressrz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrrrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallrz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rorr rrrr r-r/r)ZeventZcontrolrr(mappingrNrfrGr}Z conditionr4Z radiogroupadd)rroxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalr;Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrmrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrts                                                               zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rBr@rKrLrMrC)rrwZ base_namerxrrrrgs  z bdist_msi.get_installer_filenameN)r5r6r7 descriptionrZ user_optionsZboolean_optionsrQr}rHrTrerrrqrsrtrgrrrrr8Ss<    ([66&@r8)rarKZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrnr r r r r rrrr8rrrr s       >PKr ]& & 3command/__pycache__/bdist_dumb.cpython-37.opt-2.pycnu[B YI~d1@sdddlZddlmZddlmZddlmZmZddlTddl m Z ddl m Z Gdd d eZ dS) N)Command) get_platform) remove_treeensure_relative)*)get_python_version)logc @s^eZdZdZddddefdddd d d d g Zd ddgZdddZddZddZ ddZ dS) bdist_dumbz"create a "dumb" built distribution)z bdist-dir=dz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))zformat=fz>archive format to create (tar, gztar, bztar, xztar, ztar, zip))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)z dist-dir=r z-directory to put final built distributions in)z skip-buildNz2skip rebuilding everything (for testing/debugging))relativeNz7build the archive using relative paths (default: false))zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]z keep-tempz skip-buildrZgztarzip)posixntcCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_nameformat keep_tempdist_dir skip_buildrownergroup)selfrA/opt/alt/python37/lib64/python3.7/distutils/command/bdist_dumb.pyinitialize_options2szbdist_dumb.initialize_optionscCsz|jdkr&|dj}tj|d|_|jdkrfy|jtj|_Wn"t k rdt dtjYnX| dddddS)NZbdistZdumbz@don't know how to create dumb built distributions on platform %s)rr)rr)rr) rZget_finalized_command bdist_baseospathjoinrdefault_formatnameKeyErrorDistutilsPlatformErrorZset_undefined_options)rr rrrfinalize_options=s   zbdist_dumb.finalize_optionscCs(|js|d|jddd}|j|_|j|_d|_td|j|dd|j |j f}t j |j|}|js~|j}nJ|jr|j|jkrtdt|jt|jfnt j |jt|j}|j||j||j|jd }|jrt}nd }|jjd ||f|js$t|j|jd dS) NZbuildinstall)Zreinit_subcommandsrzinstalling to %sz%s.%szScan't make a dumb built distribution where base and platbase are different (%s, %s))Zroot_dirrranyr )dry_run) rZ run_commandZreinitialize_commandrrootZwarn_dirrinfoZ distributionZ get_fullnamerr!r"r#rrZhas_ext_modulesZ install_baseZinstall_platbaser'reprrZ make_archiverrrrZ dist_filesappendrrr,)rr)Zarchive_basenameZpseudoinstall_rootZ archive_rootfilenameZ pyversionrrrrunOs>          zbdist_dumb.runN) __name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsr$rr(r2rrrrr s$  r )r!Zdistutils.corerZdistutils.utilrZdistutils.dir_utilrrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr rrrrs    PKr ]Կ1command/__pycache__/__init__.cpython-37.opt-2.pycnu[B YI~d@s.dddddddddd d d d d dddddgZdS)ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleaninstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__all__rr?/opt/alt/python37/lib64/python3.7/distutils/command/__init__.pys$PKr ],J/J/2command/__pycache__/bdist_rpm.cpython-37.opt-2.pycnu[B YI~dT@s|ddlZddlZddlZddlmZddlmZddlmZddl m Z ddl Tddl m Z ddlmZGd d d eZdS) N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z d9d:Z d;d<Z d=d>Z d?S)@ bdist_rpmzcreate an RPM distribution)z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package)z no-autoreqNz+do not automatically calculate dependencies)z keep-tempkz"don't clean up RPM build directory)z no-keep-tempNz&clean up RPM build directory [default])zuse-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)zno-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler)z rpm3-modeNz"RPM 3 compatibility mode (default))z rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nzrr)ZREADMEz README.txtr1rrrr r!r"r#r$r%r&r'r(r)r+r,r-r.r/r4)Z ensure_stringrAZ get_contactZget_contact_emailZensure_string_list isinstancerlistr;r<existsappend_format_changelogrZensure_filename)r5Zreadmer6r6r7rCs>                         zbdist_rpm.finalize_package_datacCstrsz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s ZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r*r!z&%setup -n %{name}-%{unmangled_version}Zbuildr"installr#)Zcleanr$zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr%N)Zprer&N)Zpostr'N)Zpreunr(N)Zpostunr)N%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rArRZ get_versionreplacerZget_description subprocessZ getoutputr= splitlinesrIrVrZ get_licenserr4rBgetattrlowerrFrGZget_urlrr.r r;r<r^r3Zget_long_descriptionrr>argvr1openreadr[rr)r5Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultr6r6r7rSs                    zbdist_rpm._make_spec_filecCs|s|Sg}x`|dD]N}|}|ddkrD|d|gq|ddkr\||q|d|qW|ds||d=|S)Nrjrrrirgz )rZr[rVrI)r5rZ new_changelograr6r6r7rJ3s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optr8rDrCrerfrSrJr6r6r6r7r sp--)r )rrr>r;Zdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r6r6r6r7s      PKr ]ٝ''/command/__pycache__/config.cpython-37.opt-1.pycnu[B  f3@sldZddlZddlZddlmZddlmZddlmZddl m Z ddd Z Gd d d eZ dd d Z dS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZdddddddd d g Zd d Zd dZddZddZddZ ddZ ddZ ddZ ddZ d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddgfd,d-Zd6d.d/ZdS)7configzprepare to build)z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_files)selfr=/opt/alt/python37/lib64/python3.7/distutils/command/config.pyinitialize_options3szconfig.initialize_optionscCs|jdkr|jjpg|_nt|jtr6|jtj|_|jdkrHg|_nt|jtr^|jg|_|jdkrpg|_nt|jtr|jtj|_dS)N) rZ distribution isinstancestrsplitospathseprr)rrrrfinalize_optionsBs       zconfig.finalize_optionscCsdS)Nr)rrrrrunRsz config.runcCszddlm}m}t|j|sv||j|jdd|_t|j|jrN|j|j|j rb|j |j |j rv|j |j dS)z^Check that 'self.compiler' really is a CCompiler object; if not, make it one. r) CCompiler new_compilerr)rdry_runZforceN) distutils.ccompilerr r!rrr"rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr r!rrr_check_compilerYs  zconfig._check_compilercCsldt|}t|d}|r@x|D]}|d|q W|d|||ddkr`|d||S)NZ _configtestwz#include <%s>  )LANG_EXTopenwriteclose)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks       zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.i)r)r2rextendrZ preprocess)rr,r-rr.srcoutrrr _preprocessxs zconfig._preprocesscCs\||||}|jr"t|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':)r)r2r dump_filerZobject_filenamesrr3compile)rr,r-rr.r4objrrr_compileszconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdk r\| |jj} |j | ||| fS)Nr)rrZ target_lang) r:rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr,r-rrrr.r4r9progrrr_links    z config._linkc GsX|s|j}g|_tdd|x0|D](}yt|Wq(tk rNYq(Xq(WdS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr/rrr_cleans z config._cleanNrcCsRddlm}|d}y|||||Wn|k rDd}YnX||S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r) CompileErrorTF)r#rHr$r6rG)rr,r-rr.rHokrrrtry_cpps  zconfig.try_cppc Csx||||||\}}t|tr0t|}t|}d} x&|} | dkrPP|| r>d} Pq>W| | | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r$r6rrrer8r)readlinesearchr+rG) rpatternr,r-rr.r4r5r0matchlinerrr search_cpps    zconfig.search_cppcCsdddlm}|y|||||d}Wn|k rDd}YnXt|rRdpTd||S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. r)rHTFzsuccess!zfailure.)r#rHr$r:rrBrG)rr,r-rr.rHrIrrr try_compiles  zconfig.try_compilec Cspddlm}m}|y|||||||d} Wn||fk rPd} YnXt| r^dp`d|| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. r)rH LinkErrorTFzsuccess!zfailure.)r#rHrTr$r@rrBrG) rr,r-rrrr.rHrTrIrrrtry_links   zconfig.try_linkc Csddlm}m}|y.|||||||\} } } || gd} Wn||tfk rdd} YnXt| rrdptd| | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. r)rHrTTFzsuccess!zfailure.) r#rHrTr$r@ZspawnrrrBrG) rr,r-rrrr.rHrTr4r9ZexerIrrrtry_runs   zconfig.try_runrc Cst|g}|r|d||d|r<|d|n|d||dd|d}||||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r&)r$r>rCrU) rfuncr-rrrZdeclZcallr,rrr check_funcs   zconfig.check_funccCs ||d|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r$rU)rZlibraryrr-rZother_librariesrrr check_lib6s  zconfig.check_libcCs|jd|g|dS)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. z /* No body */)r,r-r)rJ)rr1rrr.rrr check_headerDs zconfig.check_header)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsrrrr$r2r6r:r@rGrJrRrSrUrVrYrZr[rrrrrsB         rcCsJ|dkrtd|n t|t|}zt|Wd|XdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrBr)readr+)r/headr0rrrr7Ns r7)N)__doc__rrLZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr(rr7rrrr s     ;PKr ]bO.command/__pycache__/install_lib.cpython-37.pycnu[B  f @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default])z no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])z skip-buildNzskip the build stepsrr z skip-buildz no-compilecCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_build)selfrB/opt/alt/python37/lib64/python3.7/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtsyt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr )rr )rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddS)Nbuild_py build_ext)rrrZ run_commandhas_ext_modules)rrrrrfs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirr Z copy_treer warn)rr!rrrrms  zinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r r)rrprefixdry_run)rrr*verboser+) sysdont_write_bytecoder)Zdistutils.utilr get_finalized_commandrootr rr+rr,)rfilesr Z install_rootrrrr vs     zinstall_lib.byte_compilec Csh|sgS||}|}t||}t|ttj}g}x(|D] } |tj|| |dq@W|S)N) r/ get_outputsgetattrlenr&sepappendr'join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss    zinstall_lib._mutate_outputscCsvg}xl|D]d}tjtj|d}|tkr0q |jrL|tjj |dd|j dkr |tjj ||j dq W|S)Nr) optimizationr) r&r'splitextnormcasePYTHON_SOURCE_EXTENSIONr r6 importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r#rr$)r:rrr r rCr%)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr2s   zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r#r$)rrr/extendr2r%)rZinputsr#r$rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrr"rrr r:rCr2rErrrrrs(   r) __doc__r&importlib.utilr@r-Zdistutils.corerZdistutils.errorsrr?rrrrrs  PKr ]LV88.command/__pycache__/sdist.cpython-37.opt-1.pycnu[B  f7J@sdZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd l m Z dd lmZdd lmZdd lmZdd lmZmZddZGdddeZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCsdddlm}ddlm}g}x,|D] }|d|d||dfq&W|||ddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSzformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatrd?Zd@dAZdBdCZdDdEZ dFdGZ!dHdIZ"dS)Jsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_check)selfrrrchecking_metadata(szsdist.checking_metadata)z template=tz5name of manifest template file [default: MANIFEST.in])z manifest=mz)name of manifest file [default: MANIFEST])z use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults])z no-defaultsNz"don't include the default file set)pruneNzspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])zno-pruneNz$don't automatically exclude anything)z manifest-onlyozEjust regenerate the manifest and then stop (implies --force-manifest))zforce-manifestfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)zformats=Nz6formats for source distribution (comma-separated list))z keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])zmetadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]z use-defaultsrz manifest-onlyzforce-manifestz keep-tempzmetadata-checkz help-formatsNz#list available distribution formats)z no-defaultszno-prunecheck)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|dt|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r)r(Zensure_string_listrZcheck_archive_formatsrr r-)rZ bad_formatrrrfinalize_options|s      zsdist.finalize_optionscCsBt|_x|D]}||qW||jr6dS|dS)N)r filelistZget_sub_commandsZ run_command get_file_listr+make_distribution)rZcmd_namerrrrunsz sdist.runcCs*tdt|jd}||dS)zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr&N)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr6)rr&rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)aCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Nz?manifest template '%s' does not exist (using default file list))ospathisfiler(_manifest_is_not_generated read_manifestr3rZremove_duplicatesrfindallr* add_defaults read_templaterprune_file_listwrite_manifest)rZtemplate_existsrrrr4s&       zsdist.get_file_listcCs<|||||||dS)a9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. N)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scripts)rrrrr@szsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|kS)z Case-sensitive path existence check >>> sdist._cs_path_exists(__file__) True >>> sdist._cs_path_exists(__file__.upper()) False F)r:r;existsabspathsplitlistdir)fspathrLZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}x|D]}t|trn|}d}x(|D] }||r0d}|j|Pq0W|s|dd |q||r|j|q|d|qWdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESr8Z script_name isinstancetuplerQr3rrjoin)rZ standardsfnZaltsZgot_itrrrrDs       zsdist._add_defaults_standardscCs8ddg}x*|D]"}ttjjt|}|j|qWdS)Nz test/test*.pyz setup.cfg)filterr:r;r<rr3extend)rZoptionalpatternfilesrrrrEs zsdist._add_defaults_optionalcCsd|d}|jr$|j|x:|jD]0\}}}}x"|D]}|jtj ||q>Wq,WdS)Nbuild_py) get_finalized_commandr8Zhas_pure_modulesr3rXget_source_files data_filesrr:r;rU)rr[ZpkgZsrc_dirZ build_dir filenamesrPrrrrFs    zsdist._add_defaults_pythoncCs|jr~xr|jjD]f}t|trDt|}tj|rz|j |q|\}}x,|D]$}t|}tj|rR|j |qRWqWdS)N) r8Zhas_data_filesr^rSstrr r:r;r<r3r)ritemdirnamer_r!rrrrG$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)r8Zhas_ext_modulesr\r3rXr])rrcrrrrH5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)r8Zhas_c_librariesr\r3rXr])rrdrrrrI:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)r8Z has_scriptsr\r3rXr])rrerrrrJ?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zlxf|}|dkrs  zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t|xD|D]<}tj |s~td|q`tj ||}|j |||d q`W|j j|dS) aCreate the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. )dry_runlinkZhardzmaking hard links in %s...Nzcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r{)ZmkpathrZ create_treerzhasattrr:r rrfr;r<rUZ copy_filer8ZmetadataZwrite_pkg_info)rrsrZr{rkfiledestrrrmake_release_trees       zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j krT|j |j |j dxD|j D]:}|j ||||j|jd}| ||jj dd|fq\W||_|jstj||jddS)aCreate the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. Ztar)rsr/r0r)rzN)r8rpr:r;rUr-rr3rZrrpopindexZ make_archiver/r0Z dist_filesr.r,rZ remove_treerz)rrsZ base_namer.Zfmtr}rrrr5s     zsdist.make_distributioncCs|jS)zzReturn the list of archive files created when the command was run, or None if the command hasn't run yet. )r.)rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrRr1r2r6r9r4r@ staticmethodrQrDrErFrGrHrIrJrArBrCr=r>rr5rrrrrr$s^  (  *r)__doc__r:rqrwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs          PKr ]'Mn2command/__pycache__/install_headers.cpython-37.pycnu[B  f@s$dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sFeZdZdZddgZdgZddZddZd d Zd d Z d dZ dS)install_headerszinstall C/C++ header files)z install-dir=dz$directory to install header files to)forcefz-force installation (overwrite existing files)rcCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr F/opt/alt/python37/lib64/python3.7/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|ddddS)NZinstall)rr)rr)Zset_undefined_options)r r r r finalize_optionssz install_headers.finalize_optionscCsL|jj}|sdS||jx*|D]"}|||j\}}|j|q"WdS)N) distributionheadersZmkpathrZ copy_filerappend)r rheaderout_r r r run!s  zinstall_headers.runcCs |jjp gS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r)r r r r get_outputs.szinstall_headers.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsr r rrrr r r r r s rN)__doc__Zdistutils.corerrr r r r s PKr ]Iaa/command/__pycache__/upload.cpython-37.opt-2.pycnu[B YI~d]@sddlZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z mZddlmZddlmZddlmZGd d d eZdS) N)standard_b64encode)urlopenRequest HTTPError)urlparse)DistutilsErrorDistutilsOptionError) PyPIRCCommand)spawn)logc@sJeZdZdZejddgZejdgZddZddZd d Z d d Z d S)uploadzupload binary package to PyPI)signszsign files to upload using gpg)z identity=izGPG identity used to sign filesr cCs,t|d|_d|_d|_d|_d|_dS)NrF)r initialize_optionsusernamepassword show_responser identity)selfr=/opt/alt/python37/lib64/python3.7/distutils/command/upload.pyr s  zupload.initialize_optionscCsrt||jr|jstd|}|ikrV|d|_|d|_|d|_|d|_ |jsn|j jrn|j j|_dS)Nz.Must use --sign for --identity to have meaningrr repositoryrealm) r finalize_optionsrr rZ _read_pypircrrrr distribution)rZconfigrrrr(s      zupload.finalize_optionscCs>|jjsd}t|x$|jjD]\}}}||||qWdS)NzHMust create and upload files in one command (e.g. setup.py sdist upload))rZ dist_filesr upload_file)rmsgcommand pyversionfilenamerrrrun:s z upload.runc$Cst|j\}}}}}} |s"|s"| r0td|j|dkrDtd||jr|ddd|g} |jrnd|jg| dd<t| |jd t|d } z | } Wd| X|j j } d d | | tj|| f||t| d | | | | | | | | | | | | | d}d}|dkrZt!"\}}}|rtd||f}n|dkrtdt!j!dd}||d<|jrtj|dt|dd f|d<|j#d|j$%d}dt&|'d}d}d|%d}|d}t()}x|*D]\}}d|}t+|t,s |g}xr|D]j}t-|t.krR|d |d!7}|d}nt/|%d"}|0||0|%d"|0d#|0|q&WqW|0||1}d$||jf}|2|t3j4d%|t/t5||d&}t6|j||d'}yt7|}|8} |j9}!Wnft:k r:}"z|"j;} |"j9}!Wdd}"~"XYn8tr|?|}#d*@d+|#d+f}|2|t3j4n"d,| |!f}|2|t3j=tA|dS)-NzIncompatible url %s)ZhttpZhttpszunsupported schema Zgpgz --detach-signz-az --local-user)dry_runrbZ file_upload1z1.0)z:actionZprotocol_versionnameversioncontentZfiletyper Z md5_digestZmetadata_versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformZ classifiersZ download_urlZprovidesZrequiresZ obsoletesrZ bdist_rpmzbuilt for %s %sZ bdist_dumbz built for %s)Ztersecommentz.ascZ gpg_signature:asciizBasic z3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254s --s-- z+ Content-Disposition: form-data; name="%s"z; filename="%s"rzutf-8s zSubmitting %s to %sz multipart/form-data; boundary=%s)z Content-typezContent-lengthZ Authorization)dataheaderszServer response (%s): %s zK---------------------------------------------------------------------------zUpload failed (%s): %s)BrrAssertionErrorr rr r$openreadcloserZmetadataZget_nameZ get_versionospathbasenamehashlibZmd5Z hexdigestZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletesr-distrrencoderdecodeioBytesIOitems isinstancelisttypetuplestrwritegetvalueZannouncer INFOlenrrZgetcoderrcodeOSErrorZERRORrZ_read_pypi_responsejoinr)$rrr r!ZschemaZnetlocZurlparamsZqueryZ fragmentsZgpg_argsfr)metar2r/r>r(idZ user_passZauthboundaryZ sep_boundaryZ end_boundaryZbodykeyvaluetitlerr3ZrequestresultstatusreasonetextrrrrBs                      zupload.upload_fileN) __name__ __module__ __qualname__r+r Z user_optionsZboolean_optionsrrr"rrrrrr s r )r:rAr-r=base64rZurllib.requestrrrZ urllib.parserZdistutils.errorsrrZdistutils.corer Zdistutils.spawnr Z distutilsr r rrrrs     PKr ]h6command/__pycache__/build_scripts.cpython-37.opt-1.pycnu[B  fX@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZed ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=dzdirectory to "build" (copy) to)forcefz1forcibly build everything (ignore file timestamps)z executable=ez*specify final destination interpreter pathr cCs"d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfrD/opt/alt/python37/lib64/python3.7/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|dddd|jj|_dS)NZbuild)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|dS)N)r copy_scripts)rrrrrun/szbuild_scripts.runc Cs||jg}g}x(|jD]}d}t|}tj|jtj|}|||j spt ||spt d|qyt |d}Wn tk r|jsd}YnXXt|j\}}|d|} | s|d|qt| } | rd}| dpd } |rt d ||j|||jstjs.|j} n(tjtd d td tdf} t| } d| | d} y| dWn$tk rt d!| YnXy| |Wn&tk rt d!| |YnXt |d}|"| |#|$WdQRX|r<|%q|r&|%|||&||qWtj'dkrxh|D]`}|jrlt d|nDt(|t)d@}|dBd@}||krRt d|||t*||qRW||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrZget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfiler encodinglinesZ first_liner/Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                  zbuild_scripts.copy_scriptsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&t|\}}|js||||fS)N)r rr(Zrun_2to3)rrr>rrrrs zbuild_scripts_2to3.copy_scriptsN)rBrCrDrrrrrrEsrE)__doc__r rer<rZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr)compiler.r rErrrrs       PKr ]==2command/__pycache__/build_ext.cpython-37.opt-1.pycnu[B  fv@sdZddlZddlZddlZddlZddlmZddlTddlm Z m Z ddlm Z ddl m Z ddlmZdd lmZdd lmZdd lmZed Zd dZGdddeZdS)zdistutils.command.build_ext Implements the Distutils 'build_ext' command, for building extension modules (currently limited to C extensions, should accommodate C++ extensions ASAP).N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r@/opt/alt/python37/lib64/python3.7/distutils/command/build_ext.pyr s r c@seZdZdZdejZdddddefdd d d efd d ddddefddddddddddgZddddd gZ d!d"d#e fgZ d$d%Z d&d'Z d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zejd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZd"S)H build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z build-lib=bz(directory for compiled extension modules)z build-temp=tz1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s))inplaceiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link withz library-dirs=Lz.directories to search for external C libraries)zrpath=Rz7directories to search for shared C libraries at runtime)z link-objects=Oz2extra explicit link objects to include in the link)debuggz'compile/link with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)zswig-cppNz)make SWIG create C++ files (default is C))z swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)userNz#add user include, library and rpathrrrzswig-cppr#z help-compilerNzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsrrcompilerswigswig_cpp swig_optsr#parallel)selfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|ddddddd d |jdkr8|jj|_|jj|_|}|jd d }|j dkrn|jj pjg|_ t |j t r|j t j|_ tjtjkr|j t jtjd |j | t jj||kr|j | t jj|d|d|jdkrg|_|jdkrg|_nt |jt r:|j t j|_|jdkrNg|_nt |jt rl|j t j|_t jdkrh|jt jtjdtjtjkr|jt jtjd|jrt j|jd|_nt j|jd|_|j t jtt tdd}|r|j||j!dkr*d}n|j!dd}t jtjd}|r\t j||}|j|tj"dddkrtj#$t jtjdr|jt jtjddt%dn |jd|&dr|j's|j|&d n |jd|j(r|j( d!}d"d#|D|_(|j)r4|j) d!|_)|j*dkrHg|_*n|j* d$|_*|j+rt jt,d }t jt,d} t j-|r|j |t j-| r|j| |j| t |j.t ryt/|j.|_.Wnt0k rt1d%YnXdS)&Nr) sysconfigZbuild)r%r%)r'r')r0r0)rr)rr)r4r4)r&r&)Z plat_specificZincluder,r/ntZlibsZDebugZRelease_homewin32ZPCbuildcygwinbinlibpythonZconfig.Py_ENABLE_SHAREDZLIBDIR,cSsg|] }|dfqS)1r).0Zsymbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)2 distutilsr7Zset_undefined_optionsr( distributionZ ext_packageZ ext_modulesr$Zget_python_incr) isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinextendZensure_string_listr,r-r.nameprefixrr'dirnamergetattrr&platform executable startswithrget_config_varZ python_buildr*r+r3r#r isdirr4int ValueErrorZDistutilsOptionError) r5r7Z py_includeZplat_py_includeZ _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                           zbuild_ext.finalize_optionscCsrddlm}|jsdS|jrL|d}|j|p:g|j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j |j|jdk r|j |j|jdk rx |jD]\}}|j ||qW|jdk rx|jD]}|j |qW|jdk r|j |j|j dk r2|j |j |jdk rL|j |j|j dk rf|j !|j |"dS)Nr) new_compiler build_clib)r0verbosedry_runrr9)#r rdr$rJZhas_c_librariesget_finalized_commandr,rVZget_library_namesr-rSrer0rfrgrrrNrWr&r Z initializer)Zset_include_dirsr*Z define_macror+Zundefine_macroZ set_librariesZset_library_dirsr.Zset_runtime_library_dirsr/Zset_link_objectsbuild_extensions)r5rdrerWvaluemacrorrrruns>             z build_ext.runc Cst|tstdxjt|D]\\}}t|tr4qt|trJt|dkrRtd|\}}td|t|t rzt |stdt|t stdt||d}x*dD]"}| |}|d k rt|||qW| d |_d |krtd | d }|rtg|_g|_xj|D]b} t| tr,t| dks4tdt| dkrT|j| dnt| dkr|j| qW|||<qWd S)aEnsure that the list of extensions (presumably provided as a command option 'extensions') is valid, i.e. it is a list of Extension objects. We also support the old-style list of 2-tuples, where the tuples are (ext_name, build_info), which are converted to Extension instances here. Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sources)r)r-r, extra_objectsextra_compile_argsextra_link_argsNr.Zdef_filez9'def_file' element of build info dict no longer supportedmacros)r8rmz9'macros' element of build info dict must be 1- or 2-tupler8r)rKlistDistutilsSetupError enumeratertuplelenr warnrLextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrS) r5r$rextext_nameZ build_infokeyvalrrrkrrrcheck_extensions_listVsP           zbuild_ext.check_extensions_listcCs0||jg}x|jD]}||jqW|S)N)rr$rVrn)r5 filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs6||jg}x |jD]}|||jqW|S)N)rr$rSget_ext_fullpathrW)r5Zoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(||j|jr|n|dS)N)rr$r4_build_extensions_parallel_build_extensions_serial)r5rrrris  zbuild_ext.build_extensionsc sj}jdkrt}yddlm}Wntk r@d}YnX|dkrVdS||dTfddjD}x6tj|D]&\}} || WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor)Z max_workerscsg|]}j|qSr)Zsubmitbuild_extension)rFr)executorr5rrrGsz8build_ext._build_extensions_parallel..) r4rN cpu_countZconcurrent.futuresr ImportErrorrr$zip_filter_build_errorsresult)r5ZworkersrZfuturesrZfutr)rr5rrs       z$build_ext._build_extensions_parallelc Cs4x.|jD]$}||||WdQRXqWdS)N)r$rr)r5rrrrrs  z"build_ext._build_extensions_serialc csTy dVWnDtttfk rN}z |js*|d|j|fWdd}~XYnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalrxrW)r5rerrrrs zbuild_ext._filter_build_errorsc CsT|j}|dkst|ttfs*td|jt|}||j}||j}|jslt ||dslt d|jdSt d|j| ||}|jpg}|jdd}x|jD]}||fqW|jj||j||j|j ||jd}|dd|_|jr||j|jpg}|jp|j|} |jj|||||j|j|| ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrrr)rextra_postargsdepends)r,r-r~rexport_symbolsrr'Z target_lang)!rnrKrsrvrtrWrrrrr rinfo swig_sourcesrprrrSr0compiler'r)Z_built_objectsrorVrqlanguageZdetect_languageZlink_shared_object get_librariesr-r~get_export_symbols) r5rrnext_pathrZ extra_argsrrr+ZobjectsrrrrrsN         zbuild_ext.build_extensioncCs0g}g}i}|jrtd|js6d|jks6d|jkr        zbuild_ext.swig_sourcescCs`tjdkrdStjdkrNxBdD]&}tjd|d}tj|r|SqWdSntdtjdS) zReturn the name of the SWIG executable. On Unix, this is just "swig" -- it should be in the PATH. Tries a bit harder on Windows. posixr1r9)z1.3z1.2z1.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s'N)rNrWrTrUisfileZDistutilsPlatformError)r5Zversfnrrrrgs    zbuild_ext.find_swigcCs||}|d}||d}|jsRtjj|dd|g}tj|j|Sd|dd}|d}tj | |}tj||S)zReturns the path of the filename for a given extension. The file is located in `build_lib` or directly in the package (inplace option). rBrNrbuild_py) get_ext_fullnamerMget_ext_filenamerrNrTrUr%rhabspathZget_package_dir)r5rfullnameZmodpathfilenamer(rZ package_dirrrrrs   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)zSReturns the fullname of a given extension name. Adds the `package.` prefixNrB)r()r5rrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|d}|d}tjj||S)zConvert the name of an extension (eg. "foo.bar") into the name of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). r)r^rBZ EXT_SUFFIX)distutils.sysconfigr^rMrNrTrU)r5rr^rZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCs0d|jdd}||jkr*|j||jS)aReturn the list of symbols that a shared extension has to export. This either uses 'ext.export_symbols' or, if it's not provided, "PyInit_" + module_name. Only relevant on Windows, where the .pyd file (DLL) must export the module "PyInit_" function. ZPyInit_rBr)rWrMrrS)r5rZ initfunc_namerrrrs  zbuild_ext.get_export_symbolscCstjdkrdddlm}t|j|s\d}|jr4|d}|tjd?tjd?d@f}|j|gS|jSnttjd krt|jStjd d d kr|jSdd l m }| drd tjd?tjd?d@| d}|j|gS|jSd S)zReturn the list of libraries to link against when building a shared extension. On most platforms, this is just 'ext.libraries'; on Windows, we add the Python library (eg. python20.dll). r;r) MSVCCompilerz python%d%dZ_ddarwinNZaix)r7rCz python{}.{}{}ZABIFLAGS) rPr[Zdistutils._msvccompilerrrKr0r hexversionr,rIr7r^format)r5rrtemplateZ pythonlibr7rrrrs*         zbuild_ext.get_libraries) __name__ __module__ __qualname__Z descriptionrNrOZsep_byr Z user_optionsZboolean_optionsr Z help_optionsr6rcrlrrrrirr contextlibcontextmanagerrrrrrrrrrrrrrr!s^  @N  K6   r)__doc__rrNrerPZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rIr Zsiter rryr rrrrrs"       PKr ]bO4command/__pycache__/install_lib.cpython-37.opt-1.pycnu[B  f @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default])z no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])z skip-buildNzskip the build stepsrr z skip-buildz no-compilecCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_build)selfrB/opt/alt/python37/lib64/python3.7/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtsyt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr )rr )rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorr)rrrrfinalize_options<s$     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dS)N)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddS)Nbuild_py build_ext)rrrZ run_commandhas_ext_modules)rrrrrfs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirr Z copy_treer warn)rr!rrrrms  zinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r r)rrprefixdry_run)rrr*verboser+) sysdont_write_bytecoder)Zdistutils.utilr get_finalized_commandrootr rr+rr,)rfilesr Z install_rootrrrr vs     zinstall_lib.byte_compilec Csh|sgS||}|}t||}t|ttj}g}x(|D] } |tj|| |dq@W|S)N) r/ get_outputsgetattrlenr&sepappendr'join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss    zinstall_lib._mutate_outputscCsvg}xl|D]d}tjtj|d}|tkr0q |jrL|tjj |dd|j dkr |tjj ||j dq W|S)Nr) optimizationr) r&r'splitextnormcasePYTHON_SOURCE_EXTENSIONr r6 importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r#rr$)r:rrr r rCr%)rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr2s   zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r#r$)rrr/extendr2r%)rZinputsr#r$rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrr"rrr r:rCr2rErrrrrs(   r) __doc__r&importlib.utilr@r-Zdistutils.corerZdistutils.errorsrr?rrrrrs  PKr ]J8f44*command/__pycache__/install.cpython-37.pycnu[B  fuh@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZmZmZdd lmZdd l mZdd lmZdd lmZdZddddddZddddddddddddedZerdddddded <ddd!d"dded#<dZGd$d%d%eZdS)&zFdistutils.command.install Implements the Distutils 'install' command.N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@s:eZdZdZdddddddd d d d d ddddddgZdddgZer`edddefedddiZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEefdFefdGefdHefdIdJdKfgZdS)Linstallz'install everything from build directory)zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nz/opt/alt/python37/lib64/python3.7/distutils/command/install.pyinitialize_optionss2 zinstall.initialize_optionsc Csx|js|js|jr&|js|jr&td|jr@|js8|jr@td|jrl|jsd|jsd|jsd|jsd|jrltdtjdkr|jr| dd|_| dtjdkr| n| | dt jd }td d \}}y t j}Wntk rd }YnX|j|j|j|d t jdddt jdd|||||d |_trf|j|jd<|j|jd<|| d|j|jd<|j|jd<trd dlm}td||j| | d|jr|!|j"dkr|jj#r|j$|_"n|j%|_"|&dddddddd|'|j"|_(tj)*|j"|j+|_"|j,dk r\|-ddddddd| d |.d!d"d#dS)$zFinalizes options.zWmust supply either prefix/exec-prefix/home or install-base/install-platbase -- not bothz9must supply either home or prefix/exec-prefix -- not bothzGcan't combine user with prefix, exec_prefix/home, or install_(plat)baseposixz+exec-prefix option ignored on this platformNzpre-finalize_{unix,other}zpost-finalize_{unix,other}()rr r!z%d.%dz%d%d) Z dist_nameZ dist_versionZ dist_fullname py_versionZpy_version_shortZpy_version_nodotZ sys_prefixr Zsys_exec_prefixr!abiflagsuserbaseZusersitezpost-expand_basedirs()baseZplatbase)pprintz config vars:zpost-expand_dirs()librrrrrZlibbasezafter prepending rootbuild)r3r3)r4r4)/r r!r"r#r$r rosnamewarn dump_dirs finalize_unixfinalize_othersysversionsplitrr>AttributeError distributionZget_nameZ get_versionZ get_fullname version_info config_vars HAS_USER_SITEr,r-expand_basedirsrrAprint expand_dirscreate_home_pathr)Z ext_modulesr'r& convert_pathshandle_extra_pathinstall_libbasepathjoin extra_dirsr% change_rootsZset_undefined_options)r6r=r r!r>rAr7r7r8finalize_optionss                           zinstall.finalize_optionscCstsdSddlm}t|dx||jD]r}|d}|ddkrN|dd}||jkrz|j|}||}t|| }n||}t||}td||q*WdS)zDumps the list of user options.Nr) longopt_xlate:=z %s: %s) rZdistutils.fancy_getoptr^rdebug user_options negative_opt translategetattr)r6msgr^ZoptZopt_namevalr7r7r8rGus         zinstall.dump_dirscCs"|jdk s|jdk r\|jdkr2|jdkr2|jdksP|jdksP|jdksP|jdkrXtddS|j r|j dkrtt d|j |_|_| dn|j dk r|j |_|_| dnl|jdkr|jdk rtdtjtj|_tjtj|_n|jdkr|j|_|j|_|j|_| ddS)z&Finalizes options for posix platforms.NzPinstall-base or install-platbase supplied, but installation scheme is incompletez$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)r#r$r)r&r'r(r*r+r rr,r select_schemer"r r!rDrYnormpathrJ)r6r7r7r8rHs<             zinstall.finalize_unixcCs|jr8|jdkrtd|j|_|_|tjdn|jdk r\|j|_|_|dn\|j dkrvtj t j |_ |j |_|_y|tjWn"t k rtdtjYnXdS)z)Finalizes options for non-posix platformsNz$User base directory is not specifiedZ_userrz)I don't know how to install stuff on '%s')rr,rr#r$rirDrEr"r rYrjrJKeyError)r6r7r7r8rIs"    zinstall.finalize_othercCs@t|}x2tD]*}d|}t||dkrt||||qWdS)z=Sets the install directories by applying the install schemes.install_N)INSTALL_SCHEMES SCHEME_KEYSrfsetattr)r6rEZschemekeyZattrnamer7r7r8ris  zinstall.select_schemecCs\xV|D]N}t||}|dk rtjdks0tjdkr|D]2}||}x"|D]}||kr&||q&WqW|jrl|jrl|tj|j |jd|S)z.Assembles the outputs of all the sub-commands.z.pth) rget_finalized_commandrappendryr0rDrYrZrX)r6rrcmdrr7r7r8rWs  zinstall.get_outputscCs2g}x(|D]}||}||qW|S)z*Returns the inputs of all the sub-commands)rrextend get_inputs)r6Zinputsrrr7r7r8rhs  zinstall.get_inputscCs|jp|jS)zSReturns true if the current distribution has any Python modules to install.)rNZhas_pure_modulesZhas_ext_modules)r6r7r7r8has_libts zinstall.has_libcCs |jS)zLReturns true if the current distribution has any headers to install.)rN has_headers)r6r7r7r8rzszinstall.has_headerscCs |jS)zMReturns true if the current distribution has any scripts to. install.)rN has_scripts)r6r7r7r8rszinstall.has_scriptscCs |jS)zJReturns true if the current distribution has any data to. install.)rNZhas_data_files)r6r7r7r8has_dataszinstall.has_datar)r(r*r+Zinstall_egg_infocCsdS)NTr7)r6r7r7r8zinstall.) __name__ __module__ __qualname__Z descriptionrcZboolean_optionsrQrrrdr9r]rGrHrIrirsrRrTrVrWr\rUrrrrrrrrZ sub_commandsr7r7r7r8rIsh    N(  " , r)__doc__rJrDZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrQZWINDOWS_SCHEMErmrnrr7r7r7r8sV            PKr ] .command/__pycache__/bdist.cpython-37.opt-2.pycnu[B YI~d@sDddlZddlmZddlTddlmZddZGdddeZdS) N)Command)*) get_platformcCsTddlm}g}x,tjD]"}|d|dtj|dfqW||}|ddS)Nr) FancyGetoptzformats=z'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_command print_help)rformatsformatZpretty_printerr}y||j|dWq tk rHtd|Yq Xq Wxztt|jD]h}||}||}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ | |q^WdS)Nrzinvalid format '%s'r"r)r r r r1ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r(r'Z keep_tempZ run_command)r)Zcommandsr iZcmd_nameZsub_cmdrrrrunvs"    z bdist.run)__name__ __module__ __qualname__ descriptionrZ user_optionsZboolean_optionsrZ help_optionsr5r/rr r*r2r7rrrrrs<    r)r,Zdistutils.corerZdistutils.errorsZdistutils.utilrrrrrrrs    PKr ]Q.command/__pycache__/check.cpython-37.opt-2.pycnu[B YI~d@sddlmZddlmZyTddlmZddlmZddlm Z ddlm Z ddl m Z Gdd d eZ d ZWnek rd ZYnXGd d d eZdS))Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_t||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr}|dd}|dkr:|d}nd|d|f}||qWdS)Nliner(z %s (line %s))r4Zget_long_description_check_rst_datagetr,)rdataZwarningr;rrrr0ns  zcheck.check_restructuredtextc Cs|jjp d}t}tjtfd}d|_d|_d|_t ||j |j |j |j |j|jd}tj|||d}||dy|||Wn:tk r}z|jdd|difWdd}~XYnX|jS) Nzsetup.py)Z components)rrrr)rr:z!Could not finish the parsing: %s.)r4Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rr> source_pathparserZsettingsZreporterrAerrrr<ys*   $zcheck._check_rst_dataN) rrr descriptionZ user_optionsZboolean_optionsr*r+r,r1r.r0r<rrrrr!$s  r!N)Zdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r/ Exceptionr!rrrrs        PKr ]?CC(command/__pycache__/bdist.cpython-37.pycnu[B  f@sHdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCsTddlm}g}x,tjD]"}|d|dtj|dfqW||}|ddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptzformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr }y||j|dWq tk rHtd|Yq Xq Wxztt|jD]h}||}||}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ | |q^WdS)Nrzinvalid format '%s'r!r)r r r r0ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r'r&Z keep_tempZ run_command)r(Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"    z bdist.run)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr4r.rr r)r1r6r r r rrs<    r) __doc__r+Zdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKr ]Bx 3command/__pycache__/install_egg_info.cpython-37.pycnu[B  f+ @sddZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@s:eZdZdZdZdgZddZddZdd Zd d Z d S) install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file)z install-dir=dzdirectory to install tocCs d|_dS)N) install_dir)selfr G/opt/alt/python37/lib64/python3.7/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|dddtt|jtt|jftjdd}t j |j ||_ |j g|_dS)NZ install_lib)rrz%s-%s-py%d.%d.egg-info)Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinrtargetoutputs)rbasenamer r r finalize_optionss z!install_egg_info.finalize_optionsc Cs|j}tj|r0tj|s0tj||jdnNtj|rV| tj |jfd|n(tj|j s~| tj |j fd|j t d||jst|ddd}|jj|WdQRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkrmakedirsrinfoopenrZmetadataZwrite_pkg_file)rrfr r r run s   zinstall_egg_info.runcCs|jS)N)r)rr r r get_outputs.szinstall_egg_info.get_outputsN) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr%r&r r r r r s rcCstdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. z[^A-Za-z0-9.]+-)resub)namer r r r6srcCs|dd}tdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .z[^A-Za-z0-9.]+r+)replacer,r-)versionr r r r>s rcCs |ddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r+_)r1)r.r r r r Hsr ) r*Z distutils.cmdrZ distutilsrrrrr,rrrr r r r r s + PKr ]h0command/__pycache__/build_scripts.cpython-37.pycnu[B  fX@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z ddlmZddlZed ZGd d d eZGd d d ee ZdS)zRdistutils.command.build_scripts Implements the Distutils 'build_scripts' command.N)ST_MODE) sysconfig)Command)newer) convert_path Mixin2to3)logs^#!.*python[0-9.]*([ ].*)?$c@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=dzdirectory to "build" (copy) to)forcefz1forcibly build everything (ignore file timestamps)z executable=ez*specify final destination interpreter pathr cCs"d|_d|_d|_d|_d|_dS)N) build_dirscriptsr executableoutfiles)selfrD/opt/alt/python37/lib64/python3.7/distutils/command/build_scripts.pyinitialize_optionss z build_scripts.initialize_optionscCs|dddd|jj|_dS)NZbuild)r r)r r )rr)Zset_undefined_optionsZ distributionr)rrrrfinalize_options%s zbuild_scripts.finalize_optionscCs|jS)N)r)rrrrget_source_files,szbuild_scripts.get_source_filescCs|js dS|dS)N)r copy_scripts)rrrrrun/szbuild_scripts.runc Cs||jg}g}x(|jD]}d}t|}tj|jtj|}|||j spt ||spt d|qyt |d}Wn tk r|jsd}YnXXt|j\}}|d|} | s|d|qt| } | rd}| dpd } |rt d ||j|||jstjs.|j} n(tjtd d td tdf} t| } d| | d} y| dWn$tk rt d!| YnXy| |Wn&tk rt d!| |YnXt |d}|"| |#|$WdQRX|r<|%q|r&|%|||&||qWtj'dkrxh|D]`}|jrlt d|nDt(|t)d@}|dBd@}||krRt d|||t*||qRW||fS)a"Copy each script listed in 'self.scripts'; if it's marked as a Python script in the Unix way (first line matches 'first_line_re', ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. Fznot copying %s (up-to-date)rbNrz%s is an empty file (skipping)Tzcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs#! zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})wbposixzchanging mode of %siimz!changing mode of %s from %o to %o)+Zmkpathrrrospathjoinbasenameappendr rrdebugopenOSErrordry_runtokenizedetect_encodingreadlineseekwarn first_line_rematchgroupinforZ python_buildrZget_config_varfsencodedecodeUnicodeDecodeError ValueErrorformatwrite writelines readlinescloseZ copy_filenamestatrchmod)rr updated_filesZscriptZadjustZoutfiler encodinglinesZ first_liner/Z post_interprZshebangZoutffileZoldmodeZnewmoderrrr5s                  zbuild_scripts.copy_scriptsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrr sr c@seZdZddZdS)build_scripts_2to3cCs&t|\}}|js||||fS)N)r rr(Zrun_2to3)rrr>rrrrs zbuild_scripts_2to3.copy_scriptsN)rBrCrDrrrrrrEsrE)__doc__r rer<rZ distutilsrZdistutils.corerZdistutils.dep_utilrZdistutils.utilrrrr)compiler.r rErrrrs       PKr ]!nKnK2command/__pycache__/bdist_msi.cpython-37.opt-1.pycnu[B  f@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sFeZdZdZddZddZddd Zdd d ZdddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs>tj|f||jd}d|d}|dd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr@/opt/alt/python37/lib64/python3.7/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|ddddddd|dS) z,Set the title text of the dialog at the top.Title i@<iz{\VerdanaBold10}%sN)r )rtitlerrrr #szPyDialog.titleBackc Cs,|r d}nd}||d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr"8) pushbuttonr)rr nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}||d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}||d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@sz PyDialog.nextc Cs,||t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN)r!r")r.r")r0r") __name__ __module__ __qualname____doc__rr r-r/r)r4rrrrrs  rc@seZdZdZddddefdddd d d d d g ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(Z d)d*Z d+d,Z d-d.Z d/d0Z d1d2Zd3d4Zd5d6Zd7S)8 bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz keep-tempzno-target-compilezno-target-optimizez skip-buildz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|dd|jdkr2|dj}tj|d|_t}|jsN|j rN||_|jr|jg|_ |j s|j r|j|krt d|fn t|j|_ |ddd|jrt d|jrx2|j jD]}|jtj|krPqWt d|jd|_dS) NZbdist)rErEZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rDrD)rArAz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsr@get_finalized_command bdist_baseospathjoinrrC distributionhas_ext_modulesrHrErlist all_versionsrGrFZscriptsbasenameinstall_script_key)rrKZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCsz|js|d|jddd}|j|_|j|_d|_|d}d|_d|_|j r|j }|spdt j dd}d |j |f}|d}tj|jd ||_td |j|t jdtj|jd |t jd=||j|j}||}tj|}tj|r"t||jj }|j!} | s<|j"} | sFd } |#} dt$| j%} |j}|j r~d|j |f} nd|} t&'|t(| t&)| | |_*t&+|j*t,d| fg} |j-p|j.}|r| /d|f|j0r| /d|j0f| rt1|j*d| |2|3|4|5|j*6t7|jdr^d|j pJd|f}|jj8/||j9svt:|j|j;ddS)Nbuildinstallr")Zreinit_subcommandsr install_libz%d.%dz.%s-%slibzinstalling to %sZPURELIBZUNKNOWNz%d.%d.%dz Python %s %sz Python %sZ DistVersionZ ARPCONTACTZARPURLINFOABOUTProperty dist_filesr9any)dry_run) }|d?d%d@dAd%d)dB|d7d-dCdDd-d)dE|dFd-dGdHdddI| dJdKd-dLdHdMdNdOddd |jd1dPd1d/} | d0d1|j dPd }|d?d%d@dAd%d)d|d7d-d-dDd-d)d|dFd-ddHddd| ddd-ddHdddddd |ddndd d0d9t|d||||||ddd" }|d|dd%ddtddddXd }|dd ddd-d|dd ddd-d|jd#dd d!| dd"} | dddd| j d0d9dd|d"d} | ddst|d||||||d"d"d"d=d> }|d?d-d%dAd%d)d|dFddddwddġ|ddddd-ddơ|dd&d|d&d-dd} | ddF| ddddZddRddddd } | ddˡ|jddd=d!|j dd"d=d!|d"d# ddst|d||||||ddd" }|d͡|dd%ddHdhddС|dd%ddHddddXd }|dd ddAd{d֡|dd ddAd{d١|jddd=d!| dd"} | dddd| dddd@| ddddN| dddd| dddd| dddd| dddd| dddd| d0d9dd-|d"dѡ ddsdS)Nriri,z[ProductName] Setupr#r" r[)Z DefaultUIFontDlgFont8)Z ErrorDialogErrorDlg)Z Progress1ZInstall)Z Progress2Zinstalls)MaintenanceForm_ActionRepair) WhichUsersALLZ TextStyle)rTahoma Nr)Z DlgFontBold8rNr")Z VerdanaBold10VerdanarNr")Z VerdanaRed9rrrr) PrepareDlgz(Not Privileged or Windows9x or Installed) WhichUsersDlgz.Privileged and not Windows9x and not Installed)SelectFeaturesDlgz Not Installedi)MaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectedi) ProgressDlgNi ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r+r.r!Z Description1rFi@Piz[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.)r*Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryF)Zbitmaprz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnorerreiZ ErrorTextr0r}NxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r&r'ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.fr(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar0Z SpawnDialogrzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogrYZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHider{Z DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?rZ AdminInstallzGSelect whether to install [ProductName] for all users of this computer.rrzInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"rz({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressrz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrrrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallrz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rprr rrrr r-r/r)ZeventZcontrolrr(mappingrOrgrHr~Z conditionr4Z radiogroupadd)rrpxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalr<Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrnrZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrus                                                               zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rCrArLrMrNrD)rrxZ base_nameryrrrrhs  z bdist_msi.get_installer_filenameN)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrRr~rIrUrfrsrrrtrurhrrrrr9Ss<    ([66&@r9)r8rbrLZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrror r r r r rrrr9rrrrs       >PKr ]Mc=YY5command/__pycache__/install_data.cpython-37.opt-2.pycnu[B YI~d @s8ddlZddlmZddlmZmZGdddeZdS)N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) install_datazinstall data files)z install-dir=dzIbase directory for installing data files (default: installation base dir))zroot=Nzs PKr ]ٝ'')command/__pycache__/config.cpython-37.pycnu[B  f3@sldZddlZddlZddlmZddlmZddlmZddl m Z ddd Z Gd d d eZ dd d Z dS)adistutils.command.config Implements the Distutils 'config' command, a (mostly) empty command class that exists mainly to be sub-classed by specific module distributions and applications. The idea is that while every "config" command is different, at least they're all named the same, and users always see "config" in the list of standard commands. Also, this is a good place to put common configure-like tasks: "try to compile this C code", or "figure out where this header file lives". N)Command)DistutilsExecError)customize_compiler)logz.cz.cxx)czc++c @seZdZdZdddddddd d g Zd d Zd dZddZddZddZ ddZ ddZ ddZ ddZ d0dd Zd1d!d"Zd2d#d$Zd3d%d&Zd4d'd(Zd5d*d+Zdddgfd,d-Zd6d.d/ZdS)7configzprepare to build)z compiler=Nzspecify the compiler type)zcc=Nzspecify the compiler executable)z include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link with)z library-dirs=Lz.directories to search for external C libraries)noisyNz1show every action (compile, link, run, ...) taken)z dump-sourceNz=dump generated source files before attempting to compile themcCs4d|_d|_d|_d|_d|_d|_d|_g|_dS)N)compilerZcc include_dirs libraries library_dirsr dump_source temp_files)selfr=/opt/alt/python37/lib64/python3.7/distutils/command/config.pyinitialize_options3szconfig.initialize_optionscCs|jdkr|jjpg|_nt|jtr6|jtj|_|jdkrHg|_nt|jtr^|jg|_|jdkrpg|_nt|jtr|jtj|_dS)N) rZ distribution isinstancestrsplitospathseprr)rrrrfinalize_optionsBs       zconfig.finalize_optionscCsdS)Nr)rrrrrunRsz config.runcCszddlm}m}t|j|sv||j|jdd|_t|j|jrN|j|j|j rb|j |j |j rv|j |j dS)z^Check that 'self.compiler' really is a CCompiler object; if not, make it one. r) CCompiler new_compilerr)rdry_runZforceN) distutils.ccompilerr r!rrr"rrZset_include_dirsrZ set_librariesrZset_library_dirs)rr r!rrr_check_compilerYs  zconfig._check_compilercCsldt|}t|d}|r@x|D]}|d|q W|d|||ddkr`|d||S)NZ _configtestwz#include <%s>  )LANG_EXTopenwriteclose)rbodyheaderslangfilenamefileheaderrrr_gen_temp_sourcefileks       zconfig._gen_temp_sourcefilecCs<||||}d}|j||g|jj|||d||fS)Nz _configtest.i)r)r2rextendrZ preprocess)rr,r-rr.srcoutrrr _preprocessxs zconfig._preprocesscCs\||||}|jr"t|d||j|g\}|j||g|jj|g|d||fS)Nzcompiling '%s':)r)r2r dump_filerZobject_filenamesrr3compile)rr,r-rr.r4objrrr_compileszconfig._compilec Csr|||||\}}tjtj|d} |jj|g| |||d|jjdk r\| |jj} |j | ||| fS)Nr)rrZ target_lang) r:rpathsplitextbasenamerZlink_executableZ exe_extensionrappend) rr,r-rrrr.r4r9progrrr_links    z config._linkc GsX|s|j}g|_tdd|x0|D](}yt|Wq(tk rNYq(Xq(WdS)Nz removing: %s )rrinfojoinrremoveOSError)r filenamesr/rrr_cleans z config._cleanNrcCsRddlm}|d}y|||||Wn|k rDd}YnX||S)aQConstruct a source file from 'body' (a string containing lines of C/C++ code) and 'headers' (a list of header files to include) and run it through the preprocessor. Return true if the preprocessor succeeded, false if there were any errors. ('body' probably isn't of much use, but what the heck.) r) CompileErrorTF)r#rHr$r6rG)rr,r-rr.rHokrrrtry_cpps  zconfig.try_cppc Csx||||||\}}t|tr0t|}t|}d} x&|} | dkrPP|| r>d} Pq>W| | | S)aConstruct a source file (just like 'try_cpp()'), run it through the preprocessor, and return true if any line of the output matches 'pattern'. 'pattern' should either be a compiled regex object or a string containing a regex. If both 'body' and 'headers' are None, preprocesses an empty file -- which can be useful to determine the symbols the preprocessor and compiler set by default. FT) r$r6rrrer8r)readlinesearchr+rG) rpatternr,r-rr.r4r5r0matchlinerrr search_cpps    zconfig.search_cppcCsdddlm}|y|||||d}Wn|k rDd}YnXt|rRdpTd||S)zwTry to compile a source file built from 'body' and 'headers'. Return true on success, false otherwise. r)rHTFzsuccess!zfailure.)r#rHr$r:rrBrG)rr,r-rr.rHrIrrr try_compiles  zconfig.try_compilec Cspddlm}m}|y|||||||d} Wn||fk rPd} YnXt| r^dp`d|| S)zTry to compile and link a source file, built from 'body' and 'headers', to executable form. Return true on success, false otherwise. r)rH LinkErrorTFzsuccess!zfailure.)r#rHrTr$r@rrBrG) rr,r-rrrr.rHrTrIrrrtry_links   zconfig.try_linkc Csddlm}m}|y.|||||||\} } } || gd} Wn||tfk rdd} YnXt| rrdptd| | S)zTry to compile, link to an executable, and run a program built from 'body' and 'headers'. Return true on success, false otherwise. r)rHrTTFzsuccess!zfailure.) r#rHrTr$r@ZspawnrrrBrG) rr,r-rrrr.rHrTr4r9ZexerIrrrtry_runs   zconfig.try_runrc Cst|g}|r|d||d|r<|d|n|d||dd|d}||||||S)aDetermine if function 'func' is available by constructing a source file that refers to 'func', and compiles and links it. If everything succeeds, returns true; otherwise returns false. The constructed source file starts out by including the header files listed in 'headers'. If 'decl' is true, it then declares 'func' (as "int func()"); you probably shouldn't supply 'headers' and set 'decl' true in the same call, or you might get errors about a conflicting declarations for 'func'. Finally, the constructed 'main()' function either references 'func' or (if 'call' is true) calls it. 'libraries' and 'library_dirs' are used when linking. z int %s ();z int main () {z %s();z %s;}r&)r$r>rCrU) rfuncr-rrrZdeclZcallr,rrr check_funcs   zconfig.check_funccCs ||d|||g||S)aDetermine if 'library' is available to be linked against, without actually checking that any particular symbols are provided by it. 'headers' will be used in constructing the source file to be compiled, but the only effect of this is to check if all the header files listed are available. Any libraries listed in 'other_libraries' will be included in the link, in case 'library' has symbols that depend on other libraries. zint main (void) { })r$rU)rZlibraryrr-rZother_librariesrrr check_lib6s  zconfig.check_libcCs|jd|g|dS)zDetermine if the system header file named by 'header_file' exists and can be found by the preprocessor; return true if so, false otherwise. z /* No body */)r,r-r)rJ)rr1rrr.rrr check_headerDs zconfig.check_header)NNNr)NNNr)NNr)NNNNr)NNNNr)NNNNrr)NNr)__name__ __module__ __qualname__Z descriptionZ user_optionsrrrr$r2r6r:r@rGrJrRrSrUrVrYrZr[rrrrrsB         rcCsJ|dkrtd|n t|t|}zt|Wd|XdS)zjDumps a file content into log.info. If head is not None, will be dumped before the file content. Nz%s)rrBr)readr+)r/headr0rrrr7Ns r7)N)__doc__rrLZdistutils.corerZdistutils.errorsrZdistutils.sysconfigrZ distutilsrr(rr7rrrr s     ;PKr ]E*!!+command/__pycache__/register.cpython-37.pycnu[B  f-@sddZddlZddlZddlZddlZddlmZddlm Z ddl Tddl m Z Gddde Z dS) zhdistutils.command.register Implements the Distutils 'register' command (register with the repository). N)warn) PyPIRCCommand)*)logc@seZdZdZejddgZejdddgZddd fgZd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdddZdS) registerz7register the distribution with the Python package index)zlist-classifiersNz list the valid Trove classifiers)strictNzBWill stop the registering if the meta-data are not fully compliantverifyzlist-classifiersrcheckcCsdS)NT)selfr r ?/opt/alt/python37/lib64/python3.7/distutils/command/register.pyzregister.cCst|d|_d|_dS)Nr)rinitialize_optionslist_classifiersr)r r r r rs zregister.initialize_optionscCs*t|d|jfdd}||jjd<dS)Nr)r)rrestructuredtextr )rfinalize_optionsr distributionZcommand_options)r Z check_optionsr r r r$s zregister.finalize_optionscCsX||x|D]}||qW|jr<|n|jrL|n|dS)N) r _set_configZget_sub_commandsZ run_commandZdry_runverify_metadatar classifiers send_metadata)r Zcmd_namer r r run+s  z register.runcCs8tdt|jd}||j|_d|_|dS)zDeprecated API.zddistutils.command.register.check_metadata is deprecated, use the check command insteadr rN)rPendingDeprecationWarningrZget_command_objZensure_finalizedrrr)r r r r r check_metadata:s zregister.check_metadatacCsz|}|ikr@|d|_|d|_|d|_|d|_d|_n6|jd|jfkr^td|j|jdkrp|j|_d|_d S) z: Reads the configuration file and set attributes. usernamepassword repositoryrealmTZpypiz%s not found in .pypircFN)Z _read_pypircrrrr has_configZDEFAULT_REPOSITORY ValueError)r Zconfigr r r rDs     zregister._set_configcCs*|jd}tj|}t||dS)z8 Fetch the list of classifiers from the server. z?:action=list_classifiersN)rurllibrequestZurlopenrinfo_read_pypi_response)r ZurlZresponser r r rUs  zregister.classifierscCs&||d\}}td||dS)zF Send the metadata to the package index server to be checked. rzServer response (%s): %sN)post_to_serverbuild_post_datarr$)r coderesultr r r r\szregister.verify_metadatac Cs|jrd}|j}|j}n d}d}}d}x:||krf|dtjt}|sTd}q.||kr.tdq.W|dkr|x|std}qtWx|st d}qWt j }t j |jd }||j|||||d |\}}|d ||ftj|d kr|jr||j_nj|d tj|d|tjd}x&|dkr\td}|s8d}q8W|dkr|||n|dkrddi} d| d<| d<| d<d| d<x| dstd| d<qWx| d| dkrNx| dst d| d<qWx| dst d| d<qW| d| dkrd| d<d| d<tdqWx| dsltd| d<qRW|| \}}|d krtd ||ntdtd nT|d!krdd"i} d| d<x| dstd#| d<qW|| \}}td ||dS)$a_ Send the metadata to the package index server. Well, do the following: 1. figure who the user is, and then 2. send the data as a Basic auth'ed POST. First we try to read the username/password from $HOME/.pypirc, which is a ConfigParser-formatted file with a section [distutils] containing username and password entries (both in clear text). Eg: [distutils] index-servers = pypi [pypi] username: fred password: sekrit Otherwise, to figure who the user is, we offer the user three choices: 1. use existing login, 2. register as a new user, or 3. set the password to a random string and email the user. 1xz1 2 3 4zWe need to know who you are, so please choose either: 1. use your existing login, 2. register as a new user, 3. have the server generate a new password for you (and email it to you), or 4. quit Your selection [default 1]: z&Please choose one of the four options!z Username: z Password: rZsubmitzServer response (%s): %szAI can store your PyPI login so future submissions will be faster.z (the login will be stored in %s)XZynzSave your login (y/N)?ny2z:actionusernamerZemailNZconfirmz Confirm: z!Password and confirm don't match!z EMail: z"You will receive an email shortly.z7Follow the instructions in it to complete registration.3Zpassword_resetzYour email address: )r rrsplitannouncerINFOinputprintgetpassr"r#ZHTTPPasswordMgrparseZurlparserZ add_passwordrr&r'rZ _get_rc_filelowerZ _store_pypircr$) r ZchoicerrchoicesauthZhostr(r)datar r r rcs                     zregister.send_metadatacCs|jj}|d|||||||| | | | | |||d}|ds|ds|drd|d<|S)Nz1.0)z:actionmetadata_versionr3versionZsummaryZ home_pageZauthorZ author_emaillicense descriptionkeywordsplatformrZ download_urlprovidesrequires obsoletesrFrGrHz1.1r@)rZmetadataZget_nameZ get_versionZget_descriptionZget_urlZ get_contactZget_contact_emailZ get_licenceZget_long_descriptionZ get_keywordsZ get_platformsZget_classifiersZget_download_urlZ get_providesZ get_requiresZ get_obsoletes)r actionmetar?r r r r's* zregister.build_post_dataNc Csd|kr$|d|d|jftjd}d|}|d}t}x|D]\}}t|tgtdfkrp|g}xZ|D]R}t|}| || d|| d| ||rv|d d krv| d qvWqJW| || d | d }d |tt |d} t j|j|| } t jt jj|d} d}y| | } Wnxt jjk r} z"|jrl| j}| j| jf} Wdd} ~ XYnJt jjk r} zdt| f} Wdd} ~ XYnX|jr|| }d} |jrd d|df}||tj| S)zC Post a query to the server, and return a string response. r3zRegistering %s to %sz3--------------GHSKFJDLGDS7543FJKLFHRE75642756743254z --z--r z* Content-Disposition: form-data; name="%s"z   zutf-8z/multipart/form-data; boundary=%s; charset=utf-8)z Content-typezContent-length)Z password_mgrr,Ni)r-ZOKzK---------------------------------------------------------------------------)r6rrr7ioStringIOitemstypestrwritegetvalueencodelenr"r#ZRequestZ build_openerZHTTPBasicAuthHandleropenerrorZ HTTPErrorZ show_responsefpreadr(msgZURLErrorr%join)r r?r>boundaryZ sep_boundaryZ end_boundaryZbodykeyvalueZheadersZreqopenerr)er[r r r r&sV         zregister.post_to_server)N)__name__ __module__ __qualname__rCrZ user_optionsZboolean_optionsZ sub_commandsrrrrrrrrr'r&r r r r rs"  zr)__doc__r:rNZ urllib.parser"Zurllib.requestwarningsrZdistutils.corerZdistutils.errorsZ distutilsrrr r r r s   PKr ]5k6command/__pycache__/bdist_wininst.cpython-37.opt-2.pycnu[B YI~d<@slddlZddlZddlmZddlmZddlmZmZddl Tddl m Z ddl m Z Gdd d eZdS) N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc @seZdZdZddddefdddd d d d d dddg ZddddgZejdkZ ddZ ddZ ddZ ddZ d%dd Zd!d"Zd#d$ZdS)& bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACz keep-tempzno-target-compilezno-target-optimizez skip-buildwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr D/opt/alt/python37/lib64/python3.7/distutils/command/bdist_wininst.pyinitialize_options=sz bdist_wininst.initialize_optionscCs|dd|jdkrR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jrx2|jjD]}|jtj |krPqWtd|jdS) Nbdist)rrZwininstzMtarget version can only be %s, or the '--skip-build' option must be specified)rr)rrz(install_script '%s' not found in scripts)Zset_undefined_optionsrrr distributionZget_command_objget_finalized_command bdist_baseospathjoinrhas_ext_modulesrZDistutilsOptionErrorrscriptsbasename)rr#r'Z short_versionscriptr r r!finalize_optionsMs4      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|sd tjdd }d |j |f}|d}tj|jd ||_x4d D],}|}|dkr|d}t|d||qWtd|j |tjdtj|j d|tjd=ddlm}|} |j } |j!| d|j d} |"| | |j#|jrt$} nd} |jj%&d| |'| ft(d| t)| |j*st+|j |j,ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz%d.%dz.%s-%slib)ZpurelibZplatlibheadersr,datar6z/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)-sysplatformr%r+Zhas_c_librariesZDistutilsPlatformErrorrZ run_commandZreinitialize_commandrrootZwarn_dirrcompileoptimizer version_infor&r(r)r*Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfiler8 get_fullnameZ make_archive create_exerrZ dist_filesappendget_installer_filenamedebugremoverrr;) rr1r3rZplat_specifierr0keyvaluer8Zarchive_basenamefullnamearcnameZ pyversionr r r!rFssd                  zbdist_wininst.runc Cs^g}|jj}|d|jpdd}dd}xJdD]B}t||d}|r2|d|||f}|d|||fq2W|d |jr|d |j|d |||d |j |d |j |j r|d|j |j r|d|j |j p |j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r$ cSs |ddS)NrQz\n)replace)sr r r!escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r%metadatarIZlong_descriptiongetattr capitalizerrrrrrrGtime distutilsZctime __version__r*) rlinesrXrDrTrVr7rr[r\Z build_infor r r! get_inidatas:    zbdist_wininst.get_inidataNc Csddl}||j|}||}|d||rPt|d}t|}nd}t|d} | | |rz| |t |t r| d}|d}|jrt|jddd } |  d} WdQRX|| d }n|d}| ||d d t||} | | | t|ddS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs    PKr ]鼡V3command/__pycache__/build_clib.cpython-37.opt-1.pycnu[B  fV@sTdZddlZddlmZddlTddlmZddlmZddZ Gd d d eZ dS) zdistutils.command.build_clib Implements the Distutils 'build_clib' command, to build a C/C++ library that is included in the module distribution and needed by an extension module.N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rrA/opt/alt/python37/lib64/python3.7/distutils/command/build_clib.pyrs rc@sleZdZdZdddddgZddgZd d d efgZd d ZddZ ddZ ddZ ddZ ddZ ddZd S) build_clibz/build C/C++ libraries used by Python extensions)z build-clib=bz%directory to build C/C++ libraries to)z build-temp=tz,directory to put temporary build by-products)debuggz"compile with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler typer rz help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefr rcompiler)selfrrr initialize_options4szbuild_clib.initialize_optionscCsh|dddddd|jj|_|jr0||j|jdkrH|jjpDg|_t|jtrd|jtj |_dS)NZbuild)rr )rr)rr)r r )rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)rrrr finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|j|j|j dk rzx |j D]\}}|j ||q`W|j dk rx|j D]}|j |qW| |jdS)Nr) new_compiler)rdry_runr)rrr!rr"rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)rr!namevalueZmacrorrr run^s        zbuild_clib.runcCst|tstdx|D]z}t|ts:t|dkr:td|\}}t|tsTtdd|ksptjdkrtj|krtd|dt|tstdqWd S) a`Ensure that the list of libraries is valid. `library` is presumably provided as a command option 'libraries'. This method checks that it is a list of 2-tuples, where the tuples are (library_name, build_info_dict). Raise DistutilsSetupError if the structure is invalid anywhere; just returns otherwise. z+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)N) rlistDistutilsSetupErrortuplelenrrsepdict)rrlibr$ build_inforrr rvs"     zbuild_clib.check_library_listcCs0|js dSg}x|jD]\}}||qW|S)N)rappend)rZ lib_nameslib_namer0rrr get_library_namess zbuild_clib.get_library_namescCs^||jg}xH|jD]>\}}|d}|dks@t|ttfsLtd|||qW|S)Nsourceszfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)rrgetrr)r+r*extend)r filenamesr2r0r4rrr get_source_filess  zbuild_clib.get_source_filescCsx|D]\}}|d}|dks.t|ttfs:td|t|}td||d}|d}|jj||j |||j d}|jj |||j |j dqWdS)Nr4zfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenameszbuilding '%s' librarymacrosr) output_dirr9rr )r:r ) r5rr)r+r*rinforcompilerr Zcreate_static_libr )rrr2r0r4r9rZobjectsrrr r#s$      zbuild_clib.build_libraries)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrZ help_optionsrr r&rr3r8r#rrrr r s  $ r ) __doc__rZdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr rrrr s    PKr ] n ډ002command/__pycache__/bdist_rpm.cpython-37.opt-1.pycnu[B  fT@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z d9d:Z d;d<Z d=d>Z d?S)@ bdist_rpmzcreate an RPM distribution)z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package)z no-autoreqNz+do not automatically calculate dependencies)z keep-tempkz"don't clean up RPM build directory)z no-keep-tempNz&clean up RPM build directory [default])zuse-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)zno-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler)z rpm3-modeNz"RPM 3 compatibility mode (default))z rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nzrr)ZREADMEz README.txtr1rrrr r!r"r#r$r%r&r'r(r)r+r,r-r.r/r4)Z ensure_stringrAZ get_contactZget_contact_emailZensure_string_list isinstancerlistr;r<existsappend_format_changelogrZensure_filename)r5Zreadmer6r6r7rCs>                         zbdist_rpm.finalize_package_datacCstrsz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r*r!z&%setup -n %{name}-%{unmangled_version}Zbuildr"Zinstallr#)Zcleanr$zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr%N)Zprer&N)Zpostr'N)Zpreunr(N)Zpostunr)N%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rArRZ get_versionreplacerZget_description subprocessZ getoutputr= splitlinesrIrUrZ get_licenserr4rBgetattrlowerrFrGZget_urlrr.r r;r<r]r3Zget_long_descriptionrr>argvr1openreadrZrr)r5Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultr6r6r7rSs                    zbdist_rpm._make_spec_filecCs|s|Sg}x`|dD]N}|}|ddkrD|d|gq|ddkr\||q|d|qW|ds||d=|S)zKFormat the changelog correctly and convert it to a list of strings rhrrrgrez )rYrZrUrI)r5rZ new_changelogr`r6r6r7rJ3s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr8rDrCrcrdrSrJr6r6r6r7r sp--)r )__doc__ror>r;Zdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r6r6r6r7s      PKr ]?CC.command/__pycache__/bdist.cpython-37.opt-1.pycnu[B  f@sHdZddlZddlmZddlTddlmZddZGdd d eZdS) zidistutils.command.bdist Implements the Distutils 'bdist' command (create a built [binary] distribution).N)Command)*) get_platformcCsTddlm}g}x,tjD]"}|d|dtj|dfqW||}|ddS)zFPrint list of available formats (arguments to "--format" option). r) FancyGetoptzformats=Nz'List of available distribution formats:)Zdistutils.fancy_getoptrbdistformat_commandsappendformat_commandZ print_help)rformatsformatZpretty_printerr }y||j|dWq tk rHtd|Yq Xq Wxztt|jD]h}||}||}||jkr|j||_ |dkr|j |_ |j |_ |||ddkrd|_ | |q^WdS)Nrzinvalid format '%s'r!r)r r r r0ZDistutilsOptionErrorrangelenZreinitialize_commandno_format_optionr r'r&Z keep_tempZ run_command)r(Zcommandsr iZcmd_nameZsub_cmdr r rrunvs"    z bdist.run)__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsr4r.rr r)r1r6r r r rrs<    r) __doc__r+Zdistutils.corerZdistutils.errorsZdistutils.utilrrrr r r rs    PKr ]Bx 9command/__pycache__/install_egg_info.cpython-37.opt-1.pycnu[B  f+ @sddZddlmZddlmZmZddlZddlZddlZGdddeZ ddZ d d Z d d Z dS) zdistutils.command.install_egg_info Implements the Distutils 'install_egg_info' command, for installing a package's PKG-INFO metadata.)Command)logdir_utilNc@s:eZdZdZdZdgZddZddZdd Zd d Z d S) install_egg_infoz)Install an .egg-info file for the packagez8Install package's PKG-INFO metadata as an .egg-info file)z install-dir=dzdirectory to install tocCs d|_dS)N) install_dir)selfr G/opt/alt/python37/lib64/python3.7/distutils/command/install_egg_info.pyinitialize_optionssz#install_egg_info.initialize_optionscCsb|dddtt|jtt|jftjdd}t j |j ||_ |j g|_dS)NZ install_lib)rrz%s-%s-py%d.%d.egg-info)Zset_undefined_options to_filename safe_name distributionZget_name safe_versionZ get_versionsys version_infoospathjoinrtargetoutputs)rbasenamer r r finalize_optionss z!install_egg_info.finalize_optionsc Cs|j}tj|r0tj|s0tj||jdnNtj|rV| tj |jfd|n(tj|j s~| tj |j fd|j t d||jst|ddd}|jj|WdQRXdS)N)dry_runz Removing z Creating z Writing %swzUTF-8)encoding)rrrisdirislinkrZ remove_treerexistsZexecuteunlinkrmakedirsrinfoopenrZmetadataZwrite_pkg_file)rrfr r r run s   zinstall_egg_info.runcCs|jS)N)r)rr r r get_outputs.szinstall_egg_info.get_outputsN) __name__ __module__ __qualname____doc__Z descriptionZ user_optionsr rr%r&r r r r r s rcCstdd|S)zConvert an arbitrary string to a standard distribution name Any runs of non-alphanumeric/. characters are replaced with a single '-'. z[^A-Za-z0-9.]+-)resub)namer r r r6srcCs|dd}tdd|S)zConvert an arbitrary string to a standard version string Spaces become dots, and all other non-alphanumeric characters become dashes, with runs of multiple dashes condensed to a single dash.  .z[^A-Za-z0-9.]+r+)replacer,r-)versionr r r r>s rcCs |ddS)z|Convert a project or version name to its filename-escaped form Any '-' characters are currently replaced with '_'. r+_)r1)r.r r r r Hsr ) r*Z distutils.cmdrZ distutilsrrrrr,rrrr r r r r s + PKr ]ChCJ((1command/__pycache__/__init__.cpython-37.opt-1.pycnu[B  f@s2dZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr?/opt/alt/python37/lib64/python3.7/distutils/command/__init__.pys&PKr ]D.command/__pycache__/build.cpython-37.opt-1.pycnu[B  f@sTdZddlZddlZddlmZddlmZddlmZddZ Gdd d eZ dS) zBdistutils.command.build Implements the Distutils 'build' command.N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rrs    PKr ]k--6command/__pycache__/bdist_wininst.cpython-37.opt-1.pycnu[B  f<@spdZddlZddlZddlmZddlmZddlmZm Z ddl Tddl m Z ddl mZGd d d eZdS) zzdistutils.command.bdist_wininst Implements the Distutils 'bdist_wininst' command: create a windows installer exe-program.N)Command) get_platform) create_tree remove_tree)*)get_python_version)logc @seZdZdZddddefdddd d d d d dddg ZddddgZejdkZ ddZ ddZ ddZ ddZ d%dd Zd!d"Zd#d$ZdS)& bdist_wininstz-create an executable installer for MS Windows)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)zbitmap=bz>bitmap to use for the installer instead of python-powered logo)ztitle=tz?title to display on the installer background instead of default)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distribution)zuser-access-control=Nzspecify Vista's UAC handling - 'none'/default=no handling, 'auto'=use UAC if target Python installed for all users, 'force'=always use UACz keep-tempzno-target-compilezno-target-optimizez skip-buildwin32cCsRd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempno_target_compileno_target_optimizetarget_versiondist_dirbitmaptitle skip_buildinstall_scriptpre_install_scriptuser_access_control)selfr D/opt/alt/python37/lib64/python3.7/distutils/command/bdist_wininst.pyinitialize_options=sz bdist_wininst.initialize_optionscCs|dd|jdkrR|jr6|jr6|jd}|j|_|dj}tj |d|_|j s^d|_ |js|j rt }|j r|j |krtd|f||_ |ddd|jrx2|jjD]}|jtj |krPqWtd|jdS) Nbdist)rrZwininstzMtarget version can only be %s, or the '--skip-build' option must be specified)rr)rrz(install_script '%s' not found in scripts)Zset_undefined_optionsrrr distributionZget_command_objget_finalized_command bdist_baseospathjoinrhas_ext_modulesrZDistutilsOptionErrorrscriptsbasename)rr#r'Z short_versionscriptr r r!finalize_optionsMs4      zbdist_wininst.finalize_optionsc Cstjdkr&|js|jr&td|js6|d|jddd}|j |_ |j|_d|_ |j |_ |d}d|_ d|_|jr|j}|sd tjdd }d |j |f}|d}tj|jd ||_x4d D],}|}|dkr|d}t|d||qWtd|j |tjdtj|j d|tjd=ddlm}|} |j } |j!| d|j d} |"| | |j#|jrt$} nd} |jj%&d| |'| ft(d| t)| |j*st+|j |j,ddS)Nrz^distribution contains extensions and/or C libraries; must be compiled on a Windows 32 platformbuildinstall)Zreinit_subcommandsr install_libz%d.%dz.%s-%slib)ZpurelibZplatlibheadersr,datar6z/Include/$dist_nameZinstall_zinstalling to %sZPURELIB)mktempzip)Zroot_diranyr zremoving temporary file '%s')dry_run)-sysplatformr%r+Zhas_c_librariesZDistutilsPlatformErrorrZ run_commandZreinitialize_commandrrootZwarn_dirrcompileoptimizer version_infor&r(r)r*Z build_baseZ build_libuppersetattrrinfoZensure_finalizedinsertrunZtempfiler8 get_fullnameZ make_archive create_exerrZ dist_filesappendget_installer_filenamedebugremoverrr;) rr1r3rZplat_specifierr0keyvaluer8Zarchive_basenamefullnamearcnameZ pyversionr r r!rFssd                  zbdist_wininst.runc Cs^g}|jj}|d|jpdd}dd}xJdD]B}t||d}|r2|d|||f}|d|||fq2W|d |jr|d |j|d |||d |j |d |j |j r|d|j |j r|d|j |j p |j }|d||ddl }ddl} d|| | jf} |d| d|S)Nz [metadata]r$ cSs |ddS)NrQz\n)replace)sr r r!escapesz)bdist_wininst.get_inidata..escape)ZauthorZ author_email descriptionZ maintainerZmaintainer_emailnameZurlversionz %s: %sz%s=%sz [Setup]zinstall_script=%szinfo=%sztarget_compile=%dztarget_optimize=%dztarget_version=%szuser_access_control=%sztitle=%srzBuilt %s with distutils-%sz build_info=%s)r%metadatarIZlong_descriptiongetattr capitalizerrrrrrrGtime distutilsZctime __version__r*) rlinesrXrDrTrVr7rr[r\Z build_infor r r! get_inidatas:    zbdist_wininst.get_inidataNc Csddl}||j|}||}|d||rPt|d}t|}nd}t|d} | | |rz| |t |t r| d}|d}|jrt|jddd } |  d} WdQRX|| d }n|d}| ||d d t||} | | | t|ddS) Nrz creating %srbwbmbcsrzlatin-1)encodings zs    PKr ]Y,000command/__pycache__/install.cpython-37.opt-2.pycnu[B ~ fuh@sddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZmZdd lmZdd l mZdd lmZdd lmZd ZddddddZddddddddddddedZerdddddded<ddd d!dded"<dZGd#d$d$eZdS)%N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITETz$base/Lib/site-packagesz$base/Include/$dist_namez $base/Scriptsz$base)purelibplatlibheadersscriptsdataz/$base/lib/python$py_version_short/site-packagesz5$platbase/lib64/python$py_version_short/site-packagesz9$base/include/python$py_version_short$abiflags/$dist_namez $base/binz$base/lib/pythonz$base/lib64/pythonz$base/include/python/$dist_name) unix_prefix unix_homentz $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@s:eZdZdZdddddddd d d d d ddddddgZdddgZer`edddefedddiZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEefdFefdGefdHefdIdJdKfgZdS)Linstallz'install everything from build directory)zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nz/opt/alt/python37/lib64/python3.7/distutils/command/install.pyinitialize_optionss2 zinstall.initialize_optionsc Csx|js|js|jr&|js|jr&td|jr@|js8|jr@td|jrl|jsd|jsd|jsd|jsd|jrltdtjdkr|jr| dd|_| dtjdkr| n| | dt jd}td d \}}y t j}Wntk rd }YnX|j|j|j|d t jdd dt jdd |||||d |_trf|j|jd<|j|jd<|| d|j|jd<|j|jd<trddlm}td||j| | d|jr|!|j"dkr|jj#r|j$|_"n|j%|_"|&dddddddd|'|j"|_(tj)*|j"|j+|_"|j,dk r\|-ddddddd| d|.d d!d"dS)#NzWmust supply either prefix/exec-prefix/home or install-base/install-platbase -- not bothz9must supply either home or prefix/exec-prefix -- not bothzGcan't combine user with prefix, exec_prefix/home, or install_(plat)baseposixz+exec-prefix option ignored on this platformzpre-finalize_{unix,other}zpost-finalize_{unix,other}()rr r!z%d.%dz%d%d) Z dist_nameZ dist_versionZ dist_fullname py_versionZpy_version_shortZpy_version_nodotZ sys_prefixr Zsys_exec_prefixr!abiflagsuserbaseZusersitezpost-expand_basedirs()baseZplatbase)pprintz config vars:zpost-expand_dirs()librrrrrZlibbasezafter prepending rootbuild)r3r3)r4r4)/r r!r"r#r$r rosnamewarn dump_dirs finalize_unixfinalize_othersysversionsplitrr>AttributeError distributionZget_nameZ get_versionZ get_fullname version_info config_vars HAS_USER_SITEr,r-expand_basedirsrrAprint expand_dirscreate_home_pathr)Z ext_modulesr'r& convert_pathshandle_extra_pathinstall_libbasepathjoin extra_dirsr% change_rootsZset_undefined_options)r6r=r r!r>rAr7r7r8finalize_optionss                           zinstall.finalize_optionscCstsdSddlm}t|dx||jD]r}|d}|ddkrN|dd}||jkrz|j|}||}t|| }n||}t||}td||q*WdS)Nr) longopt_xlate:=z %s: %s) rZdistutils.fancy_getoptr^rdebug user_options negative_opt translategetattr)r6msgr^optZopt_namevalr7r7r8rGus         zinstall.dump_dirscCs"|jdk s|jdk r\|jdkr2|jdkr2|jdksP|jdksP|jdksP|jdkrXtddS|j r|j dkrtt d|j |_|_| dn|j dk r|j |_|_| dnl|jdkr|jdk rtdtjtj|_tjtj|_n|jdkr|j|_|j|_|j|_| ddS)NzPinstall-base or install-platbase supplied, but installation scheme is incompletez$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)r#r$r)r&r'r(r*r+r rr,r select_schemer"r r!rDrYnormpathrJ)r6r7r7r8rHs<             zinstall.finalize_unixcCs|jr8|jdkrtd|j|_|_|tjdn|jdk r\|j|_|_|dn\|j dkrvtj t j |_ |j |_|_y|tjWn"t k rtdtjYnXdS)Nz$User base directory is not specifiedZ_userrz)I don't know how to install stuff on '%s')rr,rr#r$rjrDrEr"r rYrkrJKeyError)r6r7r7r8rIs"    zinstall.finalize_othercCs@t|}x2tD]*}d|}t||dkrt||||qWdS)Ninstall_)INSTALL_SCHEMES SCHEME_KEYSrfsetattr)r6rEZschemekeyZattrnamer7r7r8rjs  zinstall.select_schemecCs\xV|D]N}t||}|dk rtjdks0tjdkr|D]2}||}x"|D]}||kr&||q&WqW|jrl|jrl|tj|j |jd|S)Nz.pth) rget_finalized_commandrappendrzr0rDrYrZrX)r6rrcmdrr7r7r8rWs  zinstall.get_outputscCs2g}x(|D]}||}||qW|S)N)rrextend get_inputs)r6Zinputsrrr7r7r8rhs  zinstall.get_inputscCs|jp|jS)N)rNZhas_pure_modulesZhas_ext_modules)r6r7r7r8has_libts zinstall.has_libcCs |jS)N)rN has_headers)r6r7r7r8rzszinstall.has_headerscCs |jS)N)rN has_scripts)r6r7r7r8rszinstall.has_scriptscCs |jS)N)rNZhas_data_files)r6r7r7r8has_dataszinstall.has_datar)r(r*r+Zinstall_egg_infocCsdS)NTr7)r6r7r7r8zinstall.) __name__ __module__ __qualname__ descriptionrcZboolean_optionsrQrrrdr9r]rGrHrIrjrtrRrTrVrWr\rUrrrrrrrrZ sub_commandsr7r7r7r8rIsh    N(  " , r)rJrDZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rrQZWINDOWS_SCHEMErnrorr7r7r7r8sT            PKr ]tmʂ5command/__pycache__/install_data.cpython-37.opt-1.pycnu[B  f @s<dZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) install_datazinstall data files)z install-dir=dzIbase directory for installing data files (default: installation base dir))zroot=Nzs PKr ]F'[([(1command/__pycache__/build_py.cpython-37.opt-1.pycnu[B  f C@s~dZddlZddlZddlZddlmZddlmZddlTddl m Z m Z ddl m Z Gdd d eZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)glob)Command)*) convert_path Mixin2to3)logc@seZdZdZdddddgZddgZd diZd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1S)3build_pyz5"build" pure Python modules (copy to build directory))z build-lib=dzdirectory to "build" (copy) to)compileczcompile .py to .pyc)z no-compileNz!don't compile .py files [default])z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])forcefz2forcibly build everything (ignore file timestamps)r r z no-compilecCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer )selfr?/opt/alt/python37/lib64/python3.7/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|ddd|jj|_|jj|_|jj|_i|_|jjrbx&|jjD]\}}t||j|<qHW||_ t |j t syt |j |_ Wn t tfk rtdYnXdS)NZbuild)rr)r r zoptimize must be 0, 1, or 2)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerint ValueErrorAssertionErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s"      zbuild_py.finalize_optionscCs:|jr||jr$||||jdddS)Nr)include_bytecode)r build_modulesrbuild_packagesbuild_package_data byte_compile get_outputs)rrrrrunCs z build_py.runcsg}|js|Sxr|jD]h}||}tjj|jg|d}d|rRt|dfdd|||D}| ||||fqW|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples.rcsg|]}|dqS)Nr).0file)plenrr tsz+build_py.get_data_files..) rget_package_dirosr#joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r0rras   zbuild_py.get_data_filescs`|jdg|j|g}gx:|D]2}ttj|t|}fdd|Dq&WS)z6Return filenames for package's data files in 'src_dir'cs$g|]}|krtj|r|qSr)r3r#isfile)r.fn)filesrrr1s z,build_py.find_data_files..)rgetrr3r#r4rextend)rrr:ZglobspatternZfilelistr)r@rr7ys  zbuild_py.find_data_filescCshd}x^|jD]T\}}}}xF|D]>}tj||}|tj||jtj|||ddqWq WdS)z$Copy data files into build directoryNF) preserve_mode)rr3r#r4mkpathdirname copy_file)rZlastdirrr:r;r<filenametargetrrrr(s zbuild_py.build_package_datacCs|d}|js&|r tjj|SdSng}x|ry|jd|}Wn*tk rn|d|d|d=Yq,X|d|tjj|Sq,W|jd}|dk r|d||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r,r=rN)r5rr3r#r4KeyErrorinsertrA)rrr#tailZpdirrrrr2s(       zbuild_py.get_package_dircCsj|dkr8tj|s td|tj|s8td||rftj|d}tj|rZ|Std|dS)Nr=z%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r3r#existsZDistutilsFileErrorisdirr4r>rwarn)rrrinit_pyrrr check_packages    zbuild_py.check_packagecCs&tj|std||dSdSdS)Nz!file %s (for module %s) not foundFT)r3r#r>rrP)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|||ttj|d}g}tj|jj}xX|D]P}tj|}||krztjtj |d}| |||fq8| d|q8W|S)Nz*.pyrz excluding %s) rRrr3r#r4abspathrZ script_namesplitextbasenamer8Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_frSrrrfind_package_moduless   zbuild_py.find_package_modulesc Csi}g}x|jD]}|d}d|dd}|d}y||\}}Wn"tk rj||}d}YnX|s|||} |df||<| r||d| ftj||d} | || sq|||| fqW|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r,rrJr-__init__z.py) rr5r4rKr2rRr8r3r#rU) rrrYrSr#rZ module_basercheckedrQrTrrr find_moduless*       zbuild_py.find_modulescCsRg}|jr|||jrNx.|jD]$}||}|||}||q&W|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrBr]rr2rZ)rrYrrmrrrfind_all_moduless   zbuild_py.find_all_modulescCsdd|DS)NcSsg|] }|dqS)rJr)r.rSrrrr1-sz-build_py.get_source_files..)r_)rrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nz.py)listr3r#r4)rr;rrSZ outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler-cCs|}g}xx|D]p\}}}|d}||j||}|||r|jr`|tjj|dd|j dkr|tjj||j dqW|dd|j D7}|S)Nr,r=) optimizationrcSs,g|]$\}}}}|D]}tj||qqSr)r3r#r4)r.rr:r;r<rHrrrr1Cs z(build_py.get_outputs..) r_r5rbrr8r importlibutilcache_from_sourcerr)rr%rYZoutputsrrSrTrHrrrr*3s"       zbuild_py.get_outputscCsbt|tr|d}nt|ttfs,td||j||}tj |}| ||j ||ddS)Nr,z:'package' must be a string (dot-separated), list, or tupler)rD) rstrr5ratuple TypeErrorrbrr3r#rFrErG)rrSrTrZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs.|}x |D]\}}}||||qWdS)N)r]rk)rrYrrSrTrrrr&Yszbuild_py.build_modulescCsLxF|jD]<}||}|||}x |D]\}}}||||q(WqWdS)N)rr2rZrk)rrrrYZpackage_rSrTrrrr'bs   zbuild_py.build_packagescCstjr|ddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r)rJ)rr prefixdry_run) sysdont_write_bytecoderPdistutils.utilr)rr3sepr r rmr)rr@r)rlrrrr)vs    zbuild_py.byte_compileN)r-)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr$r+rr7r(r2rRrUrZr]r_r`rbr*rkr&r'r)rrrrrs6   '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr||jr*||||j||jdddS)Nr)r%) updated_filesrr&rr'r(Zrun_2to3r)r*)rrrrr+s zbuild_py_2to3.runcCs,t||||}|dr(|j|d|S)Nr-r)rrkrvr8)rrSrTrZresrrrrkszbuild_py_2to3.build_moduleN)rrrsrtr+rkrrrrrusru)__doc__r3importlib.utilrdrnrZdistutils.corerZdistutils.errorsrprrZ distutilsrrrurrrrs   }PKr ]ȤS8command/__pycache__/install_scripts.cpython-37.opt-2.pycnu[B YI~d@s@ddlZddlmZddlmZddlmZGdddeZdS)N)Command)log)ST_MODEc@sLeZdZdZddddgZddgZdd Zd d Zd d ZddZ ddZ dS)install_scriptsz%install scripts (Python or otherwise))z install-dir=dzdirectory to install scripts to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))z skip-buildNzskip the build stepsrz skip-buildcCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfrF/opt/alt/python37/lib64/python3.7/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |dd|dddddS)NZbuild) build_scriptsr install)rr )rr)r r )Zset_undefined_options)r rrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|d||j|j|_tjdkrxT|D]H}|j rNt d|q6t |t dBd@}t d||t||q6WdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)r Z run_commandZ copy_treer r outfilesosname get_outputsZdry_runrinfostatrchmod)r filemoderrrrun)s  zinstall_scripts.runcCs |jjp gS)N)Z distributionZscripts)r rrr get_inputs8szinstall_scripts.get_inputscCs |jpgS)N)r)r rrrr;szinstall_scripts.get_outputsN) __name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrrrrrrrrrrsr)rZdistutils.corerZ distutilsrrrrrrrrs   PKr ]'Mn8command/__pycache__/install_headers.cpython-37.opt-1.pycnu[B  f@s$dZddlmZGdddeZdS)zdistutils.command.install_headers Implements the Distutils 'install_headers' command, to install C/C++ header files to the Python include directory.)Commandc@sFeZdZdZddgZdgZddZddZd d Zd d Z d dZ dS)install_headerszinstall C/C++ header files)z install-dir=dz$directory to install header files to)forcefz-force installation (overwrite existing files)rcCsd|_d|_g|_dS)Nr) install_dirroutfiles)selfr F/opt/alt/python37/lib64/python3.7/distutils/command/install_headers.pyinitialize_optionssz"install_headers.initialize_optionscCs|ddddS)NZinstall)rr)rr)Zset_undefined_options)r r r r finalize_optionssz install_headers.finalize_optionscCsL|jj}|sdS||jx*|D]"}|||j\}}|j|q"WdS)N) distributionheadersZmkpathrZ copy_filerappend)r rheaderout_r r r run!s  zinstall_headers.runcCs |jjp gS)N)rr)r r r r get_inputs+szinstall_headers.get_inputscCs|jS)N)r)r r r r get_outputs.szinstall_headers.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsr r rrrr r r r r s rN)__doc__Zdistutils.corerrr r r r s PKr ]LV88(command/__pycache__/sdist.cpython-37.pycnu[B  f7J@sdZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd l m Z dd lmZdd lmZdd lmZdd lmZmZddZGdddeZdS)zadistutils.command.sdist Implements the Distutils 'sdist' command (create a source distribution).N)glob)warn)Command)dir_util) file_util) archive_util)TextFile)FileList)log) convert_path)DistutilsTemplateErrorDistutilsOptionErrorcCsdddlm}ddlm}g}x,|D] }|d|d||dfq&W|||ddS)zoPrint all possible values for the 'formats' option (used by the "--help-formats" command-line option). r) FancyGetopt)ARCHIVE_FORMATSzformats=Nz.List of available source distribution formats:)Zdistutils.fancy_getoptrZdistutils.archive_utilrkeysappendsortZ print_help)rrformatsformatrd?Zd@dAZdBdCZdDdEZ dFdGZ!dHdIZ"dS)Jsdistz6create a source distribution (tarball, zip file, etc.)cCs|jS)zYCallable used for the check sub-command. Placed here so user_options can view it)metadata_check)selfrrrchecking_metadata(szsdist.checking_metadata)z template=tz5name of manifest template file [default: MANIFEST.in])z manifest=mz)name of manifest file [default: MANIFEST])z use-defaultsNzRinclude the default file set in the manifest [default; disable with --no-defaults])z no-defaultsNz"don't include the default file set)pruneNzspecifically exclude files/directories that should not be distributed (build tree, RCS/CVS dirs, etc.) [default; disable with --no-prune])zno-pruneNz$don't automatically exclude anything)z manifest-onlyozEjust regenerate the manifest and then stop (implies --force-manifest))zforce-manifestfzkforcibly regenerate the manifest and carry on as usual. Deprecated: now the manifest is always regenerated.)zformats=Nz6formats for source distribution (comma-separated list))z keep-tempkz@keep the distribution tree around after creating archive file(s))z dist-dir=dzFdirectory to put the source distribution archive(s) in [default: dist])zmetadata-checkNz[Ensure that all required elements of meta-data are supplied. Warn if any missing. [default])zowner=uz@Owner name used when creating a tar file [default: current user])zgroup=gzAGroup name used when creating a tar file [default: current group]z use-defaultsrz manifest-onlyzforce-manifestz keep-tempzmetadata-checkz help-formatsNz#list available distribution formats)z no-defaultszno-prunecheck)ZREADMEz README.txtz README.rstcCsTd|_d|_d|_d|_d|_d|_dg|_d|_d|_d|_ d|_ d|_ d|_ dS)NrZgztar) templatemanifest use_defaultsr manifest_onlyZforce_manifestr keep_tempdist_dir archive_filesrownergroup)rrrrinitialize_optionseszsdist.initialize_optionscCsZ|jdkrd|_|jdkr d|_|dt|j}|rFtd||jdkrVd|_dS)NZMANIFESTz MANIFEST.inrzunknown archive format '%s'Zdist)r)r(Zensure_string_listrZcheck_archive_formatsrr r-)rZ bad_formatrrrfinalize_options|s      zsdist.finalize_optionscCsBt|_x|D]}||qW||jr6dS|dS)N)r filelistZget_sub_commandsZ run_command get_file_listr+make_distribution)rZcmd_namerrrrunsz sdist.runcCs*tdt|jd}||dS)zDeprecated API.zadistutils.command.sdist.check_metadata is deprecated, use the check command insteadr&N)rPendingDeprecationWarning distributionZget_command_objZensure_finalizedr6)rr&rrrcheck_metadatas  zsdist.check_metadatacCstj|j}|s:|r:||j|jdS|sN| d|j|j |j rf| |rr| |jr||j|j|dS)aCFigure out the list of files to include in the source distribution, and put it in 'self.filelist'. This might involve reading the manifest template (and writing the manifest), or just reading the manifest, or just using the default file set -- it all depends on the user's options. Nz?manifest template '%s' does not exist (using default file list))ospathisfiler(_manifest_is_not_generated read_manifestr3rZremove_duplicatesrfindallr* add_defaults read_templaterprune_file_listwrite_manifest)rZtemplate_existsrrrr4s&       zsdist.get_file_listcCs<|||||||dS)a9Add all the default files to self.filelist: - README or README.txt - setup.py - test/test*.py - all pure Python modules mentioned in setup script - all files pointed by package_data (build_py) - all files defined in data_files. - all files defined as scripts. - all C sources listed as part of extensions or C libraries in the setup script (doesn't catch C headers!) Warns if (README or README.txt) or setup.py are missing; everything else is optional. N)_add_defaults_standards_add_defaults_optional_add_defaults_python_add_defaults_data_files_add_defaults_ext_add_defaults_c_libs_add_defaults_scripts)rrrrr@szsdist.add_defaultscCs:tj|sdStj|}tj|\}}|t|kS)z Case-sensitive path existence check >>> sdist._cs_path_exists(__file__) True >>> sdist._cs_path_exists(__file__.upper()) False F)r:r;existsabspathsplitlistdir)fspathrLZ directoryfilenamerrr_cs_path_existss  zsdist._cs_path_existscCs|j|jjg}x|D]}t|trn|}d}x(|D] }||r0d}|j|Pq0W|s|dd |q||r|j|q|d|qWdS)NFTz,standard file not found: should have one of z, zstandard file '%s' not found) READMESr8Z script_name isinstancetuplerQr3rrjoin)rZ standardsfnZaltsZgot_itrrrrDs       zsdist._add_defaults_standardscCs8ddg}x*|D]"}ttjjt|}|j|qWdS)Nz test/test*.pyz setup.cfg)filterr:r;r<rr3extend)rZoptionalpatternfilesrrrrEs zsdist._add_defaults_optionalcCsd|d}|jr$|j|x:|jD]0\}}}}x"|D]}|jtj ||q>Wq,WdS)Nbuild_py) get_finalized_commandr8Zhas_pure_modulesr3rXget_source_files data_filesrr:r;rU)rr[ZpkgZsrc_dirZ build_dir filenamesrPrrrrFs    zsdist._add_defaults_pythoncCs|jr~xr|jjD]f}t|trDt|}tj|rz|j |q|\}}x,|D]$}t|}tj|rR|j |qRWqWdS)N) r8Zhas_data_filesr^rSstrr r:r;r<r3r)ritemdirnamer_r!rrrrG$s     zsdist._add_defaults_data_filescCs(|jr$|d}|j|dS)N build_ext)r8Zhas_ext_modulesr\r3rXr])rrcrrrrH5s  zsdist._add_defaults_extcCs(|jr$|d}|j|dS)N build_clib)r8Zhas_c_librariesr\r3rXr])rrdrrrrI:s  zsdist._add_defaults_c_libscCs(|jr$|d}|j|dS)N build_scripts)r8Z has_scriptsr\r3rXr])rrerrrrJ?s  zsdist._add_defaults_scriptsc Cstd|jt|jddddddd}zlxf|}|dkrs  zsdist.read_manifestcCs||tj|||jdttdr4d}d|}n d}d|}|sPtdn t|xD|D]<}tj |s~td|q`tj ||}|j |||d q`W|j j|dS) aCreate the directory tree that will become the source distribution archive. All directories implied by the filenames in 'files' are created under 'base_dir', and then we hard link or copy (if hard linking is unavailable) those files into place. Essentially, this duplicates the developer's source tree, but in a directory named after the distribution, containing only the files to be distributed. )dry_runlinkZhardzmaking hard links in %s...Nzcopying files to %s...z)no files to distribute -- empty manifest?z#'%s' not a regular file -- skipping)r{)ZmkpathrZ create_treerzhasattrr:r rrfr;r<rUZ copy_filer8ZmetadataZwrite_pkg_info)rrsrZr{rkfiledestrrrmake_release_trees       zsdist.make_release_treecCs|j}tj|j|}|||jjg}d|j krT|j |j |j dxD|j D]:}|j ||||j|jd}| ||jj dd|fq\W||_|jstj||jddS)aCreate the source distribution(s). First, we create the release tree with 'make_release_tree()'; then, we create all required archive files (according to 'self.formats') from the release tree. Finally, we clean up by blowing away the release tree (unless 'self.keep_temp' is true). The list of archive files created is stored so it can be retrieved later by 'get_archive_files()'. Ztar)rsr/r0r)rzN)r8rpr:r;rUr-rr3rZrrpopindexZ make_archiver/r0Z dist_filesr.r,rZ remove_treerz)rrsZ base_namer.Zfmtr}rrrr5s     zsdist.make_distributioncCs|jS)zzReturn the list of archive files created when the command was run, or None if the command hasn't run yet. )r.)rrrrget_archive_filesszsdist.get_archive_files)#__name__ __module__ __qualname__Z descriptionrZ user_optionsZboolean_optionsrZ help_optionsZ negative_optZ sub_commandsrRr1r2r6r9r4r@ staticmethodrQrDrErFrGrHrIrJrArBrCr=r>rr5rrrrrr$s^  (  *r)__doc__r:rqrwarningsrZdistutils.corerZ distutilsrrrZdistutils.text_filerZdistutils.filelistr r Zdistutils.utilr Zdistutils.errorsr r rrrrrrs          PKr ]OF662command/__pycache__/build_ext.cpython-37.opt-2.pycnu[B YI~dv@sddlZddlZddlZddlZddlmZddlTddlmZm Z ddlm Z ddl m Z ddl mZddlmZdd lmZdd lmZed Zd d ZGdddeZdS)N)Command)*)customize_compilerget_python_version)get_config_h_filename) newer_group) Extension) get_platform)log) USER_BASEz3^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$cCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr )r r@/opt/alt/python37/lib64/python3.7/distutils/command/build_ext.pyr s r c@seZdZdZdejZdddddefdd d d efd d ddddefddddddddddgZddddd gZ d!d"d#e fgZ d$d%Z d&d'Z d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zejd6d7Zd8d9Zd:d;Zdd?Zd@dAZdBdCZdDdEZdFdGZd"S)H build_extz8build C/C++ extensions (compile/link to build directory)z (separated by '%s'))z build-lib=bz(directory for compiled extension modules)z build-temp=tz1directory for temporary files (build by-products)z plat-name=pz>platform name to cross-compile for, if supported (default: %s))inplaceiziignore build-lib and put compiled extensions into the source directory alongside your pure Python modulesz include-dirs=Iz.list of directories to search for header files)zdefine=DzC preprocessor macros to define)zundef=Uz!C preprocessor macros to undefine)z libraries=lz!external C libraries to link withz library-dirs=Lz.directories to search for external C libraries)zrpath=Rz7directories to search for shared C libraries at runtime)z link-objects=Oz2extra explicit link objects to include in the link)debuggz'compile/link with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler type)z parallel=jznumber of parallel build jobs)zswig-cppNz)make SWIG create C++ files (default is C))z swig-opts=Nz!list of SWIG command line options)zswig=Nzpath to the SWIG executable)userNz#add user include, library and rpathrrrzswig-cppr#z help-compilerNzlist available compilerscCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_dS)Nr) extensions build_lib plat_name build_temprpackage include_dirsdefineundef libraries library_dirsrpath link_objectsrrcompilerswigswig_cpp swig_optsr#parallel)selfrrrinitialize_optionsjs*zbuild_ext.initialize_optionsc Csddlm}|ddddddd d |jdkr8|jj|_|jj|_|}|jd d }|j dkrn|jj pjg|_ t |j t r|j t j|_ tjtjkr|j t jtjd |j | t jj||kr|j | t jj|d|d|jdkrg|_|jdkrg|_nt |jt r:|j t j|_|jdkrNg|_nt |jt rl|j t j|_t jdkrh|jt jtjdtjtjkr|jt jtjd|jrt j|jd|_nt j|jd|_|j t jtt tdd}|r|j||j!dkr*d}n|j!dd}t jtjd}|r\t j||}|j|tj"dddkrtj#$t jtjdr|jt jtjddt%dn |jd|&dr|j's|j|&d n |jd|j(r|j( d!}d"d#|D|_(|j)r4|j) d!|_)|j*dkrHg|_*n|j* d$|_*|j+rt jt,d }t jt,d} t j-|r|j |t j-| r|j| |j| t |j.t ryt/|j.|_.Wnt0k rt1d%YnXdS)&Nr) sysconfigZbuild)r%r%)r'r')r0r0)rr)rr)r4r4)r&r&)Z plat_specificZincluder,r/ntZlibsZDebugZRelease_homewin32ZPCbuildcygwinbinlibpythonZconfig.Py_ENABLE_SHAREDZLIBDIR,cSsg|] }|dfqS)1r).0symbolrrr sz.build_ext.finalize_options.. zparallel should be an integer)2 distutilsr7Zset_undefined_optionsr( distributionZ ext_packageZ ext_modulesr$Zget_python_incr) isinstancestrsplitospathsepsys exec_prefixbase_exec_prefixappendpathjoinextendZensure_string_listr,r-r.nameprefixrr'dirnamergetattrr&platform executable startswithrget_config_varZ python_buildr*r+r3r#r isdirr4int ValueErrorZDistutilsOptionError) r5r7Z py_includeZplat_py_includeZ _sys_homesuffixZnew_libZdefinesZ user_includeZuser_librrrfinalize_optionss                           zbuild_ext.finalize_optionscCsrddlm}|jsdS|jrL|d}|j|p:g|j |j ||j |j |j|jd|_ t|j tjdkr|jtkr|j |j|jdk r|j |j|jdk rx |jD]\}}|j ||qW|jdk rx|jD]}|j |qW|jdk r|j |j|j dk r2|j |j |jdk rL|j |j|j dk rf|j !|j |"dS)Nr) new_compiler build_clib)r0verbosedry_runrr9)#r rer$rKZhas_c_librariesget_finalized_commandr,rWZget_library_namesr-rTrfr0rgrhrrrOrXr&r Z initializer)Zset_include_dirsr*Z define_macror+Zundefine_macroZ set_librariesZset_library_dirsr.Zset_runtime_library_dirsr/Zset_link_objectsbuild_extensions)r5rerfrXvaluemacrorrrruns>             z build_ext.runc Cst|tstdxjt|D]\\}}t|tr4qt|trJt|dkrRtd|\}}td|t|t rzt |stdt|t stdt||d}x*dD]"}| |}|dk rt|||qW| d |_d |krtd | d }|rtg|_g|_xj|D]b} t| tr,t| d ks4tdt| dkrT|j| dnt| dkr|j| qW|||<qWdS)Nz:'ext_modules' option must be a list of Extension instanceszMeach element of 'ext_modules' option must be an Extension instance or 2-tuplezvold-style (ext_name, build_info) tuple found in ext_modules for extension '%s' -- please convert to Extension instancezRfirst element of each tuple in 'ext_modules' must be the extension name (a string)zOsecond element of each tuple in 'ext_modules' must be a dictionary (build info)sources)r)r-r, extra_objectsextra_compile_argsextra_link_argsr.Zdef_filez9'def_file' element of build info dict no longer supportedmacros)r8rnz9'macros' element of build info dict must be 1- or 2-tupler8r)rLlistDistutilsSetupError enumeratertuplelenr warnrMextension_name_rematchdictgetsetattrruntime_library_dirs define_macros undef_macrosrT) r5r$rextext_nameZ build_infokeyvalrsrlrrrcheck_extensions_listVsP           zbuild_ext.check_extensions_listcCs0||jg}x|jD]}||jqW|S)N)rr$rWro)r5 filenamesrrrrget_source_filess   zbuild_ext.get_source_filescCs6||jg}x |jD]}|||jqW|S)N)rr$rTget_ext_fullpathrX)r5Zoutputsrrrr get_outputss   zbuild_ext.get_outputscCs(||j|jr|n|dS)N)rr$r4_build_extensions_parallel_build_extensions_serial)r5rrrrjs  zbuild_ext.build_extensionsc sj}jdkrt}yddlm}Wntk r@d}YnX|dkrVdS||dTfddjD}x6tj|D]&\}} || WdQRXqWWdQRXdS)NTr)ThreadPoolExecutor) max_workerscsg|]}j|qSr)Zsubmitbuild_extension)rFr)executorr5rrrHsz8build_ext._build_extensions_parallel..) r4rO cpu_countconcurrent.futuresr ImportErrorrr$zip_filter_build_errorsresult)r5workersrZfuturesrZfutr)rr5rrs       z$build_ext._build_extensions_parallelc Cs4x.|jD]$}||||WdQRXqWdS)N)r$rr)r5rrrrrs  z"build_ext._build_extensions_serialc csTy dVWnDtttfk rN}z |js*|d|j|fWdd}~XYnXdS)Nz"building extension "%s" failed: %s)ZCCompilerErrorZDistutilsErrorZ CompileErrorZoptionalryrX)r5rerrrrs zbuild_ext._filter_build_errorsc CsT|j}|dkst|ttfs*td|jt|}||j}||j}|jslt ||dslt d|jdSt d|j| ||}|jpg}|jdd}x|jD]}||fqW|jj||j||j|j ||jd}|dd|_|jr||j|jpg}|jp|j|} |jj|||||j|j|| ||j |j| d dS)Nzjin 'ext_modules' option (extension '%s'), 'sources' must be present and must be a list of source filenamesZnewerz$skipping '%s' extension (up-to-date)zbuilding '%s' extension)Z output_dirrsr)rextra_postargsdepends)r,r-rrexport_symbolsrr'Z target_lang)!rorLrtrwrurXrrrrr rinfo swig_sourcesrqrrrTr0compiler'r)Z_built_objectsrprWrrlanguageZdetect_languageZlink_shared_object get_librariesr-rget_export_symbols) r5rroext_pathrZ extra_argsrsr+ZobjectsrrrrrsN         zbuild_ext.build_extensioncCs0g}g}i}|jrtd|js6d|jks6d|jkr        zbuild_ext.swig_sourcescCs`tjdkrdStjdkrNxBdD]&}tjd|d}tj|r|SqWdSntdtjdS)Nposixr1r9)z1.3z1.2z1.1z c:\swig%szswig.exez>I don't know how to find (much less run) SWIG on platform '%s')rOrXrUrVisfileZDistutilsPlatformError)r5Zversfnrrrrgs    zbuild_ext.find_swigcCs||}|d}||d}|jsRtjj|dd|g}tj|j|Sd|dd}|d}tj | |}tj||S)NrBrrbuild_py) get_ext_fullnamerNget_ext_filenamerrOrUrVr%riabspathZget_package_dir)r5rfullnameZmodpathfilenamer(rZ package_dirrrrrs   zbuild_ext.get_ext_fullpathcCs |jdkr|S|jd|SdS)NrB)r()r5rrrrrs zbuild_ext.get_ext_fullnamecCs.ddlm}|d}|d}tjj||S)Nr)r_rBZ EXT_SUFFIX)distutils.sysconfigr_rNrOrUrV)r5rr_rZ ext_suffixrrrrs  zbuild_ext.get_ext_filenamecCs0d|jdd}||jkr*|j||jS)NZPyInit_rBr)rXrNrrT)r5rZ initfunc_namerrrrs  zbuild_ext.get_export_symbolscCstjdkrdddlm}t|j|s\d}|jr4|d}|tjd?tjd?d@f}|j|gS|jSnttjd krt|jStjdd d kr|jSdd l m }| d rd tjd?tjd?d@| d}|j|gS|jSdS)Nr;r) MSVCCompilerz python%d%dZ_ddarwinZaix)r7rCz python{}.{}{}ZABIFLAGS) rQr\Zdistutils._msvccompilerrrLr0r hexversionr,rJr7r_format)r5rrtemplateZ pythonlibr7rrrrs*         zbuild_ext.get_libraries) __name__ __module__ __qualname__ descriptionrOrPZsep_byr Z user_optionsZboolean_optionsr Z help_optionsr6rdrmrrrrjrr contextlibcontextmanagerrrrrrrrrrrrrrr!s^  @N  K6   r)rrOrerQZdistutils.corerZdistutils.errorsrrrrZdistutils.dep_utilrZdistutils.extensionrZdistutils.utilr rJr Zsiter rrzr rrrrrs        PKr ]((+command/__pycache__/build_py.cpython-37.pycnu[B  f C@s~dZddlZddlZddlZddlmZddlmZddlTddl m Z m Z ddl m Z Gdd d eZGd d d ee ZdS) zHdistutils.command.build_py Implements the Distutils 'build_py' command.N)glob)Command)*) convert_path Mixin2to3)logc@seZdZdZdddddgZddgZd diZd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1S)3build_pyz5"build" pure Python modules (copy to build directory))z build-lib=dzdirectory to "build" (copy) to)compileczcompile .py to .pyc)z no-compileNz!don't compile .py files [default])z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])forcefz2forcibly build everything (ignore file timestamps)r r z no-compilecCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer )selfr?/opt/alt/python37/lib64/python3.7/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|ddd|jj|_|jj|_|jj|_i|_|jjrbx&|jjD]\}}t||j|<qHW||_ t |j t sy,t |j |_ d|j krdksnt Wn tt fk rtdYnXdS)NZbuild)rr)r r rzoptimize must be 0, 1, or 2)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerintAssertionError ValueErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s"       zbuild_py.finalize_optionscCs:|jr||jr$||||jdddS)Nr)include_bytecode)r build_modulesrbuild_packagesbuild_package_data byte_compile get_outputs)rrrrrunCs z build_py.runcsg}|js|Sxr|jD]h}||}tjj|jg|d}d|rRt|dfdd|||D}| ||||fqW|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples.rcsg|]}|dqS)Nr).0file)plenrr tsz+build_py.get_data_files..) rget_package_dirosr$joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r1rras   zbuild_py.get_data_filescs`|jdg|j|g}gx:|D]2}ttj|t|}fdd|Dq&WS)z6Return filenames for package's data files in 'src_dir'cs$g|]}|krtj|r|qSr)r4r$isfile)r/fn)filesrrr2s z,build_py.find_data_files..)rgetrr4r$r5rextend)rrr;ZglobspatternZfilelistr)rArr8ys  zbuild_py.find_data_filescCshd}x^|jD]T\}}}}xF|D]>}tj||}|tj||jtj|||ddqWq WdS)z$Copy data files into build directoryNF) preserve_mode)rr4r$r5mkpathdirname copy_file)rZlastdirrr;r<r=filenametargetrrrr)s zbuild_py.build_package_datacCs|d}|js&|r tjj|SdSng}x|ry|jd|}Wn*tk rn|d|d|d=Yq,X|d|tjj|Sq,W|jd}|dk r|d||rtjj|SdSdS)zReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).r-r>rN)r6rr4r$r5KeyErrorinsertrB)rrr$tailZpdirrrrr3s(       zbuild_py.get_package_dircCsj|dkr8tj|s td|tj|s8td||rftj|d}tj|rZ|Std|dS)Nr>z%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r4r$existsZDistutilsFileErrorisdirr5r?rwarn)rrrinit_pyrrr check_packages    zbuild_py.check_packagecCs&tj|std||dSdSdS)Nz!file %s (for module %s) not foundFT)r4r$r?rrQ)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|||ttj|d}g}tj|jj}xX|D]P}tj|}||krztjtj |d}| |||fq8| d|q8W|S)Nz*.pyrz excluding %s) rSrr4r$r5abspathrZ script_namesplitextbasenamer9Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_frTrrrfind_package_moduless   zbuild_py.find_package_modulesc Csi}g}x|jD]}|d}d|dd}|d}y||\}}Wn"tk rj||}d}YnX|s|||} |df||<| r||d| ftj||d} | || sq|||| fqW|S)aFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. r-rrKr.__init__z.py) rr6r5rLr3rSr9r4r$rV) rrrZrTr$rZ module_basercheckedrRrUrrr find_moduless*       zbuild_py.find_modulescCsRg}|jr|||jrNx.|jD]$}||}|||}||q&W|S)a4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.)rrCr^rr3r[)rrZrrmrrrfind_all_moduless   zbuild_py.find_all_modulescCsdd|DS)NcSsg|] }|dqS)rKr)r/rTrrrr2-sz-build_py.get_source_files..)r`)rrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nz.py)listr4r$r5)rr<rrTZ outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler.cCs|}g}xx|D]p\}}}|d}||j||}|||r|jr`|tjj|dd|j dkr|tjj||j dqW|dd|j D7}|S)Nr-r>) optimizationrcSs,g|]$\}}}}|D]}tj||qqSr)r4r$r5)r/rr;r<r=rIrrrr2Cs z(build_py.get_outputs..) r`r6rcrr9r importlibutilcache_from_sourcerr)rr&rZZoutputsrrTrUrIrrrr+3s"       zbuild_py.get_outputscCsbt|tr|d}nt|ttfs,td||j||}tj |}| ||j ||ddS)Nr-z:'package' must be a string (dot-separated), list, or tupler)rE) rstrr6rbtuple TypeErrorrcrr4r$rGrFrH)rrTrUrZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs.|}x |D]\}}}||||qWdS)N)r^rl)rrZrrTrUrrrr'Yszbuild_py.build_modulescCsXxR|jD]H}||}|||}x,|D]$\}}}||ks>t||||q(WqWdS)N)rr3r[r!rl)rrrrZZpackage_rTrUrrrr(bs    zbuild_py.build_packagescCstjr|ddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r*rK)rr prefixdry_run) sysdont_write_bytecoderQdistutils.utilr*rr4sepr r rnr)rrAr*rmrrrr*vs    zbuild_py.byte_compileN)r.)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrr%r,rr8r)r3rSrVr[r^r`rarcr+rlr'r(r*rrrrrs6   '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr||jr*||||j||jdddS)Nr)r&) updated_filesrr'rr(r)Zrun_2to3r*r+)rrrrr,s zbuild_py_2to3.runcCs,t||||}|dr(|j|d|S)Nr.r)rrlrwr9)rrTrUrZresrrrrlszbuild_py_2to3.build_moduleN)rsrtrur,rlrrrrrvsrv)__doc__r4importlib.utilrerorZdistutils.corerZdistutils.errorsrqrrZ distutilsrrrvrrrrs   }PKr ]ChCJ((+command/__pycache__/__init__.cpython-37.pycnu[B  f@s2dZddddddddd d d d d ddddddgZdS)z\distutils.command Package containing implementation of all the standard Distutils commands.ZbuildZbuild_pyZ build_extZ build_clibZ build_scriptsZcleanZinstallZ install_libZinstall_headersZinstall_scriptsZ install_dataZsdistregisterZbdistZ bdist_dumbZ bdist_rpmZ bdist_wininstZcheckZuploadN)__doc____all__rr?/opt/alt/python37/lib64/python3.7/distutils/command/__init__.pys&PKr ]-.command/__pycache__/clean.cpython-37.opt-2.pycnu[B YI~d @s@ddlZddlmZddlmZddlmZGdddeZdS)N)Command) remove_tree)logc@s>eZdZdZddddddgZdgZd d Zd d Zd dZdS)cleanz-clean up temporary files from 'build' command)z build-base=bz2base build directory (default: 'build.build-base'))z build-lib=Nzs   PKr ] ##1command/__pycache__/build_py.cpython-37.opt-2.pycnu[B YI~d C@szddlZddlZddlZddlmZddlmZddlTddlm Z m Z ddl m Z GdddeZ Gd d d e e ZdS) N)glob)Command)*) convert_path Mixin2to3)logc@seZdZdZdddddgZddgZd diZd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd2d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1S)3build_pyz5"build" pure Python modules (copy to build directory))z build-lib=dzdirectory to "build" (copy) to)compileczcompile .py to .pyc)z no-compileNz!don't compile .py files [default])z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])forcefz2forcibly build everything (ignore file timestamps)r r z no-compilecCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer )selfr?/opt/alt/python37/lib64/python3.7/distutils/command/build_py.pyinitialize_options szbuild_py.initialize_optionsc Cs|ddd|jj|_|jj|_|jj|_i|_|jjrbx&|jjD]\}}t||j|<qHW||_ t |j t syt |j |_ Wn t tfk rtdYnXdS)NZbuild)rr)r r zoptimize must be 0, 1, or 2)Zset_undefined_options distributionpackagesrrritemsrget_data_files data_files isinstancerint ValueErrorAssertionErrorZDistutilsOptionError)rnamepathrrrfinalize_options*s"      zbuild_py.finalize_optionscCs:|jr||jr$||||jdddS)Nr)include_bytecode)r build_modulesrbuild_packagesbuild_package_data byte_compile get_outputs)rrrrrunCs z build_py.runcsg}|js|Sxr|jD]h}||}tjj|jg|d}d|rRt|dfdd|||D}| ||||fqW|S)N.rcsg|]}|dqS)Nr).0file)plenrr tsz+build_py.get_data_files..) rget_package_dirosr#joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r0rras   zbuild_py.get_data_filescs`|jdg|j|g}gx:|D]2}ttj|t|}fdd|Dq&WS)Ncs$g|]}|krtj|r|qSr)r3r#isfile)r.fn)filesrrr1s z,build_py.find_data_files..)rgetrr3r#r4rextend)rrr:ZglobspatternZfilelistr)r@rr7ys  zbuild_py.find_data_filescCshd}x^|jD]T\}}}}xF|D]>}tj||}|tj||jtj|||ddqWq WdS)NF) preserve_mode)rr3r#r4mkpathdirname copy_file)rZlastdirrr:r;r<filenametargetrrrr(s zbuild_py.build_package_datacCs|d}|js&|r tjj|SdSng}x|ry|jd|}Wn*tk rn|d|d|d=Yq,X|d|tjj|Sq,W|jd}|dk r|d||rtjj|SdSdS)Nr,r=r)r5rr3r#r4KeyErrorinsertrA)rrr#tailZpdirrrrr2s(       zbuild_py.get_package_dircCsj|dkr8tj|s td|tj|s8td||rftj|d}tj|rZ|Std|dS)Nr=z%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r3r#existsZDistutilsFileErrorisdirr4r>rwarn)rrrinit_pyrrr check_packages    zbuild_py.check_packagecCs&tj|std||dSdSdS)Nz!file %s (for module %s) not foundFT)r3r#r>rrP)rmodule module_filerrr check_modules zbuild_py.check_modulec Cs|||ttj|d}g}tj|jj}xX|D]P}tj|}||krztjtj |d}| |||fq8| d|q8W|S)Nz*.pyrz excluding %s) rRrr3r#r4abspathrZ script_namesplitextbasenamer8Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_frSrrrfind_package_moduless   zbuild_py.find_package_modulesc Csi}g}x|jD]}|d}d|dd}|d}y||\}}Wn"tk rj||}d}YnX|s|||} |df||<| r||d| ftj||d} | || sq|||| fqW|S)Nr,rrJr-__init__z.py) rr5r4rKr2rRr8r3r#rU) rrrYrSr#rZ module_basercheckedrQrTrrr find_moduless*       zbuild_py.find_modulescCsRg}|jr|||jrNx.|jD]$}||}|||}||q&W|S)N)rrBr]rr2rZ)rrYrrmrrrfind_all_moduless   zbuild_py.find_all_modulescCsdd|DS)NcSsg|] }|dqS)rJr)r.rSrrrr1-sz-build_py.get_source_files..)r_)rrrrget_source_files,szbuild_py.get_source_filescCs$|gt||dg}tjj|S)Nz.py)listr3r#r4)rr;rrSZ outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler-cCs|}g}xx|D]p\}}}|d}||j||}|||r|jr`|tjj|dd|j dkr|tjj||j dqW|dd|j D7}|S)Nr,r=) optimizationrcSs,g|]$\}}}}|D]}tj||qqSr)r3r#r4)r.rr:r;r<rHrrrr1Cs z(build_py.get_outputs..) r_r5rbrr8r importlibutilcache_from_sourcerr)rr%rYZoutputsrrSrTrHrrrr*3s"       zbuild_py.get_outputscCsbt|tr|d}nt|ttfs,td||j||}tj |}| ||j ||ddS)Nr,z:'package' must be a string (dot-separated), list, or tupler)rD) rstrr5ratuple TypeErrorrbrr3r#rFrErG)rrSrTrZoutfiledirrrr build_moduleJs    zbuild_py.build_modulecCs.|}x |D]\}}}||||qWdS)N)r]rk)rrYrrSrTrrrr&Yszbuild_py.build_modulescCsLxF|jD]<}||}|||}x |D]\}}}||||q(WqWdS)N)rr2rZrk)rrrrYZpackage_rSrTrrrr'bs   zbuild_py.build_packagescCstjr|ddSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r)rJ)rr prefixdry_run) sysdont_write_bytecoderPdistutils.utilr)rr3sepr r rmr)rr@r)rlrrrr)vs    zbuild_py.byte_compileN)r-)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optrr$r+rr7r(r2rRrUrZr]r_r`rbr*rkr&r'r)rrrrrs6   '4  rc@seZdZddZddZdS) build_py_2to3cCsLg|_|jr||jr*||||j||jdddS)Nr)r%) updated_filesrr&rr'r(Zrun_2to3r)r*)rrrrr+s zbuild_py_2to3.runcCs,t||||}|dr(|j|d|S)Nr-r)rrkrwr8)rrSrTrZresrrrrkszbuild_py_2to3.build_moduleN)rrrsrtr+rkrrrrrvsrv)r3importlib.utilrdrnrZdistutils.corerZdistutils.errorsrprrZ distutilsrrrvrrrrs   }PKr ]3command/__pycache__/build_clib.cpython-37.opt-2.pycnu[B YI~dV@sPddlZddlmZddlTddlmZddlmZddZGdd d eZ dS) N)Command)*)customize_compiler)logcCsddlm}|dS)Nr)show_compilers)distutils.ccompilerr)rrA/opt/alt/python37/lib64/python3.7/distutils/command/build_clib.pyrs rc@sleZdZdZdddddgZddgZd d d efgZd d ZddZ ddZ ddZ ddZ ddZ ddZd S) build_clibz/build C/C++ libraries used by Python extensions)z build-clib=bz%directory to build C/C++ libraries to)z build-temp=tz,directory to put temporary build by-products)debuggz"compile with debugging information)forcefz2forcibly build everything (ignore file timestamps))z compiler=czspecify the compiler typer rz help-compilerNzlist available compilerscCs:d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) r build_temp libraries include_dirsdefineundefr rcompiler)selfrrr initialize_options4szbuild_clib.initialize_optionscCsh|dddddd|jj|_|jr0||j|jdkrH|jjpDg|_t|jtrd|jtj |_dS)NZbuild)rr )rr)rr)r r )rr) Zset_undefined_optionsZ distributionrcheck_library_listr isinstancestrsplitospathsep)rrrr finalize_optionsDs    zbuild_clib.finalize_optionscCs|js dSddlm}||j|j|jd|_t|j|jdk rN|j|j|j dk rzx |j D]\}}|j ||q`W|j dk rx|j D]}|j |qW| |jdS)Nr) new_compiler)rdry_runr)rrr!rr"rrrZset_include_dirsrZ define_macrorZundefine_macrobuild_libraries)rr!namevalueZmacrorrr run^s        zbuild_clib.runcCst|tstdx|D]z}t|ts:t|dkr:td|\}}t|tsTtdd|ksptjdkrtj|krtd|dt|tstdqWdS) Nz+'libraries' option must be a list of tuplesz*each element of 'libraries' must a 2-tuplezNfirst element of each tuple in 'libraries' must be a string (the library name)/z;bad library name '%s': may not contain directory separatorsrzMsecond element of each tuple in 'libraries' must be a dictionary (build info)) rlistDistutilsSetupErrortuplelenrrsepdict)rrlibr$ build_inforrr rvs"     zbuild_clib.check_library_listcCs0|js dSg}x|jD]\}}||qW|S)N)rappend)rZ lib_nameslib_namer0rrr get_library_namess zbuild_clib.get_library_namescCs^||jg}xH|jD]>\}}|d}|dks@t|ttfsLtd|||qW|S)Nsourceszfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenames)rrgetrr)r+r*extend)r filenamesr2r0r4rrr get_source_filess  zbuild_clib.get_source_filescCsx|D]\}}|d}|dks.t|ttfs:td|t|}td||d}|d}|jj||j |||j d}|jj |||j |j dqWdS)Nr4zfin 'libraries' option (library '%s'), 'sources' must be present and must be a list of source filenameszbuilding '%s' librarymacrosr) output_dirr9rr )r:r ) r5rr)r+r*rinforcompilerr Zcreate_static_libr )rrr2r0r4r9rZobjectsrrr r#s$      zbuild_clib.build_libraries)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsrZ help_optionsrr r&rr3r8r#rrrr r s  $ r ) rZdistutils.corerZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr rrrr s    PKr ]X(command/__pycache__/check.cpython-37.pycnu[B  f@sdZddlmZddlmZyTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_t||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr}|dd}|dkr:|d}nd|d|f}||qWdS)z4Checks if the long string fields are reST-compliant.lineNr(z %s (line %s))r4Zget_long_description_check_rst_datagetr,)rdataZwarningr:rrrr0ns  zcheck.check_restructuredtextc Cs|jjp d}t}tjtfd}d|_d|_d|_t ||j |j |j |j |j|jd}tj|||d}||dy|||Wn:tk r}z|jdd|d ifWdd}~XYnX|jS) z8Returns warnings when the provided data doesn't compile.zsetup.py)Z componentsN)rrrr)rr9z!Could not finish the parsing: %s.)r4Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rr= source_pathparserZsettingsZreporterr@errrr;ys*   $zcheck._check_rst_dataN)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr*r+r,r1r.r0r;rrrrr!$s  r!N)rFZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r/ Exceptionr!rrrrs        PKr ]*R.command/__pycache__/build.cpython-37.opt-2.pycnu[B YI~d@sPddlZddlZddlmZddlmZddlmZddZGdddeZ dS) N)Command)DistutilsOptionError) get_platformcCsddlm}|dS)Nr)show_compilers)Zdistutils.ccompilerr)rrs    PKr ]tmʂ/command/__pycache__/install_data.cpython-37.pycnu[B  f @s<dZddlZddlmZddlmZmZGdddeZdS)zdistutils.command.install_data Implements the Distutils 'install_data' command, for installing platform-independent data files.N)Command) change_root convert_pathc@sHeZdZdZdddgZdgZddZdd Zd d Zd d Z ddZ dS) install_datazinstall data files)z install-dir=dzIbase directory for installing data files (default: installation base dir))zroot=Nzs PKr ]W [[2command/__pycache__/install_scripts.cpython-37.pycnu[B  f@sDdZddlZddlmZddlmZddlmZGdddeZdS)zudistutils.command.install_scripts Implements the Distutils 'install_scripts' command, for installing Python scripts.N)Command)log)ST_MODEc@sLeZdZdZddddgZddgZdd Zd d Zd d ZddZ ddZ dS)install_scriptsz%install scripts (Python or otherwise))z install-dir=dzdirectory to install scripts to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))z skip-buildNzskip the build stepsrz skip-buildcCsd|_d|_d|_d|_dS)Nr) install_dirr build_dir skip_build)selfrF/opt/alt/python37/lib64/python3.7/distutils/command/install_scripts.pyinitialize_optionssz"install_scripts.initialize_optionscCs |dd|dddddS)NZbuild) build_scriptsr Zinstall)rr )rr)r r )Zset_undefined_options)r rrrfinalize_options!s  z install_scripts.finalize_optionscCs|js|d||j|j|_tjdkrxT|D]H}|j rNt d|q6t |t dBd@}t d||t||q6WdS)Nrposixzchanging mode of %simizchanging mode of %s to %o)r Z run_commandZ copy_treer r outfilesosname get_outputsZdry_runrinfostatrchmod)r filemoderrrrun)s  zinstall_scripts.runcCs |jjp gS)N)Z distributionZscripts)r rrr get_inputs8szinstall_scripts.get_inputscCs |jpgS)N)r)r rrrr;szinstall_scripts.get_outputsN) __name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsrrrrrrrrrrsr) __doc__rZdistutils.corerZ distutilsrrrrrrrrs    PKr ]^00,command/__pycache__/bdist_rpm.cpython-37.pycnu[B  fT@sdZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl Tddl mZdd lmZGd d d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z d9d:Z d;d<Z d=d>Z d?S)@ bdist_rpmzcreate an RPM distribution)z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package)z no-autoreqNz+do not automatically calculate dependencies)z keep-tempkz"don't clean up RPM build directory)z no-keep-tempNz&clean up RPM build directory [default])zuse-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)zno-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler)z rpm3-modeNz"RPM 3 compatibility mode (default))z rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nzrr)ZREADMEz README.txtr1rrrr r!r"r#r$r%r&r'r(r)r+r,r-r.r/r4)Z ensure_stringrAZ get_contactZget_contact_emailZensure_string_list isinstancerlistr;r<existsappend_format_changelogrZensure_filename)r5Zreadmer6r6r7rCs>                         zbdist_rpm.finalize_package_datacCstrsz-bdist_rpm._make_spec_file..zbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s NZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r*r!z&%setup -n %{name}-%{unmangled_version}Zbuildr"Zinstallr#)Zcleanr$zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr%N)Zprer&N)Zpostr'N)Zpreunr(N)Zpostunr)N%rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rArSZ get_versionreplacerZget_description subprocessZ getoutputr= splitlinesrIrVrZ get_licenserr4rBgetattrlowerrFrGZget_urlrr.r r;r<r`r3Zget_long_descriptionrr>argvr1openreadr[rr)r5Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultr6r6r7rTs                    zbdist_rpm._make_spec_filecCs|s|Sg}x`|dD]N}|}|ddkrD|d|gq|ddkr\||q|d|qW|ds||d=|S)zKFormat the changelog correctly and convert it to a list of strings rkrrrjrhz )rZr[rVrI)r5rZ new_changelogrcr6r6r7rJ3s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr8rDrCrfrgrTrJr6r6r6r7r sp--)r )__doc__rrr>r;Zdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r6r6r6r7s      PKr ]X.command/__pycache__/check.cpython-37.opt-1.pycnu[B  f@sdZddlmZddlmZyTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@seZdZd ddZddZdS) SilentReporterNrasciireplacec Cs"g|_t||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr}|dd}|dkr:|d}nd|d|f}||qWdS)z4Checks if the long string fields are reST-compliant.lineNr(z %s (line %s))r4Zget_long_description_check_rst_datagetr,)rdataZwarningr:rrrr0ns  zcheck.check_restructuredtextc Cs|jjp d}t}tjtfd}d|_d|_d|_t ||j |j |j |j |j|jd}tj|||d}||dy|||Wn:tk r}z|jdd|d ifWdd}~XYnX|jS) z8Returns warnings when the provided data doesn't compile.zsetup.py)Z componentsN)rrrr)rr9z!Could not finish the parsing: %s.)r4Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rr= source_pathparserZsettingsZreporterr@errrr;ys*   $zcheck._check_rst_dataN)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr*r+r,r1r.r0r;rrrrr!$s  r!N)rFZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r/ Exceptionr!rrrrs        PKr ]>KK,command/__pycache__/bdist_msi.cpython-37.pycnu[B  f@sdZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZdd lmZmZmZdd lmZmZmZmZGd d d eZGdddeZdS)z# Implements the bdist_msi command. N)Command) remove_tree)get_python_version) StrictVersion)DistutilsOptionError) get_platform)log)schemasequencetext) DirectoryFeatureDialogadd_datac@sFeZdZdZddZddZddd Zdd d ZdddZddZ dS)PyDialogzDialog class with a fixed layout: controls at the top, then a ruler, then a list of buttons: back, next, cancel. Optionally a bitmap at the left.cOs>tj|f||jd}d|d}|dd||jddS)zbDialog(database, name, x, y, w, h, attributes, title, first, default, cancel, bitmap=true)$iHZ BottomLinerN)r__init__hlinew)selfargskwZrulerZbmwidthr@/opt/alt/python37/lib64/python3.7/distutils/command/bdist_msi.pyrs  zPyDialog.__init__c Cs|ddddddd|dS) z,Set the title text of the dialog at the top.Title i@<iz{\VerdanaBold10}%sN)r )rtitlerrrr #szPyDialog.titleBackc Cs,|r d}nd}||d|jddd|||S)zAdd a back button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr"8) pushbuttonr)rr nextnameactiveflagsrrrback*sz PyDialog.backCancelc Cs,|r d}nd}||d|jddd|||S)zAdd a cancel button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"i0r%r&r')r(r)rr r)r*r+r,rrrcancel5szPyDialog.cancelNextc Cs,|r d}nd}||d|jddd|||S)zAdd a Next button with a given title, the tab-next button, its name in the Control table, possibly initially disabled. Return the button, so that events can be associatedr#r"r%r&r')r(r)rr r)r*r+r,rrrr)@sz PyDialog.nextc Cs,||t|j|d|jdddd||S)zAdd a button with a given title, the tab-next button, its name in the Control table, giving its x position; the y-position is aligned with the other buttons. Return the button, so that events can be associatedr%r&r'r#)r(intrr)rr*r r)ZxposrrrxbuttonKszPyDialog.xbuttonN)r!r")r.r")r0r") __name__ __module__ __qualname____doc__rr r-r/r)r4rrrrrs  rc@seZdZdZddddefdddd d d d d g ZddddgZddddddddddddddd d!d"d#d$d%gZd&Zd'd(Z d)d*Z d+d,Z d-d.Z d/d0Z d1d2Zd3d4Zd5d6Zd7S)8 bdist_msiz7create a Microsoft Installer (.msi) binary distribution)z bdist-dir=Nz1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s))z keep-tempkzPkeep the pseudo-installation tree around after creating the distribution archive)ztarget-version=Nz6require a specific python version on the target system)zno-target-compilecz/do not compile .py to .pyc on the target system)zno-target-optimizeoz;do not compile .py to .pyo (optimized) on the target system)z dist-dir=dz-directory to put final built distributions in)z skip-buildNz2skip rebuilding everything (for testing/debugging))zinstall-script=NzUbasename of installation script to be run after installation or before deinstallation)zpre-install-script=Nz{Fully qualified filename of a script to be run before any files are installed. This script need not be in the distributionz keep-tempzno-target-compilezno-target-optimizez skip-buildz2.0z2.1z2.2z2.3z2.4z2.5z2.6z2.7z2.8z2.9z3.0z3.1z3.2z3.3z3.4z3.5z3.6z3.7z3.8z3.9XcCsFd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr) bdist_dir plat_name keep_tempZno_target_compileZno_target_optimizetarget_versiondist_dir skip_buildinstall_scriptpre_install_scriptversions)rrrrinitialize_options}szbdist_msi.initialize_optionscCs|dd|jdkr2|dj}tj|d|_t}|jsN|j rN||_|jr|jg|_ |j s|j r|j|krt d|fn t|j|_ |ddd|jrt d|jrx2|j jD]}|jtj|krPqWt d|jd|_dS) NZbdist)rErEZmsizMtarget version can only be %s, or the '--skip-build' option must be specified)rDrD)rArAz5the pre-install-script feature is not yet implementedz(install_script '%s' not found in scripts)Zset_undefined_optionsr@get_finalized_command bdist_baseospathjoinrrC distributionhas_ext_modulesrHrErlist all_versionsrGrFZscriptsbasenameinstall_script_key)rrKZ short_versionZscriptrrrfinalize_optionss:        zbdist_msi.finalize_optionscCs|js|d|jddd}|j|_|j|_d|_|d}d|_d|_|j r|j }|s~|jslt ddt j dd }d |j|f}|d}tj|jd ||_td |j|t jdtj|jd |t jd=||j|j}||}tj|}tj|r0t ||jj!}|j"} | sJ|j#} | sTd} |$} dt%| j&} |j}|j rd|j |f} nd|} t'(|t)| t'*| | |_+t',|j+t-d| fg} |j.p|j/}|r| 0d|f|j1r| 0d|j1f| rt2|j+d| |3|4|5|6|j+7t8|jdrld|j pXd|f}|jj90||j:st;|j|j }|d?d%d@dAd%d)dB|d7d-dCdDd-d)dE|dFd-dGdHdddI| dJdKd-dLdHdMdNdOddd |jd1dPd1d/} | d0d1|j dPd }|d?d%d@dAd%d)d|d7d-d-dDd-d)d|dFd-ddHddd| ddd-ddHdddddd |ddndd d0d9t|d||||||ddd" }|d|dd%ddtddddXd }|dd ddd-d|dd ddd-d|jd#dd d!| dd"} | dddd| j d0d9dd|d"d} | ddst|d||||||d"d"d"d=d> }|d?d-d%dAd%d)d|dFddddwddġ|ddddd-ddơ|dd&d|d&d-dd} | ddF| ddddZddRddddd } | ddˡ|jddd=d!|j dd"d=d!|d"d# ddst|d||||||ddd" }|d͡|dd%ddHdhddС|dd%ddHddddXd }|dd ddAd{d֡|dd ddAd{d١|jddd=d!| dd"} | dddd| dddd@| ddddN| dddd| dddd| dddd| dddd| dddd| d0d9dd-|d"dѡ ddsdS)Nriri,z[ProductName] Setupr#r" r[)Z DefaultUIFontDlgFont8)Z ErrorDialogErrorDlg)Z Progress1ZInstall)Z Progress2Zinstalls)MaintenanceForm_ActionRepair) WhichUsersALLZ TextStyle)rTahoma Nr)Z DlgFontBold8rNr")Z VerdanaBold10VerdanarNr")Z VerdanaRed9rrrr) PrepareDlgz(Not Privileged or Windows9x or Installed) WhichUsersDlgz.Privileged and not Windows9x and not Installed)SelectFeaturesDlgz Not Installedi)MaintenanceTypeDlgz,Installed AND NOT RESUME AND NOT Preselectedi) ProgressDlgNi ActionTextUITextZ FatalErrorZFinishz)[ProductName] Installer ended prematurelyz< Backr)r+r.r!Z Description1rFi@Piz[ProductName] setup ended prematurely because of an error. Your system has not been modified. To install this program at a later time, please run the installation again.Z Description2z.Click the Finish button to exit the Installer.)r*Z EndDialogZExitZUserExitz'[ProductName] Installer was interruptedz[ProductName] setup was interrupted. Your system has not been modified. To install this program at a later time, please run the installation again.Z ExitDialogz&Completing the [ProductName] InstallerZ DescriptionZReturnZ FilesInUseZRetryF)Zbitmaprz{\DlgFontBold8}Files in Useiz8Some files that need to be updated are currently in use.ZText7iJzThe following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.ZListZListBoxkZFileInUseProcessIgnorerreiZ ErrorTextr0r~NxHQZNoZErrorNoYZYesZErrorYesAZAbortZ ErrorAbortC*Z ErrorCancelIZ ErrorIgnoreOZOkZErrorOkRZ ErrorRetryZ CancelDlgiUz;Are you sure you want to cancel [ProductName] installation?9r&r'ZWaitForCostingDlgzRPlease wait while the installer finishes determining your disk space requirements.fr(zOPlease wait while the Installer prepares to guide you through the installation.z&Welcome to the [ProductName] Installernz Pondering...Z ActionDatar0Z SpawnDialogrzSelect Python InstallationsZHintz9Select the Python locations where %s should be installed.zNext >z [TARGETDIR]z [SourceDir])Zorderingz [TARGETDIR%s]z FEATURE_SELECTED AND &Python%s=3ZSpawnWaitDialogrYZFeaturesZ SelectionTreerZFEATUREZPathEditz[FEATURE_SELECTED]1z!FEATURE_SELECTED AND &Python%s<>3ZOtherz$Provide an alternate Python locationZEnableZShowZDisableZHider|Z DiskCostDlgZOKz&{\DlgFontBold8}Disk Space RequirementszFThe disk space required for the installation of the selected features.5aThe highlighted volumes (if any) do not have enough disk space available for the currently selected features. You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).Z VolumeListZVolumeCostListdiz{120}{70}{70}{70}{70}g?rZ AdminInstallzGSelect whether to install [ProductName] for all users of this computer.rrzInstall for all usersZJUSTMEzInstall just for mez [ALLUSERS]zWhichUsers="ALL"rz({\DlgFontBold8}[Progress1] [ProductName]#AzYPlease wait while the Installer [Progress2] [ProductName]. This may take several minutes.Z StatusLabelzStatus:Z ProgressBariz Progress doneZ SetProgressZProgressrz)Welcome to the [ProductName] Setup WizardZBodyText?z:Select whether you want to repair or remove [ProductName].ZRepairRadioGrouplrrrz&Repair [ProductName]ZRemoverzRe&move [ProductName]z [REINSTALL]zMaintenanceForm_Action="Repair"z [Progress1]Z Repairingz [Progress2]ZrepairsZ Reinstallrz[REMOVE]zMaintenanceForm_Action="Remove" ZRemoving Zremoves z MaintenanceForm_Action<>"Change")rqrr rrrr r-r/r)ZeventZcontrolrr(mappingrOrhrHrZ conditionr4Z radiogroupadd)rrqxyrrr ZmodalZmodelessZtrack_disk_spaceZfatalr<Z user_exitZ exit_dialogZinuseerrorr/ZcostingZprepZseldlgorderrorZinstall_other_condZdont_install_other_condZcostZ whichusersgZprogressZmaintrrrrvs                                                               zbdist_msi.add_uicCs<|jrd||j|jf}nd||jf}tj|j|}|S)Nz%s.%s-py%s.msiz %s.%s.msi)rCrArLrMrNrD)rryZ base_namerzrrrris  z bdist_msi.get_installer_filenameN)r5r6r7Z descriptionrZ user_optionsZboolean_optionsrRrrIrUrgrtrsrurvrirrrrr9Ss<    ([66&@r9)r8rcrLZdistutils.corerZdistutils.dir_utilrZdistutils.sysconfigrZdistutils.versionrZdistutils.errorsrZdistutils.utilrZ distutilsrrpr r r r r rrrr9rrrrs       >PKD]n errors.pynu[PKD]_H%2debug.pynu[PKD]0G>dist.pynu[PKD]8hKPP sysconfig.pynu[PKD]yk)$__pycache__/__init__.cpython-36.opt-2.pycnu[PKD]E'l+ + 1&__pycache__/versionpredicate.cpython-36.opt-2.pycnu[PKD] ) #0__pycache__/dep_util.cpython-36.pycnu[PKD]Y/&/&);__pycache__/filelist.cpython-36.opt-1.pycnu[PKD]͢ b__pycache__/dist.cpython-36.pycnu[PKD]Vf__pycache__/core.cpython-36.pycnu[PKD]CC$__pycache__/ccompiler.cpython-36.pycnu[PKD]<<%v__pycache__/util.cpython-36.opt-1.pycnu[PKD]a"-n__pycache__/archive_util.cpython-36.opt-1.pycnu[PKD]=&&#J__pycache__/filelist.cpython-36.pycnu[PKD]6bb'&__pycache__/errors.cpython-36.opt-1.pycnu[PKD]4ScUaUa%__pycache__/dist.cpython-36.opt-2.pycnu[PKD]樤,44(kg__pycache__/_msvccompiler.cpython-36.pycnu[PKD]yE'.__pycache__/unixccompiler.cpython-36.opt-1.pycnu[PKD]nQQ-޷__pycache__/bcppcompiler.cpython-36.opt-1.pycnu[PKD]~#C..$__pycache__/sysconfig.cpython-36.pycnu[PKD] ) )n__pycache__/dep_util.cpython-36.opt-1.pycnu[PKD]^9b b )W __pycache__/dir_util.cpython-36.opt-2.pycnu[PKD]6bb!__pycache__/errors.cpython-36.pycnu[PKD]Vf%.__pycache__/core.cpython-36.opt-1.pycnu[PKD]S۬)I__pycache__/dir_util.cpython-36.opt-1.pycnu[PKD]xx22-`__pycache__/msvccompiler.cpython-36.opt-2.pycnu[PKD]wm)ʓ__pycache__/dep_util.cpython-36.opt-2.pycnu[PKD]cԽ44.__pycache__/_msvccompiler.cpython-36.opt-1.pycnu[PKD]fY &&$*__pycache__/extension.cpython-36.pycnu[PKD]Fk&__pycache__/spawn.cpython-36.opt-1.pycnu[PKD]z!  '{__pycache__/errors.cpython-36.opt-2.pycnu[PKD]^zz#__pycache__/__init__.cpython-36.pycnu[PKD]#611. __pycache__/_msvccompiler.cpython-36.opt-2.pycnu[PKD]5L ! !$<__pycache__/text_file.cpython-36.pycnu[PKD]& )^__pycache__/filelist.cpython-36.opt-2.pycnu[PKD]=[Ä *Qy__pycache__/extension.cpython-36.opt-2.pycnu[PKD]y+/__pycache__/versionpredicate.cpython-36.pycnu[PKD]Fӎ##$e__pycache__/cmd.cpython-36.opt-2.pycnu[PKD]Cֺ"ؾ__pycache__/version.cpython-36.pycnu[PKD]qii&__pycache__/spawn.cpython-36.opt-2.pycnu[PKD]q))'__pycache__/fancy_getopt.cpython-36.pycnu[PKD]eo  '__pycache__/config.cpython-36.opt-2.pycnu[PKD]D;^AA*!__pycache__/ccompiler.cpython-36.opt-2.pycnu[PKD]y1Ec__pycache__/versionpredicate.cpython-36.opt-1.pycnu[PKD] &w__pycache__/debug.cpython-36.opt-1.pycnu[PKD]`E(11-x__pycache__/bcppcompiler.cpython-36.opt-2.pycnu[PKD]f7-!__pycache__/archive_util.cpython-36.opt-2.pycnu[PKD]^zz)__pycache__/__init__.cpython-36.opt-1.pycnu[PKD](ߟ 'פ__pycache__/config.cpython-36.opt-1.pycnu[PKD]~#C..*Ͳ__pycache__/sysconfig.cpython-36.opt-1.pycnu[PKD] &__pycache__/debug.cpython-36.opt-2.pycnu[PKD]yE'(__pycache__/unixccompiler.cpython-36.pycnu[PKD] ư*__pycache__/file_util.cpython-36.opt-2.pycnu[PKD]  __pycache__/debug.cpython-36.pycnu[PKD];T>$ __pycache__/log.cpython-36.opt-2.pycnu[PKD](ߟ !  __pycache__/config.cpython-36.pycnu[PKD]DA88'$ __pycache__/msvccompiler.cpython-36.pycnu[PKD]GPX X %9^ __pycache__/core.cpython-36.opt-2.pycnu[PKD]5L ! !*k __pycache__/text_file.cpython-36.opt-1.pycnu[PKD]f  $J __pycache__/file_util.cpython-36.pycnu[PKD]dS<< __pycache__/util.cpython-36.pycnu[PKD]W6=$ __pycache__/log.cpython-36.opt-1.pycnu[PKD]*&( __pycache__/version.cpython-36.opt-1.pycnu[PKD]B:: __pycache__/cmd.cpython-36.pycnu[PKD]ECC.B __pycache__/msvc9compiler.cpython-36.opt-1.pycnu[PKD]4Sccommand/__pycache__/install_egg_info.cpython-36.pycnu[PKD]2 a׃.Jcommand/__pycache__/clean.cpython-36.opt-1.pycnu[PKD]g222+command/__pycache__/bdist_rpm.cpython-36.opt-1.pycnu[PKD]k2Ycommand/__pycache__/install_scripts.cpython-36.pycnu[PKD]2 a׃(Icommand/__pycache__/clean.cpython-36.pycnu[PKD]k8$command/__pycache__/install_scripts.cpython-36.opt-1.pycnu[PKD]`"H-command/__pycache__/bdist_dumb.cpython-36.pycnu[PKD]B.5  /command/__pycache__/install_data.cpython-36.pycnu[PKD]1command/__pycache__/register.cpython-36.opt-2.pycnu[PKD]Sn 3command/__pycache__/bdist_dumb.cpython-36.opt-2.pycnu[PKD]x 9'command/__pycache__/install_egg_info.cpython-36.opt-1.pycnu[PKD]zL.!3command/__pycache__/bdist.cpython-36.opt-1.pycnu[PKD]J%"$"$1DBcommand/__pycache__/build_py.cpython-36.opt-2.pycnu[PKD]B2fcommand/__pycache__/install_headers.cpython-36.pycnu[PKD]^|3|30mcommand/__pycache__/install.cpython-36.opt-2.pycnu[PKD]t5353(command/__pycache__/sdist.cpython-36.pycnu[PKD]@w.Ncommand/__pycache__/bdist.cpython-36.opt-2.pycnu[PKD] (command/__pycache__/build.cpython-36.pycnu[PKD]>ii.command/__pycache__/check.cpython-36.opt-1.pycnu[PKD]p&&.command/__pycache__/sdist.cpython-36.opt-2.pycnu[PKD]>ii(/command/__pycache__/check.cpython-36.pycnu[PKD]B.5  5Dcommand/__pycache__/install_data.cpython-36.opt-1.pycnu[PKD]q((1 Ncommand/__pycache__/build_py.cpython-36.opt-1.pycnu[PKD])4Ewcommand/__pycache__/install_lib.cpython-36.opt-2.pycnu[PKD]88.command/__pycache__/install_lib.cpython-36.pycnu[PKD]+:command/__pycache__/__init__.cpython-36.pycnu[PKD]FEZ11.command/__pycache__/check.cpython-36.opt-2.pycnu[PKD]Fq 1;command/__pycache__/register.cpython-36.opt-1.pycnu[PKD])AA3xcommand/__pycache__/build_clib.cpython-36.opt-2.pycnu[PKD]YY]33,command/__pycache__/bdist_rpm.cpython-36.pycnu[PKD]$000.command/__pycache__/clean.cpython-36.opt-2.pycnu[PKD]iVV/"command/__pycache__/config.cpython-36.opt-2.pycnu[PKD]kk-=command/__pycache__/build_clib.cpython-36.pycnu[PKD][' @@,Qcommand/__pycache__/build_ext.cpython-36.pycnu[PKD]'W 0command/__pycache__/bdist_wininst.cpython-36.pycnu[PKD]ل8command/__pycache__/install_headers.cpython-36.opt-2.pycnu[PKD]$3Y  9,command/__pycache__/install_egg_info.cpython-36.opt-2.pycnu[PKD]yMi5command/__pycache__/install_data.cpython-36.opt-2.pycnu[PKD]1command/__pycache__/__init__.cpython-36.opt-1.pycnu[PKD]I0TJ(J(/command/__pycache__/config.cpython-36.opt-1.pycnu[PKD]}5|.command/__pycache__/build.cpython-36.opt-2.pycnu[PKD]R8#o o 6command/__pycache__/bdist_wininst.cpython-36.opt-1.pycnu[PKD]7///a(command/__pycache__/upload.cpython-36.opt-2.pycnu[PKD] *dd6<command/__pycache__/build_scripts.cpython-36.opt-2.pycnu[PKD]Q6Lcommand/__pycache__/bdist_wininst.cpython-36.opt-2.pycnu[PKD]I0TJ(J()mcommand/__pycache__/config.cpython-36.pycnu[PKD][' @@2command/__pycache__/build_ext.cpython-36.opt-1.pycnu[PKD]'550command/__pycache__/build_scripts.cpython-36.pycnu[PKD]޴/command/__pycache__/upload.cpython-36.opt-1.pycnu[PKD]27M7M,command/__pycache__/bdist_msi.cpython-36.pycnu[PKD]t5353.Jcommand/__pycache__/sdist.cpython-36.opt-1.pycnu[PKD]zL(6~command/__pycache__/bdist.cpython-36.pycnu[PKD];PoSFF2Scommand/__pycache__/bdist_msi.cpython-36.opt-2.pycnu[PKD]{2vvcommand/build_ext.pynu[PKD] vcommand/install_lib.pynu[PKD];Rcommand/check.pynu[PKD]--'command/register.pynu[PKD],]]*command/upload.pynu[PKD], command/clean.pynu[PKD]* C Ccommand/build_py.pynu[PKD]Juhuh/Gcommand/install.pynu[PKD]'DkTTcommand/bdist_rpm.pynu[PKD]r|yycommand/command_templatenu[PKD]w11command/bdist_dumb.pynu[PKD]d+XXcommand/build_scripts.pynu[PKD]A333command/config.pynu[PKD];gcommand/__init__.pynu[PKD]^90ijcommand/bdist_msi.pynu[PKD]*Rj&Ncommand/install_headers.pynu[PKD]v3;VVcommand/build_clib.pynu[PKD]n*.OOEutil.pynu[PKD]=/w/wimsvc9compiler.pynu[PKD]2PII ccompiler.pynu[PKD]3bb dir_util.pynu[PKD]c+9090 version.pynu[PKD]  file_util.pynu[PKD]IS^""0 core.pynu[PKD]2  ,versionpredicate.pynu[PKD]lW:W:c@bcppcompiler.pynu[PKD]k"# zdep_util.pynu[PKD]۟FF׈cmd.pynu[PKD]$Fq config.pynu[PKD]Q800 text_file.pynu[PKD]\MM_msvccompiler.pynu[PKD][ a__init__.pynu[PKD]fP[5 2 2 bfilelist.pynu[PKvr]ml l dep_util.pyonu[PKvr]R ǡlog.pycnu[PKvr]/..fancy_getopt.pycnu[PKvr]zN֟ __init__.pycnu[PKvr]ml l dep_util.pycnu[PKvr]%z+$+$ Ytext_file.pyonu[PKvr]<#command/install.pycnu[PKvr]% p p 3~#command/install_scripts.pycnu[PKvr]N`ww#command/bdist_dumb.pycnu[PKvr]t. . #command/install_data.pycnu[PKvr]ܚy !#command/clean.pyonu[PKvr]"11_#command/config.pycnu[PKvr]fX,,.#command/build_py.pyonu[PKvr]jKK$command/build_ext.pyonu[PKvr]N`ww`$command/bdist_dumb.pyonu[PKvr]5))t$command/bdist_wininst.pyonu[PKvr]:Oķ$command/build.pyonu[PKvr]=ib8A8A۲$command/sdist.pycnu[PKvr]V11T$command/bdist.pyonu[PKvr]ˣAAA%command/install.pyonu[PKvr]jKKJ%command/build_ext.pycnu[PKvr]O** %filelist.pycnu[PKvr]  %extension.pyonu[PKvr]#˱%archive_util.pyonu[PKvr]O9DD%sysconfig.py.debug-buildnu[PKvr]p.@&versionpredicate.pycnu[PKvr])ca&a&V&cygwinccompiler.pycnu[PKvr]x"..|&fancy_getopt.pyonu[PKvr]5㑂 &dir_util.pycnu[PKvr]e|% % &unixccompiler.pycnu[PKvr]dm5m5 %&unixccompiler.py.distutils-rpathnu[PKvr]8AA'cmd.pycnu[PKvr];(2828]'util.pycnu[PKvr]8AA''cmd.pyonu[PKvr]\4\4 'sysconfig.pycnu[PKvr]!Q  (config.pyonu[PKvr]R (log.pyonu[PKvr]e|% % %(unixccompiler.pyonu[PKvr]b{++AF(emxccompiler.pycnu[PKvr]^ c(spawn.pycnu[PKvr]BAUSS}(msvc9compiler.pyonu[PKvr]Y*(( (version.pyonu[PKvr]ϩڜSST(msvc9compiler.pycnu[PKvr]s q A)ccompiler.pyonu[PKvr])ca&a&P)cygwinccompiler.pyonu[PKvr]!Q )config.pycnu[PKvr] `pp*core.pyonu[PKvr]Ucڍ #*errors.pycnu[PKvr]5㑂 <*dir_util.pyonu[PKvr]#˱HW*archive_util.pycnu[PKvr]++.?U8command/__pycache__/sdist.cpython-38.opt-2.pycnu[PK]}Q ++.48command/__pycache__/build.cpython-38.opt-1.pycnu[PK]hğ^ ^ 68command/__pycache__/bdist_wininst.cpython-38.opt-2.pycnu[PK]*08command/__pycache__/build_scripts.cpython-38.pycnu[PK]Kxu 68command/__pycache__/bdist_wininst.cpython-38.opt-1.pycnu[PK]W5508command/__pycache__/install.cpython-38.opt-1.pycnu[PK]1f] ? ?,)9command/__pycache__/build_ext.cpython-38.pycnu[PK]˄66.Y9command/__pycache__/clean.cpython-38.opt-1.pycnu[PK]*6$b9command/__pycache__/build_scripts.cpython-38.opt-1.pycnu[PK]o4ps9command/__pycache__/install_lib.cpython-38.opt-2.pycnu[PK] (9command/__pycache__/check.cpython-38.pycnu[PK]x89command/__pycache__/install_headers.cpython-38.opt-2.pycnu[PK]]L0L02i9command/__pycache__/bdist_rpm.cpython-38.opt-1.pycnu[PK]GN 39command/__pycache__/install_egg_info.cpython-38.pycnu[PK]N109command/__pycache__/register.cpython-38.opt-2.pycnu[PK]!   99command/__pycache__/install_egg_info.cpython-38.opt-2.pycnu[PK]GN 9!:command/__pycache__/install_egg_info.cpython-38.opt-1.pycnu[PK]<<  -@:command/__pycache__/bdist_dumb.cpython-38.pycnu[PK]0h((+:command/__pycache__/build_py.cpython-38.pycnu[PK]{1E:command/__pycache__/__init__.cpython-38.opt-2.pycnu[PK] . H:command/__pycache__/check.cpython-38.opt-1.pycnu[PK]<<  3~[:command/__pycache__/bdist_dumb.cpython-38.opt-1.pycnu[PK] QLQL2i:command/__pycache__/bdist_msi.cpython-38.opt-1.pycnu[PK] V88(:command/__pycache__/sdist.cpython-38.pycnu[PK]&p!!+:command/__pycache__/__init__.cpython-38.pycnu[PK]Utw~ .(:command/__pycache__/bdist.cpython-38.opt-2.pycnu[PK] V88.;command/__pycache__/sdist.cpython-38.opt-1.pycnu[PK]1f] ? ?2,9;command/__pycache__/build_ext.cpython-38.opt-1.pycnu[PK]5/x;command/__pycache__/upload.cpython-38.opt-2.pycnu[PK]7.;command/__pycache__/check.cpython-38.opt-2.pycnu[PK]̵ή8;command/__pycache__/install_headers.cpython-38.opt-1.pycnu[PK]QN'') ;command/__pycache__/config.cpython-38.pycnu[PK]̵ή2[;command/__pycache__/install_headers.cpython-38.pycnu[PK] ! !1k;command/__pycache__/register.cpython-38.opt-1.pycnu[PK]g[a&4;command/__pycache__/install_lib.cpython-38.opt-1.pycnu[PK]m%1104 <command/__pycache__/install.cpython-38.opt-2.pycnu[PK]QN''/(<<command/__pycache__/config.cpython-38.opt-1.pycnu[PK]GX@@)|d<command/__pycache__/upload.cpython-38.pycnu[PK]$$1y<command/__pycache__/build_py.cpython-38.opt-2.pycnu[PK]W55*x<command/__pycache__/install.cpython-38.pycnu[PK]Y/<command/__pycache__/config.cpython-38.opt-2.pycnu[PK]˄66(<command/__pycache__/clean.cpython-38.pycnu[PK]fgf7f72_<command/__pycache__/build_ext.cpython-38.opt-2.pycnu[PK]g[a&.'/=command/__pycache__/install_lib.cpython-38.pycnu[PK]Z3C=command/__pycache__/build_clib.cpython-38.opt-2.pycnu[PK]ώ\\6T=command/__pycache__/build_scripts.cpython-38.opt-2.pycnu[PK]PB B 3Kd=command/__pycache__/bdist_dumb.cpython-38.opt-2.pycnu[PK]__2q=command/__pycache__/install_scripts.cpython-38.pycnu[PK]5S/z=command/__pycache__/install_data.cpython-38.pycnu[PK]ZLiTT.=command/__pycache__/bdist.cpython-38.opt-1.pycnu[PK]`* / /2=command/__pycache__/bdist_rpm.cpython-38.opt-2.pycnu[PK]?D.$=command/__pycache__/clean.cpython-38.opt-2.pycnu[PK]^+!+!0e=command/__pycache__/bdist_wininst.cpython-38.pycnu[PK] nh8=command/__pycache__/install_scripts.cpython-38.opt-2.pycnu[PK]GX@@/1=command/__pycache__/upload.cpython-38.opt-1.pycnu[PK]&p!!1>command/__pycache__/__init__.cpython-38.opt-1.pycnu[PK]~LFLF2R >command/__pycache__/bdist_msi.cpython-38.opt-2.pycnu[PK]/~00,R>command/__pycache__/bdist_rpm.cpython-38.pycnu[PK].>command/__pycache__/build.cpython-38.opt-2.pycnu[PK])"3 >command/__pycache__/build_clib.cpython-38.opt-1.pycnu[PK]bb5S>command/__pycache__/install_data.cpython-38.opt-2.pycnu[PK]}Q ++(>command/__pycache__/build.cpython-38.pycnu[PK] ! !+>command/__pycache__/register.cpython-38.pycnu[PK]<((1>command/__pycache__/build_py.cpython-38.opt-1.pycnu[PK]__8?command/__pycache__/install_scripts.cpython-38.opt-1.pycnu[PK] LL,?command/__pycache__/bdist_msi.cpython-38.pycnu[PKq|]U]]"]?__pycache__/version.cpython-35.pycnu[PKq|]'((%|?__pycache__/util.cpython-35.opt-2.pycnu[PKq|]ӧ UU!?__pycache__/errors.cpython-35.pycnu[PKq|]B$c?__pycache__/file_util.cpython-35.pycnu[PKq|]bz&O?__pycache__/spawn.cpython-35.opt-1.pycnu[PKq|]teCC(?__pycache__/version.cpython-35.opt-2.pycnu[PKq|]K()7?__pycache__/filelist.cpython-35.opt-2.pycnu[PKq|]BRe e $@__pycache__/log.cpython-35.opt-2.pycnu[PKq|]`0-Y#@__pycache__/archive_util.cpython-35.opt-2.pycnu[PKq|]+7*E6@__pycache__/text_file.cpython-35.opt-2.pycnu[PKq|]*[#_E@__pycache__/__init__.cpython-35.pycnu[PKq|]F ==HG@__pycache__/cmd.cpython-35.pycnu[PKq|]\ @__pycache__/log.cpython-35.pycnu[PKq|]=J.3.3*@__pycache__/sysconfig.cpython-35.opt-1.pycnu[PKq|]dd-@__pycache__/dist.cpython-35.pycnu[PKq|]233#PA__pycache__/dir_util.cpython-35.pycnu[PKq|]WJJ(fiA__pycache__/msvc9compiler.cpython-35.pycnu[PKq|]-!-!-A__pycache__/fancy_getopt.cpython-35.opt-2.pycnu[PKq|]SW+A__pycache__/core.cpython-35.pycnu[PKq|]dd%A__pycache__/dist.cpython-35.opt-1.pycnu[PKq|]] *B__pycache__/extension.cpython-35.opt-1.pycnu[PKq|]] $B__pycache__/extension.cpython-35.pycnu[PKq|]O8,8,->B__pycache__/fancy_getopt.cpython-35.opt-1.pycnu[PKq|]n% % #B__pycache__/dep_util.cpython-35.pycnu[PKq|]gS@@%KB__pycache__/util.cpython-35.opt-1.pycnu[PKq|]*[)-4C__pycache__/__init__.cpython-35.opt-1.pycnu[PKq|]'d&6C__pycache__/spawn.cpython-35.opt-2.pycnu[PKq|]B*EFC__pycache__/file_util.cpython-35.opt-1.pycnu[PKq|]LL*7_C__pycache__/ccompiler.cpython-35.opt-1.pycnu[PKq|]{,,'C__pycache__/fancy_getopt.cpython-35.pycnu[PKq|]% ?D?D.D__pycache__/msvc9compiler.cpython-35.opt-2.pycnu[PKq|]5ڳ 'XD__pycache__/errors.cpython-35.opt-2.pycnu[PKq|]o; ; 1dD__pycache__/versionpredicate.cpython-35.opt-2.pycnu[PKq|]o哠JJ.|pD__pycache__/msvc9compiler.cpython-35.opt-1.pycnu[PKq|]:$ zD__pycache__/debug.cpython-35.pycnu[PKq|]no)D__pycache__/dir_util.cpython-35.opt-2.pycnu[PKq|]z!D__pycache__/config.cpython-35.pycnu[PKq|]\ $D__pycache__/log.cpython-35.opt-1.pycnu[PKq|]k>>%D__pycache__/core.cpython-35.opt-2.pycnu[PKq|]3ˣD D 'D__pycache__/config.cpython-35.opt-2.pycnu[PKq|]iaM44(.E__pycache__/_msvccompiler.cpython-35.pycnu[PKq|]jU(U()6E__pycache__/filelist.cpython-35.opt-1.pycnu[PKq|]MZuu)2_E__pycache__/dep_util.cpython-35.opt-2.pycnu[PKq|]u44.eE__pycache__/_msvccompiler.cpython-35.opt-1.pycnu[PKq|]$E__pycache__/ccompiler.cpython-35.pycnu[PKq|]E>E>-^"F__pycache__/msvccompiler.cpython-35.opt-1.pycnu[PKq|]BMM'aF__pycache__/bcppcompiler.cpython-35.pycnu[PKq|]F ==$}F__pycache__/cmd.cpython-35.opt-1.pycnu[PKq|]*|g( F__pycache__/unixccompiler.cpython-35.pycnu[PKq|]B'F__pycache__/archive_util.cpython-35.pycnu[PKq|]gS@@F__pycache__/util.cpython-35.pycnu[PKq|]HxY$jj%4G__pycache__/dist.cpython-35.opt-2.pycnu[PKq|]z'8G__pycache__/config.cpython-35.opt-1.pycnu[PKq|]B-iG__pycache__/archive_util.cpython-35.opt-1.pycnu[PKq|]SW%ZG__pycache__/core.cpython-35.opt-1.pycnu[PKq|]"Z 8 8-4G__pycache__/msvccompiler.cpython-35.opt-2.pycnu[PKq|] .##0H__pycache__/cygwinccompiler.cpython-35.opt-1.pycnu[PKq|]T&AH__pycache__/debug.cpython-35.opt-2.pycnu[PKq|]891CH__pycache__/versionpredicate.cpython-35.opt-1.pycnu[PKq|]E )sXH__pycache__/__init__.cpython-35.opt-2.pycnu[PKq|]-YH__pycache__/bcppcompiler.cpython-35.opt-2.pycnu[PKq|]E>E>'uH__pycache__/msvccompiler.cpython-35.pycnu[PKq|] .##*H__pycache__/cygwinccompiler.cpython-35.pycnu[PKq|]S9""$H__pycache__/text_file.cpython-35.pycnu[PKq|]e:`G`G*H__pycache__/ccompiler.cpython-35.opt-2.pycnu[PKq|]t$A<<*BI__pycache__/extension.cpython-35.opt-2.pycnu[PKq|]ӧ UU'oRI__pycache__/errors.cpython-35.opt-1.pycnu[PKq|]=J.3.3$iI__pycache__/sysconfig.cpython-35.pycnu[PKq|]N%%$I__pycache__/cmd.cpython-35.opt-2.pycnu[PKq|]bz I__pycache__/spawn.cpython-35.pycnu[PKq|]89+I__pycache__/versionpredicate.cpython-35.pycnu[PKq|]BMM-"I__pycache__/bcppcompiler.cpython-35.opt-1.pycnu[PKq|].alP**( J__pycache__/version.cpython-35.opt-1.pycnu[PKq|]eaJ33*N(J__pycache__/file_util.cpython-35.opt-2.pycnu[PKq|]jU(U(#8J__pycache__/filelist.cpython-35.pycnu[PKq|]=T0aJ__pycache__/cygwinccompiler.cpython-35.opt-2.pycnu[PKq|],%%*rJ__pycache__/sysconfig.cpython-35.opt-2.pycnu[PKq|]*|g.NJ__pycache__/unixccompiler.cpython-35.opt-1.pycnu[PKq|]F11.aJ__pycache__/_msvccompiler.cpython-35.opt-2.pycnu[PKq|]n% % )@J__pycache__/dep_util.cpython-35.opt-1.pycnu[PKq|]S9""*K__pycache__/text_file.cpython-35.opt-1.pycnu[PKq|]:$ &#K__pycache__/debug.cpython-35.opt-1.pycnu[PKq|]V44.$K__pycache__/unixccompiler.cpython-35.opt-2.pycnu[PKq|]233)@K__pycache__/dir_util.cpython-35.opt-1.pycnu[PKq|]Z# # 8YKcommand/__pycache__/install_scripts.cpython-35.opt-1.pycnu[PKq|]n,n,1bKcommand/__pycache__/build_py.cpython-35.opt-1.pycnu[PKq|]𶃗TT2uKcommand/__pycache__/bdist_msi.cpython-35.opt-1.pycnu[PKq|]kjn n 9nKcommand/__pycache__/install_egg_info.cpython-35.opt-1.pycnu[PKq|] 4EKcommand/__pycache__/install_lib.cpython-35.opt-1.pycnu[PKq|]~U##+Lcommand/__pycache__/register.cpython-35.pycnu[PKq|]I##2+Lcommand/__pycache__/install_headers.cpython-35.pycnu[PKq|]Ԧ;;+Q3Lcommand/__pycache__/__init__.cpython-35.pycnu[PKq|] __.5Lcommand/__pycache__/check.cpython-35.opt-1.pycnu[PKq|]662JLcommand/__pycache__/bdist_rpm.cpython-35.opt-1.pycnu[PKq|].6j5 5 5Lcommand/__pycache__/install_data.cpython-35.opt-2.pycnu[PKq|]Qii-Lcommand/__pycache__/bdist_dumb.cpython-35.pycnu[PKq|].LLcommand/__pycache__/clean.cpython-35.opt-2.pycnu[PKq|].~*7*7(]Lcommand/__pycache__/sdist.cpython-35.pycnu[PKq|]7""6Lcommand/__pycache__/bdist_wininst.cpython-35.opt-1.pycnu[PKq|]0zT,,+Lcommand/__pycache__/build_py.cpython-35.pycnu[PKq|]3^F^F2#,Mcommand/__pycache__/build_ext.cpython-35.opt-1.pycnu[PKq|]'ENPP0rMcommand/__pycache__/build_scripts.cpython-35.pycnu[PKq|]Qii3Mcommand/__pycache__/bdist_dumb.cpython-35.opt-1.pycnu[PKq|]"00)_Mcommand/__pycache__/upload.cpython-35.pycnu[PKq|]Z# # 2Mcommand/__pycache__/install_scripts.cpython-35.pycnu[PKq|].mMcommand/__pycache__/bdist.cpython-35.opt-1.pycnu[PKq|]aG|:|:*Mcommand/__pycache__/install.cpython-35.pycnu[PKq|]Ԧ;;1jNcommand/__pycache__/__init__.cpython-35.opt-1.pycnu[PKq|]8Ncommand/__pycache__/install_scripts.cpython-35.opt-2.pycnu[PKq|]U**. Ncommand/__pycache__/sdist.cpython-35.opt-2.pycnu[PKq|] .6Ncommand/__pycache__/install_lib.cpython-35.pycnu[PKq|]9u9#45MNcommand/__pycache__/install_lib.cpython-35.opt-2.pycnu[PKq|]E!TT,'aNcommand/__pycache__/bdist_msi.cpython-35.pycnu[PKq|]  .Ncommand/__pycache__/clean.cpython-35.opt-1.pycnu[PKq|] 4747,Ncommand/__pycache__/bdist_rpm.cpython-35.pycnu[PKq|]'ENPP6Ncommand/__pycache__/build_scripts.cpython-35.opt-1.pycnu[PKq|]1= Ocommand/__pycache__/register.cpython-35.opt-2.pycnu[PKq|]N!3)Ocommand/__pycache__/bdist_dumb.cpython-35.opt-2.pycnu[PKq|]֦SS.r8Ocommand/__pycache__/build.cpython-35.opt-2.pycnu[PKq|]aG|:|:0#IOcommand/__pycache__/install.cpython-35.opt-1.pycnu[PKq|]V 9Ocommand/__pycache__/install_egg_info.cpython-35.opt-2.pycnu[PKq|]_g++)Ocommand/__pycache__/config.cpython-35.pycnu[PKq|]I##8uOcommand/__pycache__/install_headers.cpython-35.opt-1.pycnu[PKq|]ӌ9/Ocommand/__pycache__/config.cpython-35.opt-2.pycnu[PKq|]kjn n 3ZOcommand/__pycache__/install_egg_info.cpython-35.pycnu[PKq|]3^F^F,+Ocommand/__pycache__/build_ext.cpython-35.pycnu[PKq|]s3##02Pcommand/__pycache__/bdist_wininst.cpython-35.pycnu[PKq|]z 5[VPcommand/__pycache__/install_data.cpython-35.opt-1.pycnu[PKq|]P >.`Pcommand/__pycache__/bdist.cpython-35.opt-2.pycnu[PKq|]>2Qcommand/__pycache__/build_ext.cpython-35.opt-2.pycnu[PKq|]EY."."6Rcommand/__pycache__/bdist_wininst.cpython-35.opt-2.pycnu[PKq|]~U##1z$Rcommand/__pycache__/register.cpython-35.opt-1.pycnu[PKq|]-HRcommand/__pycache__/build_clib.cpython-35.pycnu[PKq|]44bb-r__pycache__/bcppcompiler.cpython-37.opt-1.pycnu[PKr ]I- #gs__pycache__/dep_util.cpython-37.pycnu[PKr ][3z!z!*[ s__pycache__/sysconfig.cpython-37.opt-2.pycnu[PKr ]DbBB-/Bs__pycache__/bcppcompiler.cpython-37.opt-2.pycnu[PKr ]{:Zs__pycache__/dist.cpython-37.pycnu[PKr ]0ρρ$s__pycache__/ccompiler.cpython-37.pycnu[PKr ] O *ct__pycache__/text_file.cpython-37.opt-1.pycnu[PKr ]CC(t__pycache__/msvc9compiler.cpython-37.pycnu[PKr ]ℂ $Tt__pycache__/log.cpython-37.opt-1.pycnu[PKr ]I- )t__pycache__/dep_util.cpython-37.opt-1.pycnu[PKr ]"`ll$t__pycache__/cmd.cpython-37.opt-2.pycnu[PKr ]Rd .%nt__pycache__/core.cpython-37.opt-1.pycnu[PKr ]^{0  'u__pycache__/config.cpython-37.opt-2.pycnu[PKr ] .#u__pycache__/unixccompiler.cpython-37.opt-1.pycnu[PKr ]kKX=X=.1?u__pycache__/msvc9compiler.cpython-37.opt-2.pycnu[PKr ] "11.|u__pycache__/_msvccompiler.cpython-37.opt-1.pycnu[PKr ]iu5b5b%cu__pycache__/dist.cpython-37.opt-2.pycnu[PKr ]0))v__pycache__/__init__.cpython-37.opt-2.pycnu[PKr ]V v__pycache__/spawn.cpython-37.pycnu[PKr ] l 'j&v__pycache__/config.cpython-37.opt-1.pycnu[PKr ]*D8ss'[4v__pycache__/errors.cpython-37.opt-1.pycnu[PKr ]M7-%Jv__pycache__/archive_util.cpython-37.opt-2.pycnu[PKr ]b //$ \v__pycache__/sysconfig.cpython-37.pycnu[PKr ]aB@M!M!*zv__pycache__/cygwinccompiler.cpython-37.pycnu[PKr ] $!v__pycache__/extension.cpython-37.pycnu[PKr ]b //*kv__pycache__/sysconfig.cpython-37.opt-1.pycnu[PKr ]*D8ss!v__pycache__/errors.cpython-37.pycnu[PKr ]{:% w__pycache__/dist.cpython-37.opt-1.pycnu[PKr ][-,Q6Q6$~w__pycache__/cmd.cpython-37.opt-1.pycnu[PKr ]H((-#w__pycache__/fancy_getopt.cpython-37.opt-1.pycnu[PKr ]#00bw__pycache__/cygwinccompiler.cpython-37.opt-2.pycnu[PKr ]Ҳv)x__pycache__/dir_util.cpython-37.opt-1.pycnu[PKr ]kn?z##%&x__pycache__/util.cpython-37.opt-2.pycnu[PKr ]2-Kx__pycache__/archive_util.cpython-37.opt-1.pycnu[PKr ]UQ+dx__pycache__/versionpredicate.cpython-37.pycnu[PKr ]]88-9yx__pycache__/msvccompiler.cpython-37.opt-1.pycnu[PKr ] l !~x__pycache__/config.cpython-37.pycnu[PKr ]{k&k&#ix__pycache__/filelist.cpython-37.pycnu[PKr ])'x__pycache__/dep_util.cpython-37.opt-2.pycnu[PKr ]m m )}x__pycache__/dir_util.cpython-37.opt-2.pycnu[PKr ]}&Cx__pycache__/debug.cpython-37.opt-2.pycnu[PKr ]z"fx__pycache__/version.cpython-37.pycnu[PKr ]0x(::qy__pycache__/util.cpython-37.pycnu[PKr ](-)Sy__pycache__/filelist.cpython-37.opt-2.pycnu[PKr ]{  $ny__pycache__/file_util.cpython-37.pycnu[PKr ]šn < < 1My__pycache__/versionpredicate.cpython-37.opt-2.pycnu[PKr ]x,,.y__pycache__/_msvccompiler.cpython-37.opt-2.pycnu[PKr ]Ҳv#y__pycache__/dir_util.cpython-37.pycnu[PKr ]{  *y__pycache__/file_util.cpython-37.opt-1.pycnu[PKr ]DS *[y__pycache__/text_file.cpython-37.opt-2.pycnu[PKr ]2'y__pycache__/archive_util.cpython-37.pycnu[PKr ]4z)z__pycache__/__init__.cpython-37.opt-1.pycnu[PKr ]Rd .}z__pycache__/core.cpython-37.pycnu[PKr ]@|% % '/z__pycache__/errors.cpython-37.opt-2.pycnu[PKr ] *;z__pycache__/extension.cpython-37.opt-1.pycnu[PKr ]9::%gVz__pycache__/util.cpython-37.opt-1.pycnu[PKr ]r'22-z__pycache__/msvccompiler.cpython-37.opt-2.pycnu[PKr ]$T T *z__pycache__/extension.cpython-37.opt-2.pycnu[PKr ]aB@M!M!0z__pycache__/cygwinccompiler.cpython-37.opt-1.pycnu[PKr ]!nJn&5z__pycache__/spawn.cpython-37.opt-2.pycnu[PKr ]nuKB&&)r{__pycache__/filelist.cpython-37.opt-1.pycnu[PKr ]32&){__pycache__/debug.cpython-37.opt-1.pycnu[PKr ]<j$*{__pycache__/log.cpython-37.opt-2.pycnu[PKr ]vBPP*"4{__pycache__/ccompiler.cpython-37.opt-1.pycnu[PKr ]dPϷ(̵{__pycache__/version.cpython-37.opt-2.pycnu[PKr ]4z#{__pycache__/__init__.cpython-37.pycnu[PKr ]UQ1{__pycache__/versionpredicate.cpython-37.opt-1.pycnu[PKr ]frbb.{__pycache__/unixccompiler.cpython-37.opt-2.pycnu[PKr ]]88'{__pycache__/msvccompiler.cpython-37.pycnu[PKr ]32 .|__pycache__/debug.cpython-37.pycnu[PKr ]5-"/|__pycache__/fancy_getopt.cpython-37.opt-2.pycnu[PKr ] (fM|__pycache__/unixccompiler.cpython-37.pycnu[PKr ]V&h|__pycache__/spawn.cpython-37.opt-1.pycnu[PKr ]ℂ ||__pycache__/log.cpython-37.pycnu[PKr ]#dCC.D|__pycache__/msvc9compiler.cpython-37.opt-1.pycnu[PKr ]>44bb'K|__pycache__/bcppcompiler.cpython-37.pycnu[PKr ]N"]1]1(|__pycache__/_msvccompiler.cpython-37.pycnu[PKr ]hv)v)'}__pycache__/fancy_getopt.cpython-37.pycnu[PKr ][-,Q6Q6?}__pycache__/cmd.cpython-37.pycnu[PKr ]뭲(%v}__pycache__/version.cpython-37.opt-1.pycnu[PKr ] rArA* }__pycache__/ccompiler.cpython-37.opt-2.pycnu[PKr ]{oo0}command/__pycache__/bdist_wininst.cpython-37.pycnu[PKr ]>64}command/__pycache__/install_lib.cpython-37.opt-2.pycnu[PKr ]r++.~command/__pycache__/sdist.cpython-37.opt-2.pycnu[PKr ]@92~command/__pycache__/install_egg_info.cpython-37.opt-2.pycnu[PKr ]E*!!1;~command/__pycache__/register.cpython-37.opt-1.pycnu[PKr ]n))(a]~command/__pycache__/clean.cpython-37.pycnu[PKr ]8e~command/__pycache__/install_headers.cpython-37.opt-2.pycnu[PKr ]D(El~command/__pycache__/build.cpython-37.pycnu[PKr ]Y556{~command/__pycache__/build_scripts.cpython-37.opt-2.pycnu[PKr ]J8f4408~command/__pycache__/install.cpython-37.opt-1.pycnu[PKr ]>J))1z~command/__pycache__/register.cpython-37.opt-2.pycnu[PKr ]==,~command/__pycache__/build_ext.cpython-37.pycnu[PKr ]8;r) command/__pycache__/upload.cpython-37.pycnu[PKr ]W [[8E/command/__pycache__/install_scripts.cpython-37.opt-1.pycnu[PKr ]\O -8command/__pycache__/bdist_dumb.cpython-37.pycnu[PKr ]n)).SFcommand/__pycache__/clean.cpython-37.opt-1.pycnu[PKr ]ޮ/Ncommand/__pycache__/config.cpython-37.opt-2.pycnu[PKr ]8;r/jcommand/__pycache__/upload.cpython-37.opt-1.pycnu[PKr ]鼡V-T~command/__pycache__/build_clib.cpython-37.pycnu[PKr ]\O 3Ñcommand/__pycache__/bdist_dumb.cpython-37.opt-1.pycnu[PKr ][k*biEiE2command/__pycache__/bdist_msi.cpython-37.opt-2.pycnu[PKr ]& & 3command/__pycache__/bdist_dumb.cpython-37.opt-2.pycnu[PKr ]Կ1hcommand/__pycache__/__init__.cpython-37.opt-2.pycnu[PKr ],J/J/2command/__pycache__/bdist_rpm.cpython-37.opt-2.pycnu[PKr ]ٝ''/0%command/__pycache__/config.cpython-37.opt-1.pycnu[PKr ]bO.`Mcommand/__pycache__/install_lib.cpython-37.pycnu[PKr ]LV88.acommand/__pycache__/sdist.cpython-37.opt-1.pycnu[PKr ]'Mn2command/__pycache__/install_headers.cpython-37.pycnu[PKr ]Iaa/command/__pycache__/upload.cpython-37.opt-2.pycnu[PKr ]h6[command/__pycache__/build_scripts.cpython-37.opt-1.pycnu[PKr ]==2ƀcommand/__pycache__/build_ext.cpython-37.opt-1.pycnu[PKr ]bO4command/__pycache__/install_lib.cpython-37.opt-1.pycnu[PKr ]J8f44*command/__pycache__/install.cpython-37.pycnu[PKr ] .Ncommand/__pycache__/bdist.cpython-37.opt-2.pycnu[PKr ]Q.[command/__pycache__/check.cpython-37.opt-2.pycnu[PKr ]?CC(lcommand/__pycache__/bdist.cpython-37.pycnu[PKr ]Bx 3{command/__pycache__/install_egg_info.cpython-37.pycnu[PKr ]h0command/__pycache__/build_scripts.cpython-37.pycnu[PKr ]!nKnK2command/__pycache__/bdist_msi.cpython-37.opt-1.pycnu[PKr ]Mc=YY5|command/__pycache__/install_data.cpython-37.opt-2.pycnu[PKr ]ٝ''):command/__pycache__/config.cpython-37.pycnu[PKr ]E*!!+dcommand/__pycache__/register.cpython-37.pycnu[PKr ]5k66command/__pycache__/bdist_wininst.cpython-37.opt-2.pycnu[PKr ]鼡V3Ucommand/__pycache__/build_clib.cpython-37.opt-1.pycnu[PKr ] n ډ002Vicommand/__pycache__/bdist_rpm.cpython-37.opt-1.pycnu[PKr ]?CC.Acommand/__pycache__/bdist.cpython-37.opt-1.pycnu[PKr ]Bx 9⨂command/__pycache__/install_egg_info.cpython-37.opt-1.pycnu[PKr ]ChCJ((1ﴂcommand/__pycache__/__init__.cpython-37.opt-1.pycnu[PKr ]D.xcommand/__pycache__/build.cpython-37.opt-1.pycnu[PKr ]k--6Ƃcommand/__pycache__/bdist_wininst.cpython-37.opt-1.pycnu[PKr ]Y,000icommand/__pycache__/install.cpython-37.opt-2.pycnu[PKr ]tmʂ5command/__pycache__/install_data.cpython-37.opt-1.pycnu[PKr ]F'[([(1 command/__pycache__/build_py.cpython-37.opt-1.pycnu[PKr ]ȤS8Icommand/__pycache__/install_scripts.cpython-37.opt-2.pycnu[PKr ]'Mn8Qcommand/__pycache__/install_headers.cpython-37.opt-1.pycnu[PKr ]LV88(Xcommand/__pycache__/sdist.cpython-37.pycnu[PKr ]OF662ܑcommand/__pycache__/build_ext.cpython-37.opt-2.pycnu[PKr ]((+Eȃcommand/__pycache__/build_py.cpython-37.pycnu[PKr ]ChCJ((+4command/__pycache__/__init__.cpython-37.pycnu[PKr ]-.command/__pycache__/clean.cpython-37.opt-2.pycnu[PKr ] ##1command/__pycache__/build_py.cpython-37.opt-2.pycnu[PKr ]3command/__pycache__/build_clib.cpython-37.opt-2.pycnu[PKr ]X(91command/__pycache__/check.cpython-37.pycnu[PKr ]*R.uDcommand/__pycache__/build.cpython-37.opt-2.pycnu[PKr ]tmʂ/Scommand/__pycache__/install_data.cpython-37.pycnu[PKr ]W [[2\command/__pycache__/install_scripts.cpython-37.pycnu[PKr ]^00,ecommand/__pycache__/bdist_rpm.cpython-37.pycnu[PKr ]X.command/__pycache__/check.cpython-37.opt-1.pycnu[PKr ]>KK,梅command/__pycache__/bdist_msi.cpython-37.pycnu[PK  5