From bec67c0457f32df90a70d8df2e26fe3c63caec50 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Fri, 18 Mar 2011 17:34:56 -0400 Subject: [PATCH] Vendorized applib. Will likely use many of it's helpers. --- clint/packages/applib/__init__.py | 4 + clint/packages/applib/_cmdln.py | 1843 +++++++++++++++++ clint/packages/applib/_compression.py | 213 ++ clint/packages/applib/_proc.py | 155 ++ clint/packages/applib/_simpledb.py | 269 +++ clint/packages/applib/base.py | 70 + clint/packages/applib/location.py | 14 + clint/packages/applib/log.py | 336 +++ clint/packages/applib/misc.py | 104 + clint/packages/applib/sh.py | 203 ++ clint/packages/applib/test/all.py | 195 ++ .../test/fixtures/TracProjectMenu-1.0.tar.gz | Bin 0 -> 1943 bytes .../applib/test/fixtures/airi-0.0.1.tar.gz | Bin 0 -> 252631 bytes .../fixtures/generator_tools-0.3.5.tar.gz | Bin 0 -> 87801 bytes .../applib/test/fixtures/libtele-0.2.tar.gz | Bin 0 -> 87618 bytes clint/packages/applib/textui.py | 359 ++++ 16 files changed, 3765 insertions(+) create mode 100644 clint/packages/applib/__init__.py create mode 100644 clint/packages/applib/_cmdln.py create mode 100644 clint/packages/applib/_compression.py create mode 100644 clint/packages/applib/_proc.py create mode 100644 clint/packages/applib/_simpledb.py create mode 100644 clint/packages/applib/base.py create mode 100644 clint/packages/applib/location.py create mode 100644 clint/packages/applib/log.py create mode 100644 clint/packages/applib/misc.py create mode 100644 clint/packages/applib/sh.py create mode 100644 clint/packages/applib/test/all.py create mode 100644 clint/packages/applib/test/fixtures/TracProjectMenu-1.0.tar.gz create mode 100644 clint/packages/applib/test/fixtures/airi-0.0.1.tar.gz create mode 100644 clint/packages/applib/test/fixtures/generator_tools-0.3.5.tar.gz create mode 100644 clint/packages/applib/test/fixtures/libtele-0.2.tar.gz create mode 100644 clint/packages/applib/textui.py diff --git a/clint/packages/applib/__init__.py b/clint/packages/applib/__init__.py new file mode 100644 index 0000000..1c0f215 --- /dev/null +++ b/clint/packages/applib/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +__version_info__ = ('1', '2') +__version__ = '.'.join(__version_info__) # + '.dev' diff --git a/clint/packages/applib/_cmdln.py b/clint/packages/applib/_cmdln.py new file mode 100644 index 0000000..be17001 --- /dev/null +++ b/clint/packages/applib/_cmdln.py @@ -0,0 +1,1843 @@ +#!/usr/bin/env python +# Copyright (c) 2002-2009 ActiveState Software Inc. +# License: MIT (see LICENSE.txt for license details) +# Author: Trent Mick + +"""An improvement on Python's standard cmd.py module. + +As with cmd.py, this module provides "a simple framework for writing +line-oriented command intepreters." This module provides a 'RawCmdln' +class that fixes some design flaws in cmd.Cmd, making it more scalable +and nicer to use for good 'cvs'- or 'svn'-style command line interfaces +or simple shells. And it provides a 'Cmdln' class that add +optparse-based option processing. Basically you use it like this: + + import cmdln + + class MySVN(cmdln.Cmdln): + name = "svn" + + @cmdln.alias('stat', 'st') + @cmdln.option('-v', '--verbose', action='store_true' + help='print verbose information') + def do_status(self, subcmd, opts, *paths): + print "handle 'svn status' command" + + #... + + if __name__ == "__main__": + shell = MySVN() + retval = shell.main() + sys.exit(retval) + +See the README.txt or for more +details. +""" + +__version_info__ = (1, 2, 0) +__version__ = '.'.join(map(str, __version_info__)) + +import os +from os import path +import sys +import re +import types +import cmd +import optparse +from pprint import pprint +try: + import ConfigParser +except ImportError: + import configparser as ConfigParser # python3 +import datetime + + +if sys.hexversion > 0x03000000: + ClassType = type +else: + ClassType = types.ClassType + + +#---- globals + +LOOP_ALWAYS, LOOP_NEVER, LOOP_IF_EMPTY = range(3) + +# An unspecified optional argument when None is a meaningful value. +_NOT_SPECIFIED = ("Not", "Specified") + +# Pattern to match a TypeError message from a call that +# failed because of incorrect number of arguments (see +# Python/getargs.c). +_INCORRECT_NUM_ARGS_RE = re.compile( + r"(takes [\w ]+ )(\d+)[\w ]*( arguments? \()(\d+)( given\))") + + + +#---- exceptions + +class CmdlnError(Exception): + """A cmdln.py usage error.""" + def __init__(self, msg): + self.msg = msg + def __str__(self): + return self.msg + +class CmdlnUserError(Exception): + """An error by a user of a cmdln-based tool/shell.""" + pass + + + +#---- public methods and classes + +def alias(*aliases): + """Decorator to add aliases for Cmdln.do_* command handlers. + + Example: + class MyShell(cmdln.Cmdln): + @cmdln.alias("!", "sh") + def do_shell(self, argv): + #...implement 'shell' command + """ + def decorate(f): + if not hasattr(f, "aliases"): + f.aliases = [] + f.aliases += aliases + return f + return decorate + + +class RawCmdln(cmd.Cmd): + """An improved (on cmd.Cmd) framework for building multi-subcommand + scripts (think "svn" & "cvs") and simple shells (think "pdb" and + "gdb"). + + A simple example: + + import cmdln + + class MySVN(cmdln.RawCmdln): + name = "svn" + + @cmdln.aliases('stat', 'st') + def do_status(self, argv): + print "handle 'svn status' command" + + if __name__ == "__main__": + shell = MySVN() + retval = shell.main() + sys.exit(retval) + """ + name = None # if unset, defaults basename(sys.argv[0]) + prompt = None # if unset, defaults to self.name+"> " + version = None # if set, default top-level options include --version + + # Default messages for some 'help' command error cases. + # They are interpolated with one arg: the command. + nohelp = "no help on '%s'" + unknowncmd = "unknown command: '%s'" + + helpindent = '' # string with which to indent help output + + def __init__(self, completekey='tab', + stdin=None, stdout=None, stderr=None): + """Cmdln(completekey='tab', stdin=None, stdout=None, stderr=None) + + The optional argument 'completekey' is the readline name of a + completion key; it defaults to the Tab key. If completekey is + not None and the readline module is available, command completion + is done automatically. + + The optional arguments 'stdin', 'stdout' and 'stderr' specify + alternate input, output and error output file objects; if not + specified, sys.* are used. + + If 'stdout' but not 'stderr' is specified, stdout is used for + error output. This is to provide least surprise for users used + to only the 'stdin' and 'stdout' options with cmd.Cmd. + """ + if self.name is None: + self.name = os.path.basename(sys.argv[0]) + if self.prompt is None: + self.prompt = self.name+"> " + self._name_str = self._str(self.name) + self._prompt_str = self._str(self.prompt) + if stdin is not None: + self.stdin = stdin + else: + self.stdin = sys.stdin + if stdout is not None: + self.stdout = stdout + else: + self.stdout = sys.stdout + if stderr is not None: + self.stderr = stderr + elif stdout is not None: + self.stderr = stdout + else: + self.stderr = sys.stderr + self.cmdqueue = [] + self.completekey = completekey + self.cmdlooping = False + + def get_option_defaults(self, cmdname): + """Return default values for command options + + For all options registered for the given command (`cmdname`), return + the default values as a dictionary (option name as keys, default value + as values) + + If `cmdname` is None, return default for top-level options + """ + return {} + + def get_optparser(self): + """Hook for subclasses to set the option parser for the + top-level command/shell. + + NOTE: you may not override this method anymore; cmdln.option decorator + can now be used on the class itself to create toplevel options. + + This option parser is retrieved and used by `.main()' to handle + top-level options. + + The default implements a single '-h|--help' option. Sub-classes + can return None to have no options at the top-level. Typically + an instance of CmdlnOptionParser should be returned. + """ + return self._create_toplevel_optparser() + + def _create_toplevel_optparser(self): + version = (self.version is not None + and "%s %s" % (self._name_str, self.version) + or None) + parser = CmdlnOptionParser(self, version=version) + + # if ``useconfig`` is used, add the -c option to specify extra config + # file + # if hasattr(self, 'defaultsconfig'): + # parser.add_option('-c', '--configfile', + # dest='configfile', + # help="specify the config file location", + # default=None) + + # add toplevel options + if hasattr(self, 'toplevel_optparser_options'): + for args, kwargs in self.toplevel_optparser_options: + parser.add_option(*args, **kwargs) + + return parser + + def postoptparse(self): + """Hook method executed just after `.main()' parses top-level + options. + + When called `self.options' holds the results of the option parse. + """ + + def main(self, argv=None, loop=LOOP_NEVER): + """A possible mainline handler for a script, like so: + + import cmdln + class MyCmd(cmdln.Cmdln): + name = "mycmd" + ... + + if __name__ == "__main__": + MyCmd().main() + + By default this will use sys.argv to issue a single command to + 'MyCmd', then exit. The 'loop' argument can be use to control + interactive shell behaviour. + + Arguments: + "argv" (optional, default sys.argv) is the command to run. + It must be a sequence, where the first element is the + command name and subsequent elements the args for that + command. + "loop" (optional, default LOOP_NEVER) is a constant + indicating if a command loop should be started (i.e. an + interactive shell). Valid values (constants on this module): + LOOP_ALWAYS start loop and run "argv", if any + LOOP_NEVER run "argv" (or .emptyline()) and exit + LOOP_IF_EMPTY run "argv", if given, and exit; + otherwise, start loop + """ + if argv is None: + argv = sys.argv + else: + argv = argv[:] # don't modify caller's list + + try: + self.optparser = self.get_optparser() + if self.optparser: # i.e. optparser=None means don't process for opts + try: + self.options, args = self.optparser.parse_args(argv[1:]) + except StopOptionProcessing: + return 0 + else: + # Set default options *after* parsing command line options + # This is an requirement for CmdlnWithConfigParser which + # relies on the -c option which is only parsed in the above + # `try' block + self.optparser.set_defaults(**self.get_option_defaults(None)) + self.options, args = self.optparser.parse_args(argv[1:]) + else: + self.options, args = None, argv[1:] + self.postoptparse() + except CmdlnUserError: + _, ex, _ = sys.exc_info() + msg = "%s: %s\nTry '%s help' for info.\n"\ + % (self.name, ex, self.name) + self.stderr.write(self._str(msg)) + self.stderr.flush() + return 1 + + if loop == LOOP_ALWAYS: + if args: + self.cmdqueue.append(args) + return self.cmdloop() + elif loop == LOOP_NEVER: + if args: + return self.cmd(args) + else: + return self.emptyline() + elif loop == LOOP_IF_EMPTY: + if args: + return self.cmd(args) + else: + return self.cmdloop() + + def cmd(self, argv): + """Run one command and exit. + + "argv" is the arglist for the command to run. argv[0] is the + command to run. If argv is an empty list then the + 'emptyline' handler is run. + + Returns the return value from the command handler. + """ + assert isinstance(argv, (list, tuple)), \ + "'argv' is not a sequence: %r" % argv + retval = None + try: + argv = self.precmd(argv) + retval = self.onecmd(argv) + self.postcmd(argv) + except: + if not self.cmdexc(argv): + raise + retval = 1 + return retval + + def _str(self, s): + """Safely convert the given str/unicode to a string for printing.""" + try: + return str(s) + except UnicodeError: + #XXX What is the proper encoding to use here? 'utf-8' seems + # to work better than "getdefaultencoding" (usually + # 'ascii'), on OS X at least. + #return s.encode(sys.getdefaultencoding(), "replace") + return s.encode("utf-8", "replace") + + def cmdloop(self, intro=None): + """Repeatedly issue a prompt, accept input, parse into an argv, and + dispatch (via .precmd(), .onecmd() and .postcmd()), passing them + the argv. In other words, start a shell. + + "intro" (optional) is a introductory message to print when + starting the command loop. This overrides the class + "intro" attribute, if any. + """ + self.cmdlooping = True + self.preloop() + if self.use_rawinput and self.completekey: + try: + import readline + self.old_completer = readline.get_completer() + readline.set_completer(self.complete) + readline.parse_and_bind(self.completekey+": complete") + except ImportError: + pass + try: + if intro is None: + intro = self.intro + if intro: + intro_str = self._str(intro) + self.stdout.write(intro_str+'\n') + self.stop = False + retval = None + while not self.stop: + if self.cmdqueue: + argv = self.cmdqueue.pop(0) + assert isinstance(argv, (list, tuple)), \ + "item on 'cmdqueue' is not a sequence: %r" % argv + else: + if self.use_rawinput: + try: + line = raw_input(self._prompt_str) + except EOFError: + line = 'EOF' + except KeyboardInterrupt: + line = 'KeyboardInterrupt' + else: + self.stdout.write(self._prompt_str) + self.stdout.flush() + line = self.stdin.readline() + if not len(line): + line = 'EOF' + else: + line = line[:-1] # chop '\n' + argv = line2argv(line) + try: + argv = self.precmd(argv) + retval = self.onecmd(argv) + self.postcmd(argv) + except: + if not self.cmdexc(argv): + raise + retval = 1 + self.lastretval = retval + self.postloop() + finally: + if self.use_rawinput and self.completekey: + try: + import readline + readline.set_completer(self.old_completer) + except ImportError: + pass + self.cmdlooping = False + return retval + + def precmd(self, argv): + """Hook method executed just before the command argv is + interpreted, but after the input prompt is generated and issued. + + "argv" is the cmd to run. + + Returns an argv to run (i.e. this method can modify the command + to run). + """ + return argv + + def postcmd(self, argv): + """Hook method executed just after a command dispatch is finished. + + "argv" is the command that was run. + """ + pass + + def cmdexc(self, argv): + """Called if an exception is raised in any of precmd(), onecmd(), + or postcmd(). If True is returned, the exception is deemed to have + been dealt with. Otherwise, the exception is re-raised. + + The default implementation handles CmdlnUserError's, which + typically correspond to user error in calling commands (as + opposed to programmer error in the design of the script using + cmdln.py). + """ + type, exc, traceback = sys.exc_info() + if isinstance(exc, CmdlnUserError): + msg = "%s %s: %s\nTry '%s help %s' for info.\n"\ + % (self.name, argv[0], exc, self.name, argv[0]) + self.stderr.write(self._str(msg)) + self.stderr.flush() + return True + + def onecmd(self, argv): + if not argv: + return self.emptyline() + self.lastcmd = argv + cmdname = self._get_canonical_cmd_name(argv[0]) + if cmdname: + handler = self._get_cmd_handler(cmdname) + if handler: + try: + return self._dispatch_cmd(handler, argv) + except KeyboardInterrupt: + return self.onecmd(["KeyboardInterrupt"]) + return self.default(argv) + + def _dispatch_cmd(self, handler, argv): + return handler(argv) + + def default(self, argv): + """Hook called to handle a command for which there is no handler. + + "argv" is the command and arguments to run. + + The default implementation writes an error message to stderr + and returns an error exit status. + + Returns a numeric command exit status. + """ + errmsg = self._str(self.unknowncmd % (argv[0],)) + if self.cmdlooping: + self.stderr.write(errmsg+"\n") + else: + self.stderr.write("%s: %s\nTry '%s help' for info.\n" + % (self._name_str, errmsg, self._name_str)) + self.stderr.flush() + return 1 + + def parseline(self, line): + # This is used by Cmd.complete (readline completer function) to + # massage the current line buffer before completion processing. + # We override to drop special '!' handling. + line = line.strip() + if not line: + return None, None, line + elif line[0] == '?': + line = 'help ' + line[1:] + i, n = 0, len(line) + while i < n and line[i] in self.identchars: i = i+1 + cmd, arg = line[:i], line[i:].strip() + return cmd, arg, line + + def helpdefault(self, cmd, known): + """Hook called to handle help on a command for which there is no + help handler. + + "cmd" is the command name on which help was requested. + "known" is a boolean indicating if this command is known + (i.e. if there is a handler for it). + + Returns a return code. + """ + if known: + msg = self._str(self.nohelp % (cmd,)) + if self.cmdlooping: + self.stderr.write(msg + '\n') + else: + self.stderr.write("%s: %s\n" % (self.name, msg)) + else: + msg = self.unknowncmd % (cmd,) + if self.cmdlooping: + self.stderr.write(msg + '\n') + else: + self.stderr.write("%s: %s\n" + "Try '%s help' for info.\n" + % (self.name, msg, self.name)) + self.stderr.flush() + return 1 + + def do_help(self, argv): + """${cmd_name}: give detailed help on a specific sub-command + + Usage: + ${name} help [COMMAND] + """ + if len(argv) > 1: # asking for help on a particular command + doc = None + cmdname = self._get_canonical_cmd_name(argv[1]) or argv[1] + if not cmdname: + return self.helpdefault(argv[1], False) + else: + helpfunc = getattr(self, "help_"+cmdname, None) + if helpfunc: + doc = helpfunc() + else: + handler = self._get_cmd_handler(cmdname) + if handler: + doc = handler.__doc__ + if doc is None: + return self.helpdefault(argv[1], handler != None) + else: # bare "help" command + doc = self.__class__.__doc__ # try class docstring + if doc is None: + # Try to provide some reasonable useful default help. + if self.cmdlooping: prefix = "" + else: prefix = self.name+' ' + doc = """Usage: + %sCOMMAND [ARGS...] + %shelp [COMMAND] + + ${option_list} + ${command_list} + ${help_list} + """ % (prefix, prefix) + cmdname = None + + if doc: # *do* have help content, massage and print that + doc = self._help_reindent(doc) + doc = self._help_preprocess(doc, cmdname) + doc = doc.rstrip() + '\n' # trim down trailing space + self.stdout.write(self._str(doc)) + self.stdout.flush() + do_help.aliases = ["?"] + + def _help_reindent(self, help, indent=None): + """Hook to re-indent help strings before writing to stdout. + + "help" is the help content to re-indent + "indent" is a string with which to indent each line of the + help content after normalizing. If unspecified or None + then the default is use: the 'self.helpindent' class + attribute. By default this is the empty string, i.e. + no indentation. + + By default, all common leading whitespace is removed and then + the lot is indented by 'self.helpindent'. When calculating the + common leading whitespace the first line is ignored -- hence + help content for Conan can be written as follows and have the + expected indentation: + + def do_crush(self, ...): + '''${cmd_name}: crush your enemies, see them driven before you... + + c.f. Conan the Barbarian''' + """ + if indent is None: + indent = self.helpindent + lines = help.splitlines(0) + _dedentlines(lines, skip_first_line=True) + lines = [(indent+line).rstrip() for line in lines] + return '\n'.join(lines) + + def _help_preprocess(self, help, cmdname): + """Hook to preprocess a help string before writing to stdout. + + "help" is the help string to process. + "cmdname" is the canonical sub-command name for which help + is being given, or None if the help is not specific to a + command. + + By default the following template variables are interpolated in + help content. (Note: these are similar to Python 2.4's + string.Template interpolation but not quite.) + + ${name} + The tool's/shell's name, i.e. 'self.name'. + ${option_list} + A formatted table of options for this shell/tool. + ${command_list} + A formatted table of available sub-commands. + ${help_list} + A formatted table of additional help topics (i.e. 'help_*' + methods with no matching 'do_*' method). + ${cmd_name} + The name (and aliases) for this sub-command formatted as: + "NAME (ALIAS1, ALIAS2, ...)". + ${cmd_usage} + A formatted usage block inferred from the command function + signature. + ${cmd_option_list} + A formatted table of options for this sub-command. (This is + only available for commands using the optparse integration, + i.e. using @cmdln.option decorators or manually setting the + 'optparser' attribute on the 'do_*' method.) + + Returns the processed help. + """ + preprocessors = { + "${name}": self._help_preprocess_name, + "${option_list}": self._help_preprocess_option_list, + "${command_list}": self._help_preprocess_command_list, + "${help_list}": self._help_preprocess_help_list, + "${cmd_name}": self._help_preprocess_cmd_name, + "${cmd_usage}": self._help_preprocess_cmd_usage, + "${cmd_option_list}": self._help_preprocess_cmd_option_list, + } + + for marker, preprocessor in preprocessors.items(): + if marker in help: + help = preprocessor(help, cmdname) + return help + + def _help_preprocess_name(self, help, cmdname=None): + return help.replace("${name}", self.name) + + def _help_preprocess_option_list(self, help, cmdname=None): + marker = "${option_list}" + indent, indent_width = _get_indent(marker, help) + suffix = _get_trailing_whitespace(marker, help) + + if self.optparser: + # Setup formatting options and format. + # - Indentation of 4 is better than optparse default of 2. + # C.f. Damian Conway's discussion of this in Perl Best + # Practices. + self.optparser.formatter.indent_increment = 4 + self.optparser.formatter.current_indent = indent_width + block = self.optparser.format_option_help() + '\n' + else: + block = "" + + help = help.replace(indent+marker+suffix, block, 1) + return help + + def _get_cmds_data(self): + # Find any aliases for commands. + token2canonical = self._get_canonical_map() + aliases = {} + for token, cmdname in token2canonical.items(): + if token == cmdname: continue + aliases.setdefault(cmdname, []).append(token) + + # Get the list of (non-hidden) commands and their + # documentation, if any. + cmdnames = {} # use a dict to strip duplicates + for attr in self.get_names(): + if attr.startswith("do_"): + cmdnames[attr[3:]] = True + cmdnames = list(sorted(cmdnames.keys())) + linedata = [] + for cmdname in cmdnames: + if aliases.get(cmdname): + a = aliases[cmdname] + a.sort() + cmdstr = "%s (%s)" % (cmdname, ", ".join(a)) + else: + cmdstr = cmdname + doc = None + try: + helpfunc = getattr(self, 'help_'+cmdname) + except AttributeError: + handler = self._get_cmd_handler(cmdname) + if handler: + doc = handler.__doc__ + else: + doc = helpfunc() + + # Strip "${cmd_name}: " from the start of a command's doc. Best + # practice dictates that command help strings begin with this, but + # it isn't at all wanted for the command list. + to_strip = "${cmd_name}:" + if doc and doc.startswith(to_strip): + #log.debug("stripping %r from start of %s's help string", + # to_strip, cmdname) + doc = doc[len(to_strip):].lstrip() + linedata.append( (cmdstr, doc) ) + + return linedata + + def _help_preprocess_command_list(self, help, cmdname=None): + marker = "${command_list}" + indent, indent_width = _get_indent(marker, help) + suffix = _get_trailing_whitespace(marker, help) + + linedata = self._get_cmds_data() + if linedata: + subindent = indent + ' '*4 + lines = _format_linedata(linedata, subindent, indent_width+4) + block = indent + "Commands:\n" \ + + '\n'.join(lines) + "\n\n" + help = help.replace(indent+marker+suffix, block, 1) + return help + + def _gen_names_and_attrs(self): + # Inheritance says we have to look in class and + # base classes; order is not important. + names = [] + classes = [self.__class__] + while classes: + aclass = classes.pop(0) + if aclass.__bases__: + classes = classes + list(aclass.__bases__) + for name in dir(aclass): + yield (name, getattr(aclass, name)) + + def _get_help_names(self): + """Return a mapping of help topic name to `.help_*()` method.""" + # Determine the additional help topics, if any. + help_names = {} + token2cmdname = self._get_canonical_map() + for attrname, attr in self._gen_names_and_attrs(): + if not attrname.startswith("help_"): continue + help_name = attrname[5:] + if help_name not in token2cmdname: + help_names[help_name] = attr + return help_names + + def _help_preprocess_help_list(self, help, cmdname=None): + marker = "${help_list}" + indent, indent_width = _get_indent(marker, help) + suffix = _get_trailing_whitespace(marker, help) + + help_names = self._get_help_names() + if help_names: + linedata = [(n, a.__doc__ or "") for n, a in help_names.items()] + linedata.sort() + + subindent = indent + ' '*4 + lines = _format_linedata(linedata, subindent, indent_width+4) + block = (indent + + "Additional help topics (run `%s help TOPIC'):\n" % self.name + + '\n'.join(lines) + + "\n\n") + else: + block = '' + help = help.replace(indent+marker+suffix, block, 1) + return help + + def _help_preprocess_cmd_name(self, help, cmdname=None): + marker = "${cmd_name}" + handler = self._get_cmd_handler(cmdname) + if not handler: + raise CmdlnError("cannot preprocess '%s' into help string: " + "could not find command handler for %r" + % (marker, cmdname)) + s = cmdname + if hasattr(handler, "aliases"): + s += " (%s)" % (", ".join(handler.aliases)) + help = help.replace(marker, s) + return help + + #TODO: this only makes sense as part of the Cmdln class. + # Add hooks to add help preprocessing template vars and put + # this one on that class. + def _help_preprocess_cmd_usage(self, help, cmdname=None): + marker = "${cmd_usage}" + handler = self._get_cmd_handler(cmdname) + if not handler: + raise CmdlnError("cannot preprocess '%s' into help string: " + "could not find command handler for %r" + % (marker, cmdname)) + indent, indent_width = _get_indent(marker, help) + suffix = _get_trailing_whitespace(marker, help) + + # Extract the introspection bits we need. + func = handler.__func__ + if func.__defaults__: + func_defaults = list(func.__defaults__) + else: + func_defaults = [] + co_argcount = func.__code__.co_argcount + co_varnames = func.__code__.co_varnames + co_flags = func.__code__.co_flags + CO_FLAGS_ARGS = 4 + CO_FLAGS_KWARGS = 8 + + # Adjust argcount for possible *args and **kwargs arguments. + argcount = co_argcount + if co_flags & CO_FLAGS_ARGS: argcount += 1 + if co_flags & CO_FLAGS_KWARGS: argcount += 1 + + # Determine the usage string. + usage = "%s %s" % (self.name, cmdname) + if argcount <= 2: # handler ::= do_FOO(self, argv) + usage += " [ARGS...]" + elif argcount >= 3: # handler ::= do_FOO(self, subcmd, opts, ...) + argnames = list(co_varnames[3:argcount]) + tail = "" + if co_flags & CO_FLAGS_KWARGS: + name = argnames.pop(-1) + import warnings + # There is no generally accepted mechanism for passing + # keyword arguments from the command line. Could + # *perhaps* consider: arg=value arg2=value2 ... + warnings.warn("argument '**%s' on '%s.%s' command " + "handler will never get values" + % (name, self.__class__.__name__, + func.__name__)) + if co_flags & CO_FLAGS_ARGS: + name = argnames.pop(-1) + tail = "[%s...]" % name.upper() + while func_defaults: + func_defaults.pop(-1) + name = argnames.pop(-1) + tail = "[%s%s%s]" % (name.upper(), (tail and ' ' or ''), tail) + while argnames: + name = argnames.pop(-1) + tail = "%s %s" % (name.upper(), tail) + usage += ' ' + tail + + block_lines = [ + self.helpindent + "Usage:", + self.helpindent + ' '*4 + usage + ] + block = '\n'.join(block_lines) + '\n\n' + + help = help.replace(indent+marker+suffix, block, 1) + return help + + #TODO: this only makes sense as part of the Cmdln class. + # Add hooks to add help preprocessing template vars and put + # this one on that class. + def _help_preprocess_cmd_option_list(self, help, cmdname=None): + marker = "${cmd_option_list}" + handler = self._get_cmd_handler(cmdname) + if not handler: + raise CmdlnError("cannot preprocess '%s' into help string: " + "could not find command handler for %r" + % (marker, cmdname)) + indent, indent_width = _get_indent(marker, help) + suffix = _get_trailing_whitespace(marker, help) + if hasattr(handler, "optparser"): + # Setup formatting options and format. + # - Indentation of 4 is better than optparse default of 2. + # C.f. Damian Conway's discussion of this in Perl Best + # Practices. + handler.optparser.formatter.indent_increment = 4 + handler.optparser.formatter.current_indent = indent_width + block = handler.optparser.format_option_help() + '\n' + else: + block = "" + + help = help.replace(indent+marker+suffix, block, 1) + return help + + def _get_canonical_cmd_name(self, token): + map = self._get_canonical_map() + return map.get(token, None) + + def _get_canonical_map(self): + """Return a mapping of available command names and aliases to + their canonical command name. + """ + cacheattr = "_token2canonical" + if not hasattr(self, cacheattr): + # Get the list of commands and their aliases, if any. + token2canonical = {} + cmd2funcname = {} # use a dict to strip duplicates + for attr in self.get_names(): + if attr.startswith("do_"): cmdname = attr[3:] + elif attr.startswith("_do_"): cmdname = attr[4:] + else: + continue + cmd2funcname[cmdname] = attr + token2canonical[cmdname] = cmdname + for cmdname, funcname in cmd2funcname.items(): # add aliases + func = getattr(self, funcname) + aliases = getattr(func, "aliases", []) + for alias in aliases: + if alias in cmd2funcname: + import warnings + warnings.warn("'%s' alias for '%s' command conflicts " + "with '%s' handler" + % (alias, cmdname, cmd2funcname[alias])) + continue + token2canonical[alias] = cmdname + setattr(self, cacheattr, token2canonical) + return getattr(self, cacheattr) + + def _get_cmd_handler(self, cmdname): + handler = None + try: + handler = getattr(self, 'do_' + cmdname) + except AttributeError: + try: + # Private command handlers begin with "_do_". + handler = getattr(self, '_do_' + cmdname) + except AttributeError: + pass + return handler + + def _do_EOF(self, argv): + # Default EOF handler + # TODO: A mechanism so "EOF" and "KeyboardInterrupt" work as handlers + # but are *not* real available commands. + self.stdout.write('\n') + self.stdout.flush() + self.stop = True + + def _do_KeyboardInterrupt(self, argv): + # Default keyboard interrupt (i.e. ) handler. + # TODO: A mechanism so "EOF" and "KeyboardInterrupt" work as handlers + # but are *not* real available commands. + self.stdout.write('\n') + self.stdout.flush() + + def emptyline(self): + # Different from cmd.Cmd: don't repeat the last command for an + # emptyline. + if self.cmdlooping: + pass + else: + return self.do_help(["help"]) + + +#---- optparse.py extension to fix (IMO) some deficiencies +# +# See the class _OptionParserEx docstring for details. +# + +class StopOptionProcessing(Exception): + """Indicate that option *and argument* processing should stop + cleanly. This is not an error condition. It is similar in spirit to + StopIteration. This is raised by _OptionParserEx's default "help" + and "version" option actions and can be raised by custom option + callbacks too. + + Hence the typical CmdlnOptionParser (a subclass of _OptionParserEx) + usage is: + + parser = CmdlnOptionParser(mycmd) + parser.add_option("-f", "--force", dest="force") + ... + try: + opts, args = parser.parse_args() + except StopOptionProcessing: + # normal termination, "--help" was probably given + sys.exit(0) + """ + +class _OptionParserEx(optparse.OptionParser): + """An optparse.OptionParser that uses exceptions instead of sys.exit. + + This class is an extension of optparse.OptionParser that differs + as follows: + - Correct (IMO) the default OptionParser error handling to never + sys.exit(). Instead OptParseError exceptions are passed through. + - Add the StopOptionProcessing exception (a la StopIteration) to + indicate normal termination of option processing. + See StopOptionProcessing's docstring for details. + + I'd also like to see the following in the core optparse.py, perhaps + as a RawOptionParser which would serve as a base class for the more + generally used OptionParser (that works as current): + - Remove the implicit addition of the -h|--help and --version + options. They can get in the way (e.g. if want '-?' and '-V' for + these as well) and it is not hard to do: + optparser.add_option("-h", "--help", action="help") + optparser.add_option("--version", action="version") + These are good practices, just not valid defaults if they can + get in the way. + """ + def error(self, msg): + raise optparse.OptParseError(msg) + + def exit(self, status=0, msg=None): + if status == 0: + raise StopOptionProcessing(msg) + else: + #TODO: don't lose status info here + raise optparse.OptParseError(msg) + + + +#---- optparse.py-based option processing support + +class CmdlnOptionParser(_OptionParserEx): + """An optparse.OptionParser class more appropriate for top-level + Cmdln options. For parsing of sub-command options, see + SubCmdOptionParser. + + Changes: + - disable_interspersed_args() by default, because a Cmdln instance + has sub-commands which may themselves have options. + - Redirect print_help() to the Cmdln.do_help() which is better + equiped to handle the "help" action. + - error() will raise a CmdlnUserError: OptionParse.error() is meant + to be called for user errors. Raising a well-known error here can + make error handling clearer. + - Also see the changes in _OptionParserEx. + """ + def __init__(self, cmdln, **kwargs): + self.cmdln = cmdln + kwargs["prog"] = self.cmdln.name + _OptionParserEx.__init__(self, **kwargs) + self.disable_interspersed_args() + + def print_help(self, file=None): + self.cmdln.onecmd(["help"]) + + def error(self, msg): + raise CmdlnUserError(msg) + + +class SubCmdOptionParser(_OptionParserEx): + def set_cmdln_info(self, cmdln, subcmd): + """Called by Cmdln to pass relevant info about itself needed + for print_help(). + """ + self.cmdln = cmdln + self.subcmd = subcmd + + def print_help(self, file=None): + self.cmdln.onecmd(["help", self.subcmd]) + + def error(self, msg): + raise CmdlnUserError(msg) + + +def option(*args, **kwargs): + """Decorator to add an option to the optparser argument of a Cmdln + subcommand + + To add a toplevel option, apply the decorator on the class itself. (see + p4.py for an example) + + Example: + @cmdln.option("-E", dest="environment_path") + class MyShell(cmdln.Cmdln): + @cmdln.option("-f", "--force", help="force removal") + def do_remove(self, subcmd, opts, *args): + #... + """ + def decorate_sub_command(method): + """create and add sub-command options""" + if not hasattr(method, "optparser"): + method.optparser = SubCmdOptionParser() + method.optparser.add_option(*args, **kwargs) + return method + def decorate_class(klass): + """store toplevel options""" + assert _forgiving_issubclass(klass, Cmdln) + _inherit_attr(klass, "toplevel_optparser_options", [], cp=lambda l: l[:]) + klass.toplevel_optparser_options.append( (args, kwargs) ) + return klass + + #XXX Is there a possible optimization for many options to not have a + # large stack depth here? + def decorate(obj): + if _forgiving_issubclass(obj, Cmdln): + return decorate_class(obj) + else: + return decorate_sub_command(obj) + return decorate + + +class Cmdln(RawCmdln): + """An improved (on cmd.Cmd) framework for building multi-subcommand + scripts (think "svn" & "cvs") and simple shells (think "pdb" and + "gdb"). + + A simple example: + + import cmdln + + class MySVN(cmdln.Cmdln): + name = "svn" + + @cmdln.aliases('stat', 'st') + @cmdln.option('-v', '--verbose', action='store_true' + help='print verbose information') + def do_status(self, subcmd, opts, *paths): + print "handle 'svn status' command" + + #... + + if __name__ == "__main__": + shell = MySVN() + retval = shell.main() + sys.exit(retval) + + 'Cmdln' extends 'RawCmdln' by providing optparse option processing + integration. See this class' _dispatch_cmd() docstring and general + cmdln document for more information. + """ + + def _dispatch_cmd(self, handler, argv): + """Introspect sub-command handler signature to determine how to + dispatch the command. The raw handler provided by the base + 'RawCmdln' class is still supported: + + def do_foo(self, argv): + # 'argv' is the vector of command line args, argv[0] is + # the command name itself (i.e. "foo" or an alias) + pass + + In addition, if the handler has more than 2 arguments option + processing is automatically done (using optparse): + + @cmdln.option('-v', '--verbose', action='store_true') + def do_bar(self, subcmd, opts, *args): + # subcmd = <"bar" or an alias> + # opts = + if opts.verbose: + print "lots of debugging output..." + # args = + for arg in args: + bar(arg) + + TODO: explain that "*args" can be other signatures as well. + + The `cmdln.option` decorator corresponds to an `add_option()` + method call on an `optparse.OptionParser` instance. + + You can declare a specific number of arguments: + + @cmdln.option('-v', '--verbose', action='store_true') + def do_bar2(self, subcmd, opts, bar_one, bar_two): + #... + + and an appropriate error message will be raised/printed if the + command is called with a different number of args. + """ + co_argcount = handler.__func__.__code__.co_argcount + if co_argcount == 2: # handler ::= do_foo(self, argv) + return handler(argv) + elif co_argcount >= 3: # handler ::= do_foo(self, subcmd, opts, ...) + try: + optparser = handler.optparser + except AttributeError: + optparser = handler.__func__.optparser = SubCmdOptionParser() + assert isinstance(optparser, SubCmdOptionParser) + + # apply subcommand options' defaults from config files, if any. + subcmd = handler.__name__.split('do_', 1)[1] + optparser.set_defaults(**self.get_option_defaults(subcmd)) + + optparser.set_cmdln_info(self, argv[0]) + try: + opts, args = optparser.parse_args(argv[1:]) + except StopOptionProcessing: + #TODO: this doesn't really fly for a replacement of + # optparse.py behaviour, does it? + return 0 # Normal command termination + + try: + return handler(argv[0], opts, *args) + except TypeError: + _, ex, _ = sys.exc_info() + # Some TypeError's are user errors: + # do_foo() takes at least 4 arguments (3 given) + # do_foo() takes at most 5 arguments (6 given) + # do_foo() takes exactly 5 arguments (6 given) + # do_foo() takes exactly 5 positional arguments (6 given) + # Raise CmdlnUserError for these with a suitably + # massaged error message. + tb = sys.exc_info()[2] # the traceback object + if tb.tb_next is not None: + # If the traceback is more than one level deep, then the + # TypeError do *not* happen on the "handler(...)" call + # above. In that we don't want to handle it specially + # here: it would falsely mask deeper code errors. + raise + msg = ex.args[0] + match = _INCORRECT_NUM_ARGS_RE.search(msg) + if match: + msg = list(match.groups()) + msg[1] = int(msg[1]) - 3 + if msg[1] == 1: + msg[2] = msg[2].replace("arguments", "argument") + msg[3] = int(msg[3]) - 3 + msg = ''.join(map(str, msg)) + raise CmdlnUserError(msg) + else: + raise + else: + raise CmdlnError("incorrect argcount for %s(): takes %d, must " + "take 2 for 'argv' signature or 3+ for 'opts' " + "signature" % (handler.__name__, co_argcount)) + + + +#---- support for generating `man` page output from a Cmdln class + +def man_sections_from_cmdln(inst, summary=None, description=None, author=None): + """Return man page sections appropriate for the given Cmdln instance. + Join these sections for man page content. + + The man page sections generated are: + NAME + SYNOPSIS + DESCRIPTION (if `description` is given) + OPTIONS + COMMANDS + HELP TOPICS (if any) + + @param inst {Cmdln} Instance of Cmdln subclass for which to generate + man page content. + @param summary {str} A one-liner summary of the command. + @param description {str} A description of the command. If given, + it will be used for a "DESCRIPTION" section. + @param author {str} The author name and email for the AUTHOR secion + of the man page. + @raises {ValueError} if man page content cannot be generated for the + given class. + """ + if not inst.__class__.name: + raise ValueError("cannot generate man page content: `name` is not " + "set on class %r" % inst.__class__) + data = { + "name": inst.name, + "ucname": inst.name.upper(), + "date": datetime.date.today().strftime("%b %Y"), + "cmdln_version": __version__, + "version_str": inst.version and " %s" % inst.version or "", + "summary_str": summary and r" \- %s" % summary or "", + } + + sections = [] + sections.append('.\\" Automatically generated by cmdln %(cmdln_version)s\n' + '.TH %(ucname)s "1" "%(date)s" "%(name)s%(version_str)s" "User Commands"\n' + % data) + sections.append(".SH NAME\n%(name)s%(summary_str)s\n" % data) + sections.append(_dedent(r""" + .SH SYNOPSIS + .B %(name)s + [\fIGLOBALOPTS\fR] \fISUBCOMMAND \fR[\fIOPTS\fR] [\fIARGS\fR...] + .br + .B %(name)s + \fIhelp SUBCOMMAND\fR + """) % data) + if description: + sections.append(".SH DESCRIPTION\n%s\n" % description) + + section = ".SH OPTIONS\n" + if not hasattr(inst, "optparser") is None: + #HACK: In case `.main()` hasn't been run. + inst.optparser = inst.get_optparser() + lines = inst._help_preprocess("${option_list}", None).splitlines(False) + for line in lines[1:]: + line = line.lstrip() + if not line: + continue + section += ".TP\n" + opts, desc = line.split(' ', 1) + section += ".B %s\n" % opts + section += "%s\n" % _dedent(desc.lstrip(), skip_first_line=True) + sections.append(section) + + section = ".SH COMMANDS\n" + cmds = inst._get_cmds_data() + for cmdstr, doc in cmds: + cmdname = cmdstr.split(' ')[0] # e.g. "commit (ci)" -> "commit" + doc = inst._help_reindent(doc, indent="") + doc = inst._help_preprocess(doc, cmdname) + doc = doc.rstrip() + "\n" # trim down trailing space + section += '.PP\n.SS %s\n%s\n' % (cmdstr, doc) + sections.append(section) + + help_names = inst._get_help_names() + if help_names: + section = ".SH HELP TOPICS\n" + for help_name, help_meth in sorted(help_names.items()): + help = help_meth(inst) + help = inst._help_reindent(help, indent="") + section += '.PP\n.SS %s\n%s\n' % (help_name, help) + sections.append(section) + + if author: + sections.append(".SH AUTHOR\n%s\n" % author) + + return sections + + + +#---- internal support functions + +def _inherit_attr(klass, attr, default, cp): + """Inherit the attribute from the base class + + Copy `attr` from base class (otherwise use `default`). Copying is done using + the passed `cp` function. + + The motivation behind writing this function is to allow inheritance among + Cmdln classes where base classes set 'common' options using the + `@cmdln.option` decorator. To ensure this, we must not write to the base + class's options when handling the derived class. + """ + if attr not in klass.__dict__: + if hasattr(klass, attr): + value = cp(getattr(klass, attr)) + else: + value = default + setattr(klass, attr, value) + +def _forgiving_issubclass(derived_class, base_class): + """Forgiving version of ``issubclass`` + + Does not throw any exception when arguments are not of class type + """ + return (type(derived_class) is ClassType and \ + type(base_class) is ClassType and \ + issubclass(derived_class, base_class)) + +def _format_linedata(linedata, indent, indent_width): + """Format specific linedata into a pleasant layout. + + "linedata" is a list of 2-tuples of the form: + (, ) + "indent" is a string to use for one level of indentation + "indent_width" is a number of columns by which the + formatted data will be indented when printed. + + The column is held to 30 columns. + """ + lines = [] + WIDTH = 78 - indent_width + SPACING = 2 + NAME_WIDTH_LOWER_BOUND = 13 + NAME_WIDTH_UPPER_BOUND = 30 + NAME_WIDTH = max([len(s) for s,d in linedata]) + if NAME_WIDTH < NAME_WIDTH_LOWER_BOUND: + NAME_WIDTH = NAME_WIDTH_LOWER_BOUND + elif NAME_WIDTH > NAME_WIDTH_UPPER_BOUND: + NAME_WIDTH = NAME_WIDTH_UPPER_BOUND + + DOC_WIDTH = WIDTH - NAME_WIDTH - SPACING + for namestr, doc in linedata: + line = indent + namestr + if len(namestr) <= NAME_WIDTH: + line += ' ' * (NAME_WIDTH + SPACING - len(namestr)) + else: + lines.append(line) + line = indent + ' ' * (NAME_WIDTH + SPACING) + line += _summarize_doc(doc, DOC_WIDTH) + lines.append(line.rstrip()) + return lines + +def _summarize_doc(doc, length=60): + r"""Parse out a short one line summary from the given doclines. + + "doc" is the doc string to summarize. + "length" is the max length for the summary + + >>> _summarize_doc("this function does this") + 'this function does this' + >>> _summarize_doc("this function does this", 10) + 'this fu...' + >>> _summarize_doc("this function does this\nand that") + 'this function does this and that' + >>> _summarize_doc("this function does this\n\nand that") + 'this function does this' + """ + import re + if doc is None: + return "" + assert length > 3, "length <= 3 is absurdly short for a doc summary" + doclines = doc.strip().splitlines(0) + if not doclines: + return "" + + summlines = [] + for i, line in enumerate(doclines): + stripped = line.strip() + if not stripped: + break + summlines.append(stripped) + if len(''.join(summlines)) >= length: + break + + summary = ' '.join(summlines) + if len(summary) > length: + summary = summary[:length-3] + "..." + return summary + + +def line2argv(line): + r"""Parse the given line into an argument vector. + + "line" is the line of input to parse. + + This may get niggly when dealing with quoting and escaping. The + current state of this parsing may not be completely thorough/correct + in this respect. + + >>> from cmdln import line2argv + >>> line2argv("foo") + ['foo'] + >>> line2argv("foo bar") + ['foo', 'bar'] + >>> line2argv("foo bar ") + ['foo', 'bar'] + >>> line2argv(" foo bar") + ['foo', 'bar'] + + Quote handling: + + >>> line2argv("'foo bar'") + ['foo bar'] + >>> line2argv('"foo bar"') + ['foo bar'] + >>> line2argv(r'"foo\"bar"') + ['foo"bar'] + >>> line2argv("'foo bar' spam") + ['foo bar', 'spam'] + >>> line2argv("'foo 'bar spam") + ['foo bar', 'spam'] + + >>> line2argv('some\tsimple\ttests') + ['some', 'simple', 'tests'] + >>> line2argv('a "more complex" test') + ['a', 'more complex', 'test'] + >>> line2argv('a more="complex test of " quotes') + ['a', 'more=complex test of ', 'quotes'] + >>> line2argv('a more" complex test of " quotes') + ['a', 'more complex test of ', 'quotes'] + >>> line2argv('an "embedded \\"quote\\""') + ['an', 'embedded "quote"'] + + # Komodo bug 48027 + >>> line2argv('foo bar C:\\') + ['foo', 'bar', 'C:\\'] + + # Komodo change 127581 + >>> line2argv(r'"\test\slash" "foo bar" "foo\"bar"') + ['\\test\\slash', 'foo bar', 'foo"bar'] + + # Komodo change 127629 + >>> if sys.platform == "win32": + ... line2argv(r'\foo\bar') == ['\\foo\\bar'] + ... line2argv(r'\\foo\\bar') == ['\\\\foo\\\\bar'] + ... line2argv('"foo') == ['foo'] + ... else: + ... line2argv(r'\foo\bar') == ['foobar'] + ... line2argv(r'\\foo\\bar') == ['\\foo\\bar'] + ... try: + ... line2argv('"foo') + ... except ValueError, ex: + ... "not terminated" in str(ex) + True + True + True + """ + line = line.strip() + argv = [] + state = "default" + arg = None # the current argument being parsed + i = -1 + WHITESPACE = '\t\n\x0b\x0c\r ' # don't use string.whitespace (bug 81316) + while 1: + i += 1 + if i >= len(line): break + ch = line[i] + + if ch == "\\" and i+1 < len(line): + # escaped char always added to arg, regardless of state + if arg is None: arg = "" + if (sys.platform == "win32" + or state in ("double-quoted", "single-quoted") + ) and line[i+1] not in tuple('"\''): + arg += ch + i += 1 + arg += line[i] + continue + + if state == "single-quoted": + if ch == "'": + state = "default" + else: + arg += ch + elif state == "double-quoted": + if ch == '"': + state = "default" + else: + arg += ch + elif state == "default": + if ch == '"': + if arg is None: arg = "" + state = "double-quoted" + elif ch == "'": + if arg is None: arg = "" + state = "single-quoted" + elif ch in WHITESPACE: + if arg is not None: + argv.append(arg) + arg = None + else: + if arg is None: arg = "" + arg += ch + if arg is not None: + argv.append(arg) + if not sys.platform == "win32" and state != "default": + raise ValueError("command line is not terminated: unfinished %s " + "segment" % state) + return argv + + +def argv2line(argv): + r"""Put together the given argument vector into a command line. + + "argv" is the argument vector to process. + + >>> from cmdln import argv2line + >>> argv2line(['foo']) + 'foo' + >>> argv2line(['foo', 'bar']) + 'foo bar' + >>> argv2line(['foo', 'bar baz']) + 'foo "bar baz"' + >>> argv2line(['foo"bar']) + 'foo"bar' + >>> print argv2line(['foo" bar']) + 'foo" bar' + >>> print argv2line(["foo' bar"]) + "foo' bar" + >>> argv2line(["foo'bar"]) + "foo'bar" + """ + escapedArgs = [] + for arg in argv: + if ' ' in arg and '"' not in arg: + arg = '"'+arg+'"' + elif ' ' in arg and "'" not in arg: + arg = "'"+arg+"'" + elif ' ' in arg: + arg = arg.replace('"', r'\"') + arg = '"'+arg+'"' + escapedArgs.append(arg) + return ' '.join(escapedArgs) + + +# Recipe: dedent (0.1) in /Users/trentm/tm/recipes/cookbook +def _dedentlines(lines, tabsize=8, skip_first_line=False): + """_dedentlines(lines, tabsize=8, skip_first_line=False) -> dedented lines + + "lines" is a list of lines to dedent. + "tabsize" is the tab width to use for indent width calculations. + "skip_first_line" is a boolean indicating if the first line should + be skipped for calculating the indent width and for dedenting. + This is sometimes useful for docstrings and similar. + + Same as dedent() except operates on a sequence of lines. Note: the + lines list is modified **in-place**. + """ + DEBUG = False + if DEBUG: + print("dedent: dedent(..., tabsize=%d, skip_first_line=%r)"\ + % (tabsize, skip_first_line)) + indents = [] + margin = None + for i, line in enumerate(lines): + if i == 0 and skip_first_line: continue + indent = 0 + for ch in line: + if ch == ' ': + indent += 1 + elif ch == '\t': + indent += tabsize - (indent % tabsize) + elif ch in '\r\n': + continue # skip all-whitespace lines + else: + break + else: + continue # skip all-whitespace lines + if DEBUG: print("dedent: indent=%d: %r" % (indent, line)) + if margin is None: + margin = indent + else: + margin = min(margin, indent) + if DEBUG: print("dedent: margin=%r" % margin) + + if margin is not None and margin > 0: + for i, line in enumerate(lines): + if i == 0 and skip_first_line: continue + removed = 0 + for j, ch in enumerate(line): + if ch == ' ': + removed += 1 + elif ch == '\t': + removed += tabsize - (removed % tabsize) + elif ch in '\r\n': + if DEBUG: print("dedent: %r: EOL -> strip up to EOL" % line) + lines[i] = lines[i][j:] + break + else: + raise ValueError("unexpected non-whitespace char %r in " + "line %r while removing %d-space margin" + % (ch, line, margin)) + if DEBUG: + print("dedent: %r: %r -> removed %d/%d"\ + % (line, ch, removed, margin)) + if removed == margin: + lines[i] = lines[i][j+1:] + break + elif removed > margin: + lines[i] = ' '*(removed-margin) + lines[i][j+1:] + break + return lines + +def _dedent(text, tabsize=8, skip_first_line=False): + """_dedent(text, tabsize=8, skip_first_line=False) -> dedented text + + "text" is the text to dedent. + "tabsize" is the tab width to use for indent width calculations. + "skip_first_line" is a boolean indicating if the first line should + be skipped for calculating the indent width and for dedenting. + This is sometimes useful for docstrings and similar. + + textwrap.dedent(s), but don't expand tabs to spaces + """ + lines = text.splitlines(1) + _dedentlines(lines, tabsize=tabsize, skip_first_line=skip_first_line) + return ''.join(lines) + +def _get_indent(marker, s, tab_width=8): + """_get_indent(marker, s, tab_width=8) -> + (, )""" + # Figure out how much the marker is indented. + INDENT_CHARS = tuple(' \t') + start = s.index(marker) + i = start + while i > 0: + if s[i-1] not in INDENT_CHARS: + break + i -= 1 + indent = s[i:start] + indent_width = 0 + for ch in indent: + if ch == ' ': + indent_width += 1 + elif ch == '\t': + indent_width += tab_width - (indent_width % tab_width) + return indent, indent_width + +def _get_trailing_whitespace(marker, s): + """Return the whitespace content trailing the given 'marker' in string 's', + up to and including a newline. + """ + suffix = '' + start = s.index(marker) + len(marker) + i = start + while i < len(s): + if s[i] in ' \t': + suffix += s[i] + elif s[i] in '\r\n': + suffix += s[i] + if s[i] == '\r' and i+1 < len(s) and s[i+1] == '\n': + suffix += s[i+1] + break + else: + break + i += 1 + return suffix + + + +#---- bash completion support +# Note: This is still experimental. I expect to change this +# significantly. +# +# To get Bash completion for a cmdln.Cmdln class, run the following +# bash command: +# $ complete -C 'python -m cmdln /path/to/script.py CmdlnClass' cmdname +# For example: +# $ complete -C 'python -m cmdln ~/bin/svn.py SVN' svn +# +#TODO: Simplify the above so don't have to given path to script (try to +# find it on PATH, if possible). Could also make class name +# optional if there is only one in the module (common case). + +if __name__ == "__main__" and len(sys.argv) == 6: + def _log(s): + return # no-op, comment out for debugging + from os.path import expanduser + fout = open(expanduser("~/tmp/bashcpln.log"), 'a') + fout.write(str(s) + '\n') + fout.close() + + # Recipe: module_from_path (1.0.1+) + def _module_from_path(path): + import imp, os, sys + path = os.path.expanduser(path) + dir = os.path.dirname(path) or os.curdir + name = os.path.splitext(os.path.basename(path))[0] + sys.path.insert(0, dir) + try: + iinfo = imp.find_module(name, [dir]) + return imp.load_module(name, *iinfo) + finally: + sys.path.remove(dir) + + def _get_bash_cplns(script_path, class_name, cmd_name, + token, preceding_token): + _log('--') + _log('get_cplns(%r, %r, %r, %r, %r)' + % (script_path, class_name, cmd_name, token, preceding_token)) + comp_line = os.environ["COMP_LINE"] + comp_point = int(os.environ["COMP_POINT"]) + _log("COMP_LINE: %r" % comp_line) + _log("COMP_POINT: %r" % comp_point) + + try: + script = _module_from_path(script_path) + except ImportError: + _, ex, _ = sys.exc_info() + _log("error importing `%s': %s" % (script_path, ex)) + return [] + shell = getattr(script, class_name)() + cmd_map = shell._get_canonical_map() + del cmd_map["EOF"] + del cmd_map["KeyboardInterrupt"] + + # Determine if completing the sub-command name. + parts = comp_line[:comp_point].split(None, 1) + _log(parts) + if len(parts) == 1 or not (' ' in parts[1] or '\t' in parts[1]): + #TODO: if parts[1].startswith('-'): handle top-level opts + _log("complete sub-command names") + matches = {} + for name, canon_name in cmd_map.items(): + if name.startswith(token): + matches[name] = canon_name + if not matches: + return [] + elif len(matches) == 1: + return matches.keys() + elif len(set(matches.values())) == 1: + return [matches.values()[0]] + else: + return matches.keys() + + # Otherwise, complete options for the given sub-command. + #TODO: refine this so it does the right thing with option args + if token.startswith('-'): + cmd_name = comp_line.split(None, 2)[1] + try: + cmd_canon_name = cmd_map[cmd_name] + except KeyError: + return [] + handler = shell._get_cmd_handler(cmd_canon_name) + optparser = getattr(handler, "optparser", None) + if optparser is None: + optparser = SubCmdOptionParser() + opt_strs = [] + for option in optparser.option_list: + for opt_str in option._short_opts + option._long_opts: + if opt_str.startswith(token): + opt_strs.append(opt_str) + return opt_strs + + return [] + + for cpln in _get_bash_cplns(*sys.argv[1:]): + print(cpln) + + + +## -- contrib -- + +@option("-c", "--configfile", dest="configfile", default=None, + metavar='FILENAME', + help='Configuration file to read options from') +class CmdlnWithConfigParser(Cmdln): + """Cmdln with configparser support + + Add a new option -c --configfile for reading config file; and set + default values for both toplevel and command-specific options. + + See examples/cfgexample.py + """ + + class NoConfigFile(Exception): pass + + def __init__(self, default_configfile=None, *args, **kwargs): + Cmdln.__init__(self, *args, **kwargs) + self._cfgparser = None + self._default_configfile = default_configfile + + def get_optparser(self): + parser = Cmdln.get_optparser(self) + parser.set_default('configfile', self._default_configfile) + return parser + + def _load_config(self): + if not self._cfgparser: + if self.options.configfile: + self._cfgparser = ConfigParser.SafeConfigParser() + if not path.exists(self.options.configfile): + raise CmdlnUserError( + 'config file "%s" does not exist' % \ + self.options.configfile) + self._cfgparser.read(self.options.configfile) + else: + raise self.NoConfigFile + + def get_option_defaults(self, cmd): + try: + self._load_config() + except self.NoConfigFile: + return {} + else: + section = cmd or 'cmdln' + try: + return dict(self._cfgparser.items(section)) + except ConfigParser.NoSectionError: + return {} + diff --git a/clint/packages/applib/_compression.py b/clint/packages/applib/_compression.py new file mode 100644 index 0000000..d60029c --- /dev/null +++ b/clint/packages/applib/_compression.py @@ -0,0 +1,213 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +import sys +import os +from os import path +import tarfile +import zipfile +from contextlib import closing + +from applib import sh + +__all__ = ['implementors'] + + +class CompressedFile: + + def __init__(self, filename): + self.filename = filename + + def extractall_with_single_toplevel(self, f, names): + """Same as ``extractall`` but ensures a single toplevel directory + + Some compressed archives do not stick to the convension of having a + single top-level directory. For eg., + http://code.google.com/p/grapefruit/issues/detail?id=3 + + In such cases, a new toplevel directory corresponding to the name of the + compressed file (eg: 'grapefruit-0.1a3' if compressed file is named + 'grapefruit-0.1a3.tar.gz') is created and then extraction happens + *inside* that directory. + + - f: tarfile/zipefile file object + - names: List of filenames in the archive + + Return the absolute path to the toplevel directory. + """ + toplevels = _find_top_level_directories(names, sep='/') + + if len(toplevels) == 0: + raise sh.PackError('archive is empty') + elif len(toplevels) > 1: + toplevel = _archive_basename(self.filename) + os.mkdir(toplevel) + with sh.cd(toplevel): + f.extractall() + return path.abspath(toplevel) + else: + f.extractall() + toplevel = path.abspath(toplevels[0]) + assert path.exists(toplevel) + if not path.isdir(toplevel): + # eg: http://pypi.python.org/pypi/DeferArgs/0.4 + raise SingleFile('archive has a single file: %s', toplevel) + return toplevel + + + +class ZippedFile(CompressedFile): + """A zip file""" + + @staticmethod + def is_valid(filename): + return zipfile.is_zipfile(filename) + + def extract(self): + try: + f = zipfile.ZipFile(self.filename, 'r') + try: + return self.extractall_with_single_toplevel( + f, f.namelist()) + except OSError as e: + if e.errno == 17: + # http://bugs.python.org/issue6510 + raise sh.PackError(e) + # http://bugs.python.org/issue6609 + if sys.platform.startswith('win'): + if isinstance(e, WindowsError) and e.winerror == 267: + raise sh.PackError('uses Windows special name (%s)' % e) + raise + except IOError as e: + # http://bugs.python.org/issue10447 + if sys.platform == 'win32' and e.errno == 2: + raise sh.PackError('reached max path-length: %s' % e) + raise + finally: + f.close() + except (zipfile.BadZipfile, zipfile.LargeZipFile) as e: + raise sh.PackError(e) + + @classmethod + def pack(cls, paths, file): + raise NotImplementedError('pack: zip files not supported yet') + + +class TarredFile(CompressedFile): + """A tar.gz/bz2 file""" + + @classmethod + def is_valid(cls, filename): + try: + with closing(tarfile.open(filename, cls._get_mode())) as f: + return True + except tarfile.TarError: + return False + + def extract(self): + try: + f = tarfile.open(self.filename, self._get_mode()) + try: + _ensure_read_write_access(f) + return self.extractall_with_single_toplevel( + f, f.getnames()) + finally: + f.close() + except tarfile.TarError as e: + raise sh.PackError(e) + except IOError as e: + # see http://bugs.python.org/issue6584 + if 'CRC check failed' in str(e): + raise sh.PackError(e) + # See github issue #10 + elif e.errno == 22 and "invalid mode ('wb')" in str(e): + raise sh.PackError(e) + else: + raise + + @classmethod + def pack(cls, paths, file): + f = tarfile.open(file, cls._get_mode('w')) + try: + for pth in paths: + assert path.exists(pth), '"%s" does not exist' % path + f.add(pth) + finally: + f.close() + + def _get_mode(self): + """Return the mode for this tarfile""" + raise NotImplementedError() + + +class GzipTarredFile(TarredFile): + """A tar.gz2 file""" + + @staticmethod + def _get_mode(mode='r'): + assert mode in ['r', 'w'] + return mode + ':gz' + + +class Bzip2TarredFile(TarredFile): + """A tar.gz2 file""" + + @staticmethod + def _get_mode(mode='r'): + assert mode in ['r', 'w'] + return mode + ':bz2' + + +implementors = dict( + zip = ZippedFile, + tgz = GzipTarredFile, + bz2 = Bzip2TarredFile) + + +class MultipleTopLevels(sh.PackError): + """Can be extracted, but contains multiple top-level dirs""" +class SingleFile(sh.PackError): + """Contains nothing but a single file. Compressed archived is expected to + contain one directory + """ + +def _ensure_read_write_access(tarfileobj): + """Ensure that the given tarfile will be readable and writable by the + user (the client program using this API) after extraction. + + Some tarballs have u-x set on directories or u-w on files. We reset such + perms here.. so that the extracted files remain accessible for reading + and deletion as per the user's wish. + + See also: http://bugs.python.org/issue6196 + """ + dir_perm = tarfile.TUREAD | tarfile.TUWRITE | tarfile.TUEXEC + file_perm = tarfile.TUREAD | tarfile.TUWRITE + + for tarinfo in tarfileobj.getmembers(): + tarinfo.mode |= (dir_perm if tarinfo.isdir() else file_perm) + + +def _find_top_level_directories(fileslist, sep): + """Find the distinct first components in the fileslist""" + toplevels = set() + for pth in fileslist: + firstcomponent = pth.split(sep, 1)[0] + toplevels.add(firstcomponent) + return list(toplevels) + + +def _archive_basename(filename): + """Return a suitable base directory name for the given archive""" + exts = ( + '.tar.gz', + '.tgz', + '.tar.bz2', + '.bz2', + '.zip') + + filename = path.basename(filename) + + for ext in exts: + if filename.endswith(ext): + return filename[:-len(ext)] + return filename + '.dir' diff --git a/clint/packages/applib/_proc.py b/clint/packages/applib/_proc.py new file mode 100644 index 0000000..171caaa --- /dev/null +++ b/clint/packages/applib/_proc.py @@ -0,0 +1,155 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +"""Process execution wrappers +""" + +from __future__ import unicode_literals +import os +import sys +import time +import subprocess +from tempfile import TemporaryFile +import warnings + +from applib.misc import xjoin +from applib.misc import safe_unicode + +__all__ = ['run', 'RunError', 'RunNonZeroReturn', 'RunTimedout'] + +warnings.filterwarnings('ignore', message='.*With\-statements.*', + category=DeprecationWarning) + + +class RunError(Exception): + + def __init__(self, cmd, stdout, stderr, errors): + self.stdout = stdout + self.stderr = stderr + + msg = errors[:] + msg.extend([ + 'command: {0}'.format(safe_unicode(cmd)), + 'pwd: {0}'.format(xjoin(os.getcwd()))]) + + if stderr is None: + msg.append( + 'OUTPUT:\n{0}'.format(_limit_str(safe_unicode(stdout)))) + else: + msg.extend([ + 'STDERR:\n{0}'.format(_limit_str(safe_unicode(stderr))), + 'STDOUT:\n{0}'.format(_limit_str(safe_unicode(stdout)))]) + + super(RunError, self).__init__('\n'.join(msg)) + + +class RunNonZeroReturn(RunError): + """The command returned non-zero exit code""" + + def __init__(self, p, cmd, stdout, stderr): + super(RunNonZeroReturn, self).__init__(cmd, stdout, stderr, [ + 'non-zero returncode: {0}'.format(p.returncode) + ]) + + +class RunTimedout(RunError): + """process is taking too much time""" + + def __init__(self, cmd, timeout, stdout, stderr): + super(RunTimedout, self).__init__(cmd, stdout, stderr, [ + 'timed out; ergo process is terminated', + 'seconds elapsed: {0}'.format(timeout), + ]) + + +# TODO: support for incremental results (sometimes a process run for a few +# minutes, but we need to send the stdout as soon as it appears. +def run(cmd, merge_streams=False, timeout=None, env=None): + """Improved replacement for commands.getoutput() + + The following features are implemented: + + - timeout (in seconds) + - support for merged streams (stdout+stderr together) + + `cmd` can be a full command string, or list of prog/args. + + Note that returned data is of *undecoded* str/bytes type (not unicode) + + Return (stdout, stderr) + """ + if isinstance(cmd, (list, tuple)): + shell = False + else: + shell = True + # Fix for cmd.exe quote issue. See comment #3 and #4 in + # http://firefly.activestate.com/sridharr/pypm/ticket/126#comment:3 + if sys.platform.startswith('win') and cmd.startswith('"'): + cmd = '"{0}"'.format(cmd) + + # redirect stdout and stderr to temporary *files* + with TemporaryFile() as outf: + with TemporaryFile() as errf: + p = subprocess.Popen(cmd, env=env, shell=shell, stdout=outf, + stderr=outf if merge_streams else errf) + + if timeout is None: + p.wait() + else: + # poll for terminated status till timeout is reached + t_nought = time.time() + seconds_passed = 0 + while True: + if p.poll() is not None: + break + seconds_passed = time.time() - t_nought + if timeout and seconds_passed > timeout: + p.terminate() + raise RunTimedout( + cmd, timeout, + _read_tmpfd(outf), + None if merge_streams else _read_tmpfd(errf)) + time.sleep(0.1) + + # the process has exited by now; nothing will to be written to + # outfd/errfd anymore. + stdout = _read_tmpfd(outf) + stderr = _read_tmpfd(errf) + + if p.returncode != 0: + raise RunNonZeroReturn(p, cmd, stdout, None if merge_streams else stderr) + else: + return stdout, stderr + + +def _read_tmpfd(fil): + """Read from a temporary file object + + Call this method only when nothing more will be written to the temporary + file - i.e., all the writing has already been done. + """ + fil.seek(0) + return fil.read() + + +def _limit_str(s, maxchars=80*15): + if len(s) > maxchars: + return '[...]\n' + s[-maxchars:] + return s + + +def _disable_windows_error_popup(): + """Set error mode to disable Windows error popup + + This setting is effective for current process and all the child processes + """ + # disable nasty critical error pop-ups on Windows + import win32api, win32con + win32api.SetErrorMode(win32con.SEM_FAILCRITICALERRORS | + win32con.SEM_NOOPENFILEERRORBOX) +if sys.platform.startswith('win'): + try: + import win32api + except ImportError: + pass # XXX: this means, you will get annoying popups + else: + _disable_windows_error_popup() diff --git a/clint/packages/applib/_simpledb.py b/clint/packages/applib/_simpledb.py new file mode 100644 index 0000000..e3b1720 --- /dev/null +++ b/clint/packages/applib/_simpledb.py @@ -0,0 +1,269 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +"""Simple wrapper around SQLalchemy + +This module hides the complexity of SQLAlchemy to provide a simple interface to +store and manipulate Python objects each with a set of properties. Unlike the +default behaviour of sqlalchemy's declaritive_base, inheritance of objects will +not require "join", rather it creates a separate table. This makes it easy to +use objects around from parts of not-so-related applications. + +For example, a ``SourcePackage`` table is created by Grail. Then, PyPM will +extend it as ``BinaryPackage`` which gets extended to ``RepoPackage``. The table +for RepoPackage will be concretely inherited, meaning - there will be just be +one table without having to 'join' to another SourcePackage table. + +At the moment, PyPM and Grail use this module. It may not be of use to others, +and we may change the api/behaviour. Hence, it makes sense to keep it as an +internal module. +""" + +import sys +import os +from os.path import exists, dirname +from contextlib import contextmanager +import json + +from sqlalchemy import Table, Column, MetaData +from sqlalchemy import create_engine +from sqlalchemy.types import String, Text, Boolean, PickleType +from sqlalchemy.orm import sessionmaker, scoped_session, mapper + + +# A PickleType that will work on both Python 2.x and 3.x +# i.e., if you *write* to a DB entry using Python 3.x, we are letting +# Python 3.x apps to read from it as well. +# WARNING: Ideally, if you are starting a new project, please +# use something else like JSON. See +# http://twitter.com/zzzeek/status/9765871731867648 +Pickle2Type = PickleType(protocol=2) + + +def setup(db_class, simple_object_cls, primary_keys): + """A simple API to configure the metadata""" + table_name = simple_object_cls.__name__ + column_names = simple_object_cls.FIELDS + + metadata = MetaData() + table = Table(table_name, metadata, + *[Column(cname, _get_best_column_type(cname), + primary_key=cname in primary_keys) + for cname in column_names]) + + db_class.metadata = metadata + db_class.mapper_class = simple_object_cls + db_class.table = table + + mapper(simple_object_cls, table) + + +def sqlalchemy_escape(val, escape_char, special_chars): + """Escape a string according for use in LIKE operator + + >>> sqlalchemy_escape("text_table", "\\", "%_") + 'text\_table' + """ + if sys.version_info[:2] >= (3, 0): + assert isinstance(val, str) + else: + assert isinstance(val, basestring) + result = [] + for c in val: + if c in special_chars + escape_char: + result.extend(escape_char + c) + else: + result.extend(c) + return ''.join(result) + + +class SimpleDatabase(object): + metadata = None # to be set up derived classes + + class DoesNotExist(IOError): + def __init__(self, path): + super(IOError, self).__init__( + 'database file %s does not exist' % path) + + def __init__(self, path, touch=False): + """ + touch - create database, if it does not exist + """ + self.path = path + sqlite_uri = 'sqlite:///%s' % self.path + self.engine = create_engine(sqlite_uri, echo=False) + self.create_session = sessionmaker( + bind=self.engine, + autocommit=False, + + # See the comment by Michael Bayer + # http://groups.google.com/group/sqlalchemy/browse_thread/thread/7c1eb642435adde7 + # expire_on_commit=False + ) + self.create_scoped_session = scoped_session(self.create_session) + + if not exists(self.path): + if touch: + assert exists(dirname(self.path)), 'missing: ' + dirname(self.path) + self.metadata.create_all(self.engine) + else: + raise self.DoesNotExist(path) + + def reset(self): + """Reset the database + + Drop all tables and recreate them + """ + self.metadata.drop_all(self.engine) + self.metadata.create_all(self.engine) + + def close(self): + self.engine.dispose() + + @contextmanager + def transaction(self, session=None): + """Start a new transaction based on the passed session object. If session + is not passed, then create one and make sure of closing it finally. + """ + local_session = None + if session is None: + local_session = session = self.create_scoped_session() + try: + yield session + finally: + # Since ``local_session`` was created locally, close it here itself + if local_session is not None: + # but wait! + # http://groups.google.com/group/sqlalchemy/browse_thread/thread/7c1eb642435adde7 + # To workaround this issue with sqlalchemy, we can either: + # 1) pass the session object explicitly + # 2) do not close the session at all (bad idea - could lead to memory leaks) + # + # Till pypm implements atomic transations in client.installer, + # we retain this hack (i.e., we choose (2) for now) + pass # local_session.close() + + def __str__(self): + return '{0.__class__.__name__}<{0.path}>'.format(self) + + +class SimpleObject(object): + """Object with a collection of fields. + + The following features are supported: + + 1) Automatically initialize the fields in __init__ + 2) Inherit and extend with additional fields + 2) Ability to convert from other object types (with extra/less fields) + 3) Interoperate with sqlalchemy.orm (i.e., plain `self.foo=value` works) + """ + + # Public fields in this object + FIELDS = [] + + def __init__(self, **kwargs): + """Initialize the object with FIELDS whose values are in ``kwargs``""" + self.__assert_field_mapping(kwargs) + for field in self.FIELDS: + setattr(self, field, kwargs[field]) + + @classmethod + def create_from(cls, another, **kwargs): + """Create from another object of different type. + + Another object must be from a derived class of SimpleObject (which + contains FIELDS) + """ + reused_fields = {} + for field, value in another.get_fields(): + if field in cls.FIELDS: + reused_fields[field] = value + reused_fields.update(kwargs) + return cls(**reused_fields) + + def get_fields(self): + """Return fields as a list of (name,value)""" + for field in self.FIELDS: + yield field, getattr(self, field) + + def to_dict(self): + return dict(self.get_fields()) + + def to_json(self): + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_string): + values = json.loads(json_string) + return cls(**_remove_unicode_keys(values)) + + def __assert_field_mapping(self, mapping): + """Assert that mapping.keys() == FIELDS. + + The programmer is not supposed to pass extra/less number of fields + """ + passed_keys = set(mapping.keys()) + class_fields = set(self.FIELDS) + + if passed_keys != class_fields: + raise ValueError('\n'.join([ + "{0} got different fields from expected".format( + self.__class__), + " got : {0}".format(list(sorted(passed_keys))), + " expected: {0}".format(list(sorted(class_fields)))])) + + +class _get_best_column_type(): + """Return the best column type for the given name.""" + mapping = dict( + name = String, + version = String, + keywords = String, + home_page = String, + license = String, + author = String, + author_email = String, + maintainer = String, + maintainer_email = String, + osarch = String, + pyver = String, + pkg_version = String, + relpath = String, + tags = String, + original_source = String, + patched_source = String, + + summary = Text, + description = Text, + + python3 = Boolean, + metadata_hash = String, + + install_requires = Pickle2Type, + files_list = Pickle2Type, + ) + + def __call__(self, name): + try: + return self.mapping[name] + except KeyError: + raise KeyError( + 'missing key. add type for "{0}" in self.mapping'.format( + name)) +_get_best_column_type = _get_best_column_type() + + +def _remove_unicode_keys(dictobj): + """Convert keys from 'unicode' to 'str' type. + + workaround for + """ + if sys.version_info[:2] >= (3, 0): return dictobj + + assert isinstance(dictobj, dict) + + newdict = {} + for key, value in dictobj.items(): + if type(key) is unicode: + key = key.encode('utf-8') + newdict[key] = value + return newdict diff --git a/clint/packages/applib/base.py b/clint/packages/applib/base.py new file mode 100644 index 0000000..1814e07 --- /dev/null +++ b/clint/packages/applib/base.py @@ -0,0 +1,70 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +"""Base module""" + +import sys +from os.path import abspath, join, expanduser +import logging + +from appdirs import AppDirs + +from applib import location, log +from applib.log import LogawareCmdln as Cmdln + +__all__ = ['Application', 'Cmdln'] + + +class Application(object): + """Object representing the application + + - name: Name of the application + + - company: Company developing the application + + - compatibility_version: The major version which promises + backward-compatability among all of its minor + versions. Eg: 5.2; 5.2.1, 5.2.2, etc.. should + use the same compatability version (5.2). This + value is used in the settings directory path. + + - locations: An object holding a set of OS-specific but + generic location values (eg: APPDATA). See + ``Locations`` class for details. + """ + + def __init__(self, name, company, compatibility_version=None): + self.name = name + self.company = company + self.compatibility_version = compatibility_version + self.locations = AppDirs2( + name, company, compatibility_version, roaming=False) + + def run(self, cmdln_class): + """Run the application using the given cmdln processor. + + This method also ensures configuration of logging handlers for console + """ + assert issubclass(cmdln_class, Cmdln) + l = logging.getLogger('') + log.setup_trace(l, self.locations.log_file_path) + cmdln_class(install_console=True).main() + + +class AppDirs2(AppDirs): + @property + def log_file_path(self): + if sys.platform in ('win32', 'darwin'): + name = self.appname + '.log' + else: + name = self.appname.lower() + '.log' + return join(self.user_log_dir, name) + + +if __name__ == '__main__': + # self-test code + app = Application('PyPM', 'ActiveState', '0.1') + print('user_data_dir', app.locations.user_data_dir) + print('site_data_dir', app.locations.site_data_dir) + print('user_cache_dir', app.locations.user_cache_dir) + print('log_file_path', app.locations.log_file_path) + diff --git a/clint/packages/applib/location.py b/clint/packages/applib/location.py new file mode 100644 index 0000000..dc6412e --- /dev/null +++ b/clint/packages/applib/location.py @@ -0,0 +1,14 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +# This module is deprecated + +from appdirs import * + + +#---- self test code + +if __name__ == "__main__": + print("applib: user data dir: %s" % user_data_dir("Komodo", "ActiveState")) + print("applib: site data dir: %s" % site_data_dir("Komodo", "ActiveState")) + print("applib: user cache dir: %s" % user_cache_dir("Komodo", "ActiveState")) + diff --git a/clint/packages/applib/log.py b/clint/packages/applib/log.py new file mode 100644 index 0000000..a46792d --- /dev/null +++ b/clint/packages/applib/log.py @@ -0,0 +1,336 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +"""Logging utilities and console integration + +Don't use print, use ``LOG.info``. This ensures seemless integration with +application logging. +""" + +import sys +import os +import stat +from os.path import expanduser, join, exists, isabs, dirname +import logging +from datetime import datetime +from contextlib import contextmanager + +from applib import sh, textui, _cmdln as cmdln + + +if sys.hexversion > 0x03000000: + def unicode_literal(s): + return s # strings are unicode by default on py3 +else: + from io import open + def unicode_literal(s): + return s.decode('utf-8') + + +@cmdln.option('-v', '--verbose', action="count", dest='verbosity_level', + default=None, + help='-v will show tracebacks; -vv also debug messages') +class LogawareCmdln(cmdln.CmdlnWithConfigParser): + """A Cmdln class that integrates with this modules's functionality + + 1. Add -v and -vv global options: show tracebacks when sub commands throw + them only if -v or -vv is passed by the user. + + 2. Wrap all sub command methods and call `initialize` (to be defined by the + derived class) automatically. + """ + + def __init__(self, install_console=False, default_verbosity=0, *args, **kwargs): + """ + Arguments: + - install_console: install console handlers in logger + """ + cmdln.CmdlnWithConfigParser.__init__(self, *args, **kwargs) + self.__initialized = False + self.__install_console = install_console + self.__default_verbosity = default_verbosity + + def initialize(self): + """This method is called by ``bootstrapped`` - once and only once.""" + raise NotImplementedError('must be defined by the derived class') + + @contextmanager + def bootstrapped(self): + """Run the sub-command after bootstrapping + + It is required to wrap the sub-command code in this context, which takes + care of the following: + + - Invokes `setup_console` passing `verbosity_level` + - Invokes `self.initialize` automatically but no more than once. + - Intercept unhandled exceptions and display them according to + verbosity_level + """ + l = logging.getLogger('') + + if not self.__initialized: + # install console (if required) and call the `initialize` method + # once. + if self.__install_console: + if self.options.verbosity_level is None: + self.options.verbosity_level = self.__default_verbosity + setup_console(l, self.options.verbosity_level) + with self.__run_safely(l): + self.initialize() + self.__initialized = True + + with self.__run_safely(l): + yield + + @contextmanager + def __run_safely(self, l): + try: + yield + except KeyboardInterrupt: + # user presses Ctrl-C to terminate the program + l.info('') # print a new-line for the shell prompt's sake + sys.exit(5) + except Exception as e: + if self.__install_console: + # setup_console handles all exceptions; let it do so by calling + # log.exception and exitting immediately. + l.exception(e) + sys.exit(1) # exit to shell + else: + # as setup_console is not used, raise exceptions normally. + raise + + +def setup_console(l, verbosity_level): + """Setup console output for logging calls""" + l.setLevel(logging.DEBUG) # level-logic is instead in the handler + + existing_consoles = [h for h in l.handlers if isinstance(h, ConsoleHandler)] + if existing_consoles: + assert len(existing_consoles) == 1, \ + 'more than one console installed. not possible.' + # re-use existing console handler + h = existing_consoles[0] + assert h.verbosity_level == verbosity_level, \ + 'already has console with different verbosity level' + else: + # create a new console handler + h = ConsoleHandler(verbosity_level) + h.setFormatter(ConsoleFormatter()) + l.addHandler(h) + + +def setup_trace(l, tracefile): + """Trace logging calls to a standard log file + + Log file name and location will be determined based on platform. + """ + l.setLevel(logging.DEBUG) # trace file must have >=DEBUG entries + sh.mkdirs(dirname(tracefile)) + _rollover_log(tracefile) + _begin_log_section(tracefile) + h = logging.FileHandler(tracefile) + h.setFormatter( + logging.Formatter( + "%(asctime)s - %(name)s - %(levelname)s - %(message)s")) + l.addHandler(h) + + +@contextmanager +def handledby(l, filename, create_dirs=False, level=None, formatter=None): + """Momentarily handle logger `l` using FileHandler + + Within the 'with' context, all logging calls made to the logger `l` will get + written to the file `filename`. When exiting the 'with' context, this file + is closed and the handler will be removed. + """ + assert isabs(filename), 'not an absolute path: {0}'.format(filename) + + if create_dirs: + sh.mkdirs(dirname(filename)) + + h = logging.FileHandler(filename) + if level: + h.setLevel(level) + if formatter: + h.setFormatter(formatter) + l.addHandler(h) + + try: + yield + finally: + h.close() + l.removeHandler(h) + + +@contextmanager +def archivedby(l, logs_directory, entity_name, level=None, formatter=None): + """Like `handledby` but the log file is stored in archive. + + The exact path to the log file is determined as follows: + + $logs_directory/2009/03/24/142356_$entity_name.txt + """ + now = datetime.now() # NOTE: this is local time, not UTC time. + filename = join(logs_directory, + now.strftime('%Y'), now.strftime('%m'), now.strftime('%d'), + '{0}_{1}.txt'.format(now.strftime('%H%M%S'), entity_name)) + assert not exists(filename), 'already exists: {0}'.format(filename) + with handledby(l, filename, create_dirs=True, + level=level, formatter=formatter): + yield filename + + +@contextmanager +def wrapped(l): + """'With' context to intercept and log any exceptions raised""" + try: + yield + except Exception as e: + l.exception(e) + raise + + +def runonconsole(l): + """Run on console .. and exit the program appropriately. + + If an exception is raised, it is silently logged (so + + + >>> with log.run(logging.getLogger('pypm')) as retcode: + """ + try: + yield + except Exception as e: + l.exception(e) + sys.exit(1) + sys.exit(0) + + +try: + from logging import NullHandler +except ImportError: + class NullHandler(logging.Handler): + def emit(self, record): + pass + + +# -- internal + +def _rollover_log(logfile, maxsize=(2<<20)): + """Move $logfile to $logfile.old if its size exceeds `maxsize`""" + if exists(logfile): + filesize = os.stat(logfile)[stat.ST_SIZE] + if filesize >= maxsize: + sh.mv(logfile, logfile+'.old') + + +def _begin_log_section(logfile): + """Begin a new section in the logfile + + Also write the current datetime + """ + LINE_BUFFERED=1 + with open(logfile, 'a', LINE_BUFFERED, encoding='utf-8') as f: + f.write(unicode_literal('\n')) # sections are separated by newline + f.write(unicode_literal('{0}\n'.format(datetime.now()))) + + +class ConsoleHandler(logging.StreamHandler): + """Send messages to console + + INFO messages are sent to stdout. Other levels to stderr. + + By default, INFO/WARN/ERROR messages are sent as-it-is to console .. while + EXCEPTION messages are pruned and shown as error unless verbosity level is + greater than zero. If verbosity level is greater than one, then DEBUG + messages are also shown. + """ + + def __init__(self, verbosity_level): + logging.StreamHandler.__init__(self) + self.stream = None # reset it; we are not going to use it anyway + self.verbosity_level = verbosity_level + + def emit(self, record): + if record.levelno == logging.INFO: + self.__emit(record, sys.stdout) + elif record.levelno == logging.WARN: + self.__emit(record, sys.stderr) + elif record.levelno == logging.DEBUG: + # show DEBUG messages with verbosity_level >= 2 + if self.verbosity_level > 1: + self.__emit(record, sys.stderr) + elif record.levelno >= logging.ERROR: + if record.exc_info and self.verbosity_level < 1: + # supress full traceback with verbosity_level <= 0 + with new_record_exc_info(record, None): + self.__emit(record, sys.stderr) + else: + self.__emit(record, sys.stderr) + else: + raise NotImplementedError( + "don't know about level: {0}".format(record.levelno)) + + def __emit(self, record, strm): + # override handler stream with ours (which could stdout or stderr) + self.stream = strm + + with textui.safe_output(): + # We *trust* that `logging` module's `emit()` will always terminate the + # message with newlines. This is essential for not breaking the progress + # bar, if any. + logging.StreamHandler.emit(self, record) + + def flush(self): + # Workaround a bug in logging module + # See: + # http://bugs.python.org/issue6333 + if self.stream and hasattr(self.stream, 'flush') and not self.stream.closed: + try: + logging.StreamHandler.flush(self) + except IOError as e: + if e.errno == 32: + # skip 'broken pipe' errors that likely occur due to + # killing the process on the other end of the pipe + # eg: piping command output to `less` and then pressing + # Q in the middle of it. + pass + else: + raise + + +def _clear_record_traceback_cache(record): + """Clear the traceback cache stored in `record` (LogRecord) + + Workaround for: http://bugs.python.org/issue6435 + """ + record.exc_text = None + + +@contextmanager +def new_record_exc_info(record, exc_info): + """Temporarily assign `exc_info` to `record`""" + _clear_record_traceback_cache(record) + old_exc_info = record.exc_info + record.exc_info = exc_info + try: + yield + finally: + record.exc_info = old_exc_info + _clear_record_traceback_cache(record) + + +class ConsoleFormatter(logging.Formatter): + """A formatter that attaches 'error:' prefix to error/critical messages""" + + def format(self, record): + # attach 'error:' prefix to error/critical messages + # attach 'warning:' prefix accordingly + s = logging.Formatter.format(self, record) + if record.levelno >= logging.ERROR: + return 'error: {0}'.format(s) + elif record.levelno == logging.WARNING: + return 'warning: {0}'.format(s) + else: + return s + diff --git a/clint/packages/applib/misc.py b/clint/packages/applib/misc.py new file mode 100644 index 0000000..80b1bb0 --- /dev/null +++ b/clint/packages/applib/misc.py @@ -0,0 +1,104 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +"""Miscelleneous utility functions +""" + +import sys +from os import path +import six + +from applib import _cmdln as cmdln + +__all__ = ['xjoin', 'existing'] + + +def xjoin(*c): + """Equivalent to normpath(abspath(join(*c)))""" + return path.normpath(path.abspath(path.join(*c))) + + +def existing(pth): + """Return path, but assert its presence first""" + assert isinstance(pth, (str, unicode)), \ + 'not of string type: %s <%s>' % (pth, type(pth)) + assert exists(pth), 'file/directory not found: %s' % pth + return pth + + +def require_option(options, option_name, details=None): + """ + >>> require_option('foo-bar') + ... + CmdlnUserError: required option, --foo-bar, is mising + + From http://twitter.com/ActiveState/status/19782350475 + 'required options' - conforming to unix standard vs being creative with + non-positional arguments. http://bit.ly/d2iiUL #python #optparse ^SR + """ + option_var_name = option_name.replace('-', '_') + if not hasattr(options, option_var_name): + raise ValueError( + "require_option: undefined option '%s'" % option_var_name) + if getattr(options, option_var_name) is None: + msg = 'required option "--{0}" is missing'.format(option_name) + if details: + msg = '%s (%s)' % (msg, details) + raise cmdln.CmdlnUserError(msg) + + +def safe_unicode(obj): + """Return the unicode/text representation of `obj` without throwing UnicodeDecodeError + + Returned value is only a *representation*, not necessarily identical. + """ + if type(obj) not in (six.text_type, six.binary_type): + obj = six.text_type(obj) + if type(obj) is six.text_type: + return obj + else: + return obj.decode(errors='ignore') + + +def _hack_unix2win_path_conversion(cmdln_options, option_names): + """Hack to convert Unix paths in cmdln options (via config file) to + Windows specific netshare location + + Config file must define the mapping as config var "unix2win_path_mapping" + """ + require_option(cmdln_options, 'unix2win_path_mapping') + + for opt in option_names: + setattr( + cmdln_options, + opt, + _cmdln_canonical_path( + cmdln_options.unix2win_path_mapping, + getattr(cmdln_options, opt))) + + +def _cmdln_canonical_path(unix2win_path_mapping, unixpath): + """Given a unix path return the platform-specific path + + On Windows, use the given mapping to translate the path. On Unix platforms, + this function essentially returns `unixpath`. + + The mapping is simply a buildout.cfg-friendly multiline string that would + get parsed as dictionary which should have path prefixes as keys, and the + translated Windows net share path as the values. See PyPM's + etc/activestate.conf for an example. + + The mapping is typically supposed to be defined in the config file under + the cmdln section. This function is used by PyPM and Grail. + """ + unix2win_path_mapping = unix2win_path_mapping or "" + + # convert buildout.cfg-style multiline mapping to a dict + m = dict([ + [x.strip() for x in line.strip().split(None, 1)] + for line in unix2win_path_mapping.splitlines() if line.strip()]) + + if sys.platform.startswith('win'): + for prefix, netsharepath in m.items(): + if unixpath.startswith(prefix): + return netsharepath + unixpath[len(prefix):] + return unixpath diff --git a/clint/packages/applib/sh.py b/clint/packages/applib/sh.py new file mode 100644 index 0000000..9e37187 --- /dev/null +++ b/clint/packages/applib/sh.py @@ -0,0 +1,203 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +"""Various shell related wrappers +""" + +import os +from os import path +import shutil +import tempfile +from fnmatch import fnmatch +from contextlib import contextmanager + +from applib._proc import * + + +# +# Compression routines +# + +class PackError(Exception): + """Error during pack or unpack""" + + +def unpack_archive(filename, pth='.'): + """Unpack the archive under ``path`` + + Return (unpacked directory path, filetype) + """ + from applib import _compression + + assert path.isfile(filename), 'not a file: %s' % filename + assert path.isdir(pth) + + for filetype, implementor in _compression.implementors.items(): + if implementor.is_valid(filename): + with cd(pth): + return (implementor(filename).extract(), filetype) + else: + raise PackError('unknown compression format: ' + filename) + + +def pack_archive(filename, files, pwd, filetype="tgz"): + """Pack the given `files` from directory `pwd` + + `filetype` must be one of ["tgz", "tbz2", "zip"] + """ + from applib import _compression + + assert path.isdir(pwd) + assert filetype in _compression.implementors, 'invalid filetype: %s' % filetype + + if path.exists(filename): + rm(filename) + + with cd(pwd): + relnames = [path.relpath(file, pwd) for file in files] + _compression.implementors[filetype].pack(relnames, filename) + + return filename + + +# +# Path/file routines +# + +def mkdirs(pth): + """Make all directories along ``pth``""" + if not path.exists(pth): + os.makedirs(pth) + else: + assert path.isdir(pth) + + +def rm(p): + """Remove the specified path recursively. Similar to `rm -rf ARG` + + Note: if ARG is a symlink, only that symlink will be removed. + """ + if path.lexists(p): + if path.isdir(p) and not path.islink(p): + shutil.rmtree(p) + else: + os.remove(p) + + +def mv(src, dest, _mkdirs=False): + """Move `src` to `dest`""" + if _mkdirs: + mkdirs(path.dirname(dest)) + shutil.move(src, dest) + + +def cp(src, dest, _mkdirs=False, ignore=None, copyperms=True): + """Copy `src` to `dest` recursively""" + assert path.exists(src) + + if _mkdirs: + mkdirs(path.dirname(dest)) + + if path.isdir(src): + _copytree(src, dest, ignore=ignore, copyperms=copyperms) + else: + shutil.copyfile(src, dest) + + +def find(pth, pattern): + """Find files or directories matching ``pattern`` under ``pth``""" + matches = [] + if path.isfile(pth): + if fnmatch(path.basename(pth), pattern): + matches.append(pth) + else: + for root, dirs, files in os.walk(pth): + matches.extend([ + path.join(root, f) for f in files+dirs + if fnmatch(f, pattern) + ]) + return matches + + +@contextmanager +def cd(pth): + """With context to temporarily change directory""" + assert path.isdir(existing(pth)), pth + + cwd = os.getcwd() + os.chdir(pth) + try: + yield + finally: + os.chdir(cwd) + + +@contextmanager +def tmpdir(prefix='tmp-', suffix=''): + """__with__ context to work in a temporary working directory + + Temporary directory will be deleted unless an exception was raised. During + the context, CWD will be changed to the temporary directory. + """ + d = tempfile.mkdtemp(prefix=prefix, suffix=suffix) + with cd(d): + yield d + rm(d) + + +def existing(pth): + """Return `pth` after checking it exists""" + if not path.exists(pth): + raise IOError('"{0}" does not exist'.format(pth)) + return pth + + +def _copytree(src, dst, symlinks=False, ignore=None, copyperms=True): + """Forked shutil.copytree for `copyperms` support""" + names = os.listdir(src) + if ignore is not None: + ignored_names = ignore(src, names) + else: + ignored_names = set() + + os.makedirs(dst) + errors = [] + for name in names: + if name in ignored_names: + continue + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) + try: + if symlinks and os.path.islink(srcname): + linkto = os.readlink(srcname) + os.symlink(linkto, dstname) + elif os.path.isdir(srcname): + _copytree(srcname, dstname, symlinks, ignore, copyperms) + else: + shutil.copy(srcname, dstname) + # XXX What about devices, sockets etc.? + except (IOError, os.error) as why: + raise + errors.append((srcname, dstname, str(why))) + # catch the Error from the recursive copytree so that we can + # continue with other files + except shutil.Error: + _, err = sys.exec_info() + errors.extend(err.args[0]) + if copyperms: + try: + shutil.copystat(src, dst) + except WindowsError: + # can't copy file access times on Windows + pass + except OSError: + _, why = sys.exec_info() + errors.extend((src, dst, str(why))) + if errors: + raise shutil.Error(errors) + + +# WindowsError is not available on other platforms +try: + WindowsError +except NameError: + class WindowsError(OSError): pass diff --git a/clint/packages/applib/test/all.py b/clint/packages/applib/test/all.py new file mode 100644 index 0000000..02ca448 --- /dev/null +++ b/clint/packages/applib/test/all.py @@ -0,0 +1,195 @@ +# Copyright (c) 2010 ActiveState Software Inc. All rights reserved. + +from __future__ import unicode_literals +import os +from os import path +import tempfile +import sys + +import pytest + +from applib import sh +from applib import textui +from applib.misc import safe_unicode +import six + + +fixtures = path.join(path.dirname(__file__), 'fixtures') + +def test_import(): + import applib + import applib.base + import applib.sh + import applib.textui + import applib.log + import applib.misc + + +def test_sh_runerror_unicode(): + # https://github.com/activestate/applib/issues/12 + with pytest.raises(sh.RunError): + try: + sh.run('echo ' + "\u1234" + " & nonexistant") + except sh.RunError as e: + print(safe_unicode(e)) + raise + + +def test_sh_runerror_limit(): + with pytest.raises(sh.RunError): + from random import choice + import string + LINE = ''.join([choice(string.ascii_letters) for x in range(80)]) + try: + sh.run(r'''python -c "print('\n'.join(['%s']*100)); raise SystemExit('an error');"''' % LINE) + except sh.RunError as e: + c = str(e).count(LINE) + # def _limit_str(s, maxchars=80*15): --- so ~ 15 lines (not 100 lines) + assert c < 20, "original message: %s" % e + assert '[...]' in str(e) + raise + + +def test_safe_unicode(): + from applib.misc import safe_unicode + import six + + abc_bytes = b'ab\nc' + abc_text = 'ab\nc' + + assert safe_unicode(abc_bytes) == abc_text + assert safe_unicode(abc_text) == abc_text + + foo_text = 'abc' # note: \x89 is ignored. + foo_bytes = b'\x89abc' + + assert safe_unicode(foo_text) == foo_text + assert safe_unicode(foo_bytes) == foo_text + + +def test_sh_rm_file(): + with sh.tmpdir(): + with open('afile', 'w') as f: f.close() + assert path.exists('afile') + sh.rm('afile') + assert not path.exists('afile') + + +def test_sh_rm_dir(): + with sh.tmpdir(): + sh.mkdirs('adir') + with sh.cd('adir'): + with open('afile', 'w') as f: f.close() + assert path.exists('afile') + assert path.exists('adir') + sh.rm('adir') + assert not path.exists('adir') + + +# Workaround a py.test bug: +# Error evaluating 'skipif' expression +# b'sys.platform == "win32"' +# Failed: expression is not a string +def skipif(expr): + if not six.PY3: + expr = expr.encode() + return pytest.mark.skipif(expr) + + +@skipif('sys.platform == "win32"') +def test_sh_rm_symlink(): + with sh.tmpdir(): + with open('afile', 'w') as f: f.close() + assert path.exists('afile') + os.symlink('afile', 'alink') + assert path.lexists('alink') + sh.rm('alink') + assert not path.lexists('alink') + + +@skipif('sys.platform == "win32"') +def test_sh_rm_broken_symlink(): + with sh.tmpdir(): + os.symlink('afile-notexist', 'alink') + assert not path.exists('alink') + assert path.lexists('alink') + sh.rm('alink') + assert not path.lexists('alink') + + +@skipif('sys.platform == "win32"') +def test_sh_rm_symlink_dir(): + with sh.tmpdir(): + sh.mkdirs('adir') + with sh.cd('adir'): + with open('afile', 'w') as f: f.close() + assert path.exists('afile') + assert path.exists('adir') + os.symlink('adir', 'alink') + assert path.lexists('alink') + sh.rm('alink') + assert path.exists('adir') + assert not path.lexists('alink') + + +def test_console_width_detection(): + width = textui.find_console_width() + assert width is None + + +def test_colprint(): + sample_table = [ + ['python-daemon', '4.5.7.7.3-1', 'blah foo meh yuck'], + ['foo', '6.1', ('some very loooooooooong string here .. I ' + 'suggest we make it even longer .. so longer ' + ' that normal terminal widths should entail ' + 'colprint to trim the string')]] + textui.colprint(sample_table) + + # try with empty inputs + textui.colprint(None) + textui.colprint([]) + + +def test_compression_ensure_read_access(): + """Test the ensure_read_access() hack in _compression.py""" + def test_pkg(pkgpath): + testdir = tempfile.mkdtemp('-test', 'pypm-') + extracted_dir, _ = sh.unpack_archive(pkgpath, testdir) + # check if we have read access on the directory + for child in os.listdir(extracted_dir): + p = path.join(extracted_dir, child) + if path.isdir(p): + os.listdir(p) + sh.rm(testdir) + + yield 'u-x on dirs', test_pkg, path.join(fixtures, 'generator_tools-0.3.5.tar.gz') + yield 'u-w on ._setup.py', test_pkg, path.join(fixtures, 'TracProjectMenu-1.0.tar.gz') + + +def test_compression_catch_invalid_mode(): + """Error from + tarfile.py should be handled""" + def extract(): + testdir = tempfile.mkdtemp('-test', 'pypm-') + extracted_dir, _ = sh.unpack_archive( + path.join(fixtures, 'libtele-0.2.tar.gz'), testdir) + if sys.platform == 'win32' and sys.version_info[:2] >= (2, 7): + with pytest.raises(sh.PackError): + extract() + else: + extract() + + +@pytest.mark.xfail +def test_compression_issue_11(): + """https://github.com/ActiveState/applib/issues/#issue/11 + + * Windows: IOError: [Errno 13] Permission denied: '.\\airi-0.0.1\\AIRi' + * OSX: IOError: [Errno 21] Is a directory: './airi-0.0.1/AIRi + * OSX Archive Utility (Finder): Unable to unarchive "airi-0.0.1.tar" ... + (Error 1 - Operation not permitted.) + """ + testdir = tempfile.mkdtemp('applib') + d, _ = sh.unpack_archive(path.join(fixtures, 'airi-0.0.1.tar.gz'), testdir) + diff --git a/clint/packages/applib/test/fixtures/TracProjectMenu-1.0.tar.gz b/clint/packages/applib/test/fixtures/TracProjectMenu-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..741c65bec5a2e55fd43b098dd696e57785bbb636 GIT binary patch literal 1943 zcmV;I2Wa>oiwFp6k=R8715|QhV^DH$YGq?|O=WI%Eio=IE_7jX0PPy@Z|kn zwyZdf-IsZ3%L8mlrz3gf{ovhE!vuSm342RC@rFcc!?EmU<(a_-IP7-S6=3n)TRtnC zV|RN!2mZTG#df;gR=0w>l|4Yp1x^sEB#en4qVt$f5*$rP^7th4$;srfBE{) zjq|~m7tbmGUZ?Y@{JV$UlKgwUwo^g2mjC}8-VlL(EO6r+l5onRJ^~Fe1~?>rRMHJ& zjpRBFL!8X}2qiF-Eq#=Shg zIvWh#)AOr_n8yThBGTA0{=!1ii17q?m04{GKH~?<2_!iq()POano)xfz!M7Gsu#t41dQ=A4cx0j|DGU{#@u zJJesSt?@$bKbwveXY>E!|6AZMZ0-MFg8W^VMpU@270;i=|L1bwEPuPxwWa*qZMpyN z)&D;w-(RTwE%%;`+?0N({5yrEDP8SWueG#)2kz~be0pK~|NWGZ;E7581m$1(%^!YS z`8C7=u%%sGqrajIB(Cy1__g5o5BSOFe{a|2@o;!mdHJOR+L=Mf(t!GzTH9sh>N&X)4AxJxX zt|)vmMiV03Xi4T$K|*eF5{&C8A>U=}NLc1dN9g8uiRA<*-qe+|t0OU`+|B5KjB!ii zEglC{s6H)NPlc;3I~ZY3+%yU5$b}}$rOFxs3l<)6cbbr~SzEPQ-auxPb0(8G7&4$- z_%tyKoE2uF)^)sW^6}9c)9ZBktfdwJZx1xW%qRGk(a2m|iLAc@#}7DPA0Y@~1W+IA z;&OO?F);ISt*j@IQAp}&hJ%zGtyW2myjsE?hn3>Aa17J(O*7}Cjy8^6=yTbWgLaz% z4o5ylxITg`HjGVtvW3SKKyh+vh;a?xdX{9$htQeEiJt|POs5G%FWun^U1 ztqzHGL^i3$%FLx2)ls#$g%s|sx4gP)KBpw`Q5DPtgIQG9o57=G?fUGivy-8DLzMcF zx+_&LpT})oP4KAHj{0Q`i@d4y-A7f3Ez$&(H*yOU?&7Uk`@CA3TyD156Ldz(*1OSo zvk|J*^_~tMI*^SHVk&&*aTm;L;TsA)E3X*eP27ZVmL?wIxl_y$?wAHdE=if28?&?` z4_cV661VGu7#2KKYqi_Wt0A(9Y-aP|$MAWOGx~#!EeEa^Sj$`9>S*qH;=e@|&Kpnm zRR6UP+ok&NVY}1Q_1}HK4Vg?_8jabl0q)ivr4(H95mFC6SQ^~h>VeN9u;&?-6<~!l zwDJ5*?cZ`29^iwLzMbknPG0{zY&q)ur{g%f{_|q$KY!2aKmXdP{&SkOkaeDq9;yF) z^mP5FYcK0RpXu_?{`UXpvi>LQKTf-B|1EGAhr0f=4>zsv8c`{B@v7T%ivyN3`1Q^6`jkt9n7{`QnG4Yy`3$N zlO+LYU51RYcZVlLl|I%|mfN-WGB&|L^KLz7>_ekP^3r@IbIn`yzHX>?SRDaFi%&|2 z!=Ka(?_G67EU7jf5@)3T>U3CAKL7c5HcqfOl9pq9aebO0@3K>9iGA!GIwMUJHIrRV z(6g4_^3+<%VVP-F9~@z4Qp<$1NOWlgCKUt_Eq<5MBon11{+5i6{g6gdmWouZl^Zh} zsan^&)j+EDx0o82QeCU56h&?=3e>Wm^#GYMrx;Xs?~R&{TA%j+C7cB*LPMqq%@6SZ zyPf~HTD^`w|9^4v_lc}ulE|C85Rri=5#NjF$p39;CI8ML$iLTaAL{&nAE5oA_WxVk ze{sLw()PEj|Jfz`?{=mC*Y>}M`d=~9x;3_ptaS137is@L^26|*zW-MC58HoN+y6d5 zfB&t&|K8gEuP?s7Iyt-EVe8+@{@V}izau{b)Aqjy$ZNgElTP2*MlFn;az|t9Nb_+@ z!D2TcGZHAWM?PIQHh$8mgP0xde{HRw&;ISg_n%q(Z#(+@e=krl3~de?G-%MEL4yVj d8Z>Coph1HM4H`6P(C{;Y{{n0M-@gD*007P?-Vgu) literal 0 HcmV?d00001 diff --git a/clint/packages/applib/test/fixtures/airi-0.0.1.tar.gz b/clint/packages/applib/test/fixtures/airi-0.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..19f8c5ac85be6e5f7af9dfafe78e029f7e5ff347 GIT binary patch literal 252631 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

sJmtZDL?fS^ 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

2IsIOrX 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 literal 0 HcmV?d00001 diff --git a/clint/packages/applib/test/fixtures/generator_tools-0.3.5.tar.gz b/clint/packages/applib/test/fixtures/generator_tools-0.3.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..592f4cd8d18be4936fe08328e76b414c8ee17299 GIT binary patch literal 87801 zcmV(vKfO$q5fO*1Frh?(SKV8yZ7?C@FD5 zrc)>s;*djy35>xtY;{V~N8oB;b>za3Z{kyxnx{j{@yJ!7N zc4O9Wb2E*Fi7K1Rwpjn}Y%aHstpD1se7+mt^0{13HlbvXuK(NqG3yQ6@f6FLUcQWe zM~m(M@Mar^>;H0R;d{lg>x$hd*=0i^?W>kATfR)w^jb~Rl!7vz9GTP|eWGS0)617B z!6&(e>ClL!H{40vlL0OQqC*oq!_AFZAGd#|WHda}wqz*8xaO;=+&kcr_8q1%E%#MG z(@p4)ngf6tJxDfdkI!@%r(l2XDcPg&^<$e9;4*B3Q$+v zhCXeXR#nlR3Da|QXI9ZY&oL*Op5ZDJ@XK}0s#P~EFB#Bha!e6YDjmqB%^>Shr)eN~ zh7ppmgxb;3LB0&(W~E74p0sOarL228=C)?;LcDS&FJYIBilS+zWqO*Ha*bLgtyGZc z*)Zs1Rut1UEwC@EWTbF+S`j45L*sb?p^WAk^+pZJub@zMAjmi;C}wa^3q-pF(*ndlx+(zj8^hFaPX-L8?(#E0nlok0 zrj=cKtqH!tqBNvc7WD$drj?YS7-`~nGJfMI{8VLiiJ!_iuu%lo!`6U@lk~@cC5<2r zd`{{vvQoxmQbVG^ZbnN+af3b>Hlt}EjgkS@p)QnZOn_-3GBnfG(3sfH_)#6hYdV(C zBr(IJZzV}Ja0^U_L}w6T#Yn{fh#v-XOWT1x`i*B0iN%BU^bAUeM=yhy5j6{1GR+1! z8zYs%`U2Sg4A@9%q)MvFlnQB6*%U!kv_#OCK_T38r%i7%1wjCohLd^CMZ?!j*Gs{; zd}vq7EgxZSAhjq#3={?V~v zZE$F4xTBa>gvS2MF6tj14K;5b*w!~V_~DKs4&FPP^@e6QfFjt=PRFPzo%owR;RaIK zWawpI!p6y0|B+Hs)cA8Wn*(xiR?S&!YgSj~kgM}|p%AAf$ zPnpCrh>}%Km6~d#JW5Soq28pzQen-fu#t>OFp>r{=OoNHroy-gL$U(HF&d8HLV1Jh zOI*E}UQBgSs@b?!64LERhi9<4g^Y-n0|g};@-GO5x;~06yEj}70LV7mG8SOCgtX`# zMYl@zjq+bN>Nd`ecuFPg00jYa#6_Ja*$|PIqys=EkO3!=mi|gWs_Qc;4smrZtz=b! zPf(seY#OddanoDC@hR@s>8cN{+_kXJ(@7gw^(%f{+l(bpbG;0&WdR0sK`K#@fKdXt%n z5EleLi&+ZbTKn60Z^}853~vP-LCvJXXzhQ3xgviOKiA}X-hdR{Q_gXF;h%#4yC8W^ zippIT)F{nc3Kl;ajO`Aku)_k+#RjB<3AP#)Gzbz`jt$|AHU$dZBAv4v!opZyCJZ1u zAf%mI4J5fb7un@Rc5!+rQ>>ZRlu_0^+xLb-H_D_bNg}I~U2ilY!y_V0kw0m=UFavj z!$ZTEMuBGONodeUhlZ0hg%}*_+a&a(25ocS$S8vt86Dc*&qLq_0fag-KaBvLrEH8- z^IqSb6;mRqA5|y7nWW7=T_rlDk^QWc&EUF28i->M<#gj{y2Vafri8Vd9|7h)jIw*+ zGfkwzsG(svz?H;-+SI8|PnswM44b<>0w5_8UeH%xH2FFJG@stB*1HfE1j4beK`*nX&Zp=VTLfPtg*gvGLbe0d?(Fnq% z0BLPINWPaUilLB*UUn16f~ceC2W4^*_MZrX;B5&}8AM_$ofY|xQ1%w{4_GO7k{vR0 zSKUT|AXu-olJD+O$9sEGLh|M$M2&1b){YwYyTZ7cX*VFj*ByhJ^8|!r1d^tqS`4>nLN&W2sjMj${{(<*;4>gb zUyWL4)+yvcLN4TQQb!~)I7L?X$4Mw-#MQE;5mw?YF_L3arQA3+Ft|w@96*LHjkq$N zP?%1Tg+)IK#B_pc!+!!12~Q-Yq0|rX;`@17%Q^9p(4PhBP&*5}09|WG-`df+pontW z)9Kfd8Ph>X z#E-wzSi>~J=o#0R~_kMHEL_IG>4%<}+y_md}t-K7({3MVNuiMMcWZQ4P&o z=;LyFe0WNOUX69L{VtlbSmeA!kQGGjA}75`)1@fMbZAqCPa3evvwS0zX#_Z&+=wHh zBs#}^ZKeA;MM?Y%NEXF)XqC_eDpC#~Ok&ARWGFrYSq(mxk@lZL24^OCA;le$!6V>p z#{$_DHp?-P=raKdF%=n;v04UFXgwPB0iAw?Td%atQ>4XcnXN?IxBP)>)ibT85e*UJ zGNSc@Zt2GOhnl$N|GJH!~ikCOQ%=}b$FU$$Md5Y1s;gFT`uo{e#;A<0oEP?Vp1=;fVF*Q159%MYlw8_FaS z?5Ry?vz?wkBVIRfr4f*=5*jnUyp5$4v&k={Vtk$ziWC$ILM>Wbw67LjKFyag`YAFb zauaUK1nVKB*<2T9)QprsfQcU@5 z6D95#E>Fxg=n)DCPfm3nW-u@U<0*KPjy;|7W*hjxb^+OLTJa_d^5%F1J%S1ZF)G4p z{{SH+7e1QJ4WQ0*ZqTJT@v1A{1xfh`b%!FYtbj56%l}$O@2&T6Hy~a_lEKOu3J{ z%My7dguk^CE>WecD&ifLBji!I12`JNG|MUYqRQ#2VWCqju2Lteh%y^=TgerV*HT>5 z64>u0Buq~!+lFg(c*?ZxOexbwtp;w$ZdNBVnM{j|I^xEDj8l?l84)_$BT79jy?Vhe zTS0s;Ne6$}5h&juE^Py%U97D`pJ>5fXneq!Kz)xtZAt({t=b z^pJJ?#^T#rq!XYr-$3TmOB5V3M+26ae8(P2bXo$c&l%0`#mhpWv+g_4-4=X&E|t7U zM~Z++;$T@0*h{KD(FI%~qpPBcQYLq2DxB%c=W1oTBN5RBFv!%{WgIz|uHuOlq>w^M zlh`U;OY?s+7m*gPqD3DMj+`4Fnx7lfOFDY&**r>=jw>F_BT(Emv=%qqI46baFAh?KpLL!KA}k0ECxYfERe0XOGl=|=_16dRDi-2dXTcK{DU0s zIdL!YQNy#~kSryi=~iYM>Gdpe5N|h#^l=$!&M3;%$bY`@f5(cCAwk8A^c|>tGY<=048K?r41|p3?mc zG>EvP;m@#FelAb%l%j`u7AXd!FYVw^+r||L!n%LkLX5j8lB?1^3o(|ryc+`Z--S*U zW3J;4G>4gBcoGnio(x38fCS5lU)Wm1GvLw)K39om1_4O;c)7qcGMCj79~X%&bFJ|C z`{;Gau(R#*vT&#F(F#W$x{sR|f#T0)XCm*E_?{GJY@Bq-p%8Ek(NBV<%{wi4Iz6t~ z#I-Qb67wh-jl8}Px;JH3LR@h4L+9#oP8D-~GdX63ZrWfcYdfoJHn_eDQm~9N1|$p< zythNP3~?toct?;QdznFo`3B#KP{GGJoO$46XT!kIV~5BNyn1R7E$O=!P@NZ1xi($2 z=J>q^G(?4g7$u>~6+y}5Lpcdr9_A!{mQaR*9ehFId^>51bLcW0eyl1tb}C^Zr^a-lERVsO=YALoNX{B1TCqT+6HO*kz zrfX^yQ7KiZHKnbp`Szd4E*IXpiYyuUmvuzF%Y+!7>#{O{@Fu;sLd@Og>*wETQ59>S z7;yg;6xFyQf!S^u<(hR^8s^V^qXJ9TQI!d~t=q6so&we#09Cm%W+i$F3s@6csa|E; zP>7u)SMcG1{=rS!j=sUMem{{#?;B9?qXqv_a)uG&KZ7vR6xy4@89n4e6NVEBI68@n zZ$ohn-6>7tFoMROS`Fib8Q}bea;XtWAc`^~LpY^gFc0C5lBw9Wnmvu&9yf-+e^6x( zgsxaMYDt3}cm8*xh_L?Y>}t#_O9&W0d#C|$3XjV-uERe?!9547YPg2egmjfX7%PN| zs1jx*bSMJlRwyyz29t~bU>y08Cn<7{*o75ta+Ow-!|`H)9SiuX<7%>ua#JVxhIzB@_1zv#uxCwJwp(XVv|PJlwE=$?x!bpFOx*LG(_ereOR9Za`x1%!Kl`3T z`myj^DP6pMYa+4x+(cr}ClZO*p=r7)3~cHf zow?!{w-&zLGw|S@-Pzm^E_>>^>&lOo&wE_CereZp$E8kKb@KB|SKgi-y!~5;5+{G= z`eVCJ&aKOzRQlzL+QAh|D;>9ue0FNrFK#~kk+BC4l$ymgE7rW`Uiie=UH86p#ijQi z_}UwX4{ka0s)Op`zQp1a_av4m+0|F?+sXeL+IrgiuV%kr$^Ux!u}e3QUzKzB%vGQ5 zee8D@;g)@Kl{5Ej=)T%~dDB_hvxXn}OIN{|RH@xr1UqAe#Er%W- zR4n!D=bv`Nnr(@(HD5dCzSqxLa`vm=O?OP3fA)q?7XRkqzkPhklHpgEoObnzA315m zzuxoRV{ZE0>E;6`z4%W{hPxkLyd=N$IrE3N?fu7*E2=LZTzl)D#N2IHt~~LYlNZmt z{{Gwk{J}?`-1gq{zwyzt_RKxKLfMzxbH^8cX4dZhw-?N{%NLCn_Wzagx$BO9?uGxH zz4;rve{#&;@BJMRePhXzmyX|eV9VU8<3D=&^#^YHIFKxzf8sYETk^`mk;4A9zk2N2 z4}9^eYZ7ynYxg|*dyCfpPi<)AGWXEK%AUDm?c8fl-<%k`@QNp%+Wpk`zxn9S#dlu* znNNS}=O;b-gU*>#$L^gjzcK#PjbkegotpUA^>{xyyw3r-cVln-@~tTeCdyW_P(<^XZ}6&%P)UvpHoy$S+r}z4R;*4|F*py$9>@M zM_+o(&Aj)k&s_ALvFg*?PW{t!w+!^|y=7`@@7`y=a_s%jeDw2|oLB$C7Z2R{K=AiZX-|zkY?=6^b?sxCG=bn4Ed+s?hsyC+EY}vRk z#?;-LznWW>d2)$HRW=v_bPyQKJV<*qb5=nVpJM^&!mEBZuJ#5kPb$pn)zPg?^W2=x zMNVg)?!UirRnB@dhJdDPIn}Lcwrz?CZt>!)i$hmxU8@jRnlbja{#>sJ-T(_-CkhX0_2)HyKR1=ejjn zV_S9?z5dLo9l4g$8=g|WeAwHYOcJlGZ{$0+;>n>)O7j-R5DVWvG}x}2*^-i#zN-<*o zIJ1+-%jt*DhT&%0PCEXUqx{0bv!dtg7nw`o)_%IvdOsQGnyTJ$c7A7dKYgo>xwMc-y9N`YyLA1zLekGIMv_GA%!nduKwjwzCn}?PrBk z(-Q3KQf<9;PHkZdbUNJYDP1Vnbh8>Cl-+duq{;%m6HMcxW3uZGUQnK#te{*v(Rfc1 z_EY|i_h+|U!>7ga-k!r1`mCp{(B9Cfm@m-ITPK8xJ!!Y7)1ha)EA@JEZPdxIS6SLG zY6D0s7w}nTWUlaR{TPK?Yrm@1^}_ow!)MMHxP1$W2R zr6r2V6Z8J?_z+9HCt-e{S)a8_vDndb#ywBm4km5N$@{zq$C^KL-o!NTD9?A13_8$V z*l3bIbA4rExw3DQdS#u__G8J+gYlBLBrNI^S`3696|8tgE2x(%CsuZwD=};QZNF65 zhAuv(aA{GG^R&aw&$9*A73`uZTO8A=HVUSAJCr(E6$mZdjRBBc^+N!O^Lp7`sxXf^0GB#>&g2n#V_RjQALZLy!6=85GEMNpgMoL zL6j-EyTC1&Y0jwVeZsJ5f~1RlMKpn55z|@@(Lcn`_~UVSg)#m`x2vbJ<`$RkpzaM7 z2ZH&-t(&%$89M?P-|q8lFJr{!L`@pa%v;4My3+R2CI5X->x{>@PJY;}A{+Q9I`Gh= zJO#CsgBP2xbL5#bbns@lXUwh(&uiDV30rb0C?2COZ3=XlHjQbeP*tXo;(vfCyED+U zr*yQ^ZZGrM^`TeNL4#eM(+-P8CA84b-X)inO20C!?!K^=_o|n;)h^X%H*o zO4jZnMxFb3LHK<8q2kZ_)wc+@Bj;viy%ejw`{;3I zOz>@v1NSE4&RXPdZ1%LUOKiCx#ZkeTO?-DdzV|&XzB_g%z2Qr5=a)CTgA^;o@!PUD zPU0F@PJX;|?b^?b{ie4#6we%3rF!muf=%xN{E?ss^$u+uD~?W*lAjIlA{nnD%G<$Bz1%FlO&F z?Jv_S#kIQYszQYu?R_T(3dqjC&|18X+pBzGoadULU3Kj_iAggFQ2L!JA{irUh@9*G{3kfBUbP^_TcHyoyA{f zRf?|*=%{WN{X9Z+ZhzJRu56z;Xf4$r^|=WLGXO*RVNa7~=L z;>{K9Ui0xmYH2)_vdr3`j4JWySnMID%2r1D(N0so3SFbhU$9CSRn zTejX~{GQXsDHcvGzO5Pg$FgQL?YHk~u|E22wLoW;cnly1ca5HX;fm$O^QCTkRKHl3 zbF1=6YwJWOxfMD`qpATrFxSHwIZQe1Qt2+V@doY8`x(0zL^*4{Z@NT$yR|@N*^Aud zs?eHp)iR}%&H5Z=ZQGbvnCeq&!sayHvJXgLR#sr6M>*dXd#<*oD`M;sBZd5O@!Ggo zdsvj1mCjU|eXgVR=*}lIKVmHdJP(}Hf4sOL%&cO2dt>k9Ez-BIHhO1F4T}sMtEs^h z5HC>?pBY^uX5P`eGXKEq)d2^O8!%#c+as2hieZOQqQdQxUkVt zl`}BLv@CBPlf1#srp{`*9d1rdS%K>xGY*Dcdb0KDy_3p|oABKgo&*I-khfi3bEYt- zMAas9#(G=?lTvk|%3D|X+Eb(InCz#@yd)8lrAV)c?ED7r6W7FJW?XT8*!wasyTYFK z&alq=<o+g*%oCRO73b3;1l%AcqZXm|XA&&Vlmo^9LRE@qzF8!mgW)9IPjy--|7-Ltscdny&@ zRLxM9C0j2OD(-#RR`W;Mn6imVx3zmRlRPb@cL=ChhILw$HZ=F-R3yHq-mbnuFmeng2k2r%^DFc zAAEw7J2$q)8&Z3$BMJ(v&P7eT?aWJvx#yg1&R}&m_38dcE`A4AeAM=@my5U5;yNJ~ z&u`XoX|0Rqm*aKuq$-tz^A@UH)4?s8x6vKj5E=sHT*uhG3cZhAcD*%xqkjHIjnwCTS(Vz>n(d}#0S_QEPdVzo7@Mh9 zNZM?D@=0vP0SPlGlw8BI-eRJ$qwX41bB<{}( zRH@ssif|AeI;BflN%Gw_Pi>&|CAOH(99;%<;zal!WlGw0@%)|y__wQdZgWm?^s_w| zl|v`YH^1zn>ew_kwR6I8Uk5tE<2>d=ZR4D~@+)RNTsRi@S|ubjBk<7GfY_@x8-UcEmqJrm z0-zG;8Jl~syHFypm&0Owvc_p=`^?=d{BK-LA|_6F$XK~x2buXWDD}j;Yp&7)9%~|6 z_^WJpnEJTK;ZNRQkUrk7$E#~p#KvQ;gnQYSYVNP|ySWssgoZYk{;rc{J!fuSPT9FI zdYw>QQiMy8ug;7Gd=X6J$tURe$YT939rd^44G!~L&+)p=tX~)<(OHu2l;Nsyl$pfL z%VcgPp2{Hnk?v&Ba7LARdZx9(U9$B1*2RV^q2hL_hH&gwxLo<|TW6$>ZyI+lw6r3# zCE8h3$f4|kY^TGEC?kM#@`)D9yV<6#Uz%oPZQ45UYfj(Uc~@eITWDNH#H6k3s&Cf3 z@LBA>PMAm4W1=yCt>^pFsMzUe%#@%?)RM=HtC+6&#Jnrjb$R0DRmZNb%3Vh^^(=^H zE^9lte`lJ;HnHt_#A&n4Qkog|lOo@FR2%2-KUBH+rRfB{5N1y0LbKdMJq`0s-Wp!K z3rJ15ju=3{g%5hmsoV2N87%aqXG0b?iI)(9~RM;!@kTP>(pZPOy{rg6{sQCZ#VtRy(x zcyu^JoTeSVV%@5&>X66{ZsxdW_5QlJMb;sS^HfggNU6j>og`!3F+Z2Vv$@}hTTykQ zqWM%VwZ(4Jvwkyf98Nl1AYUm?=HWxse3CI^R0!Sdwm-IO(bb!KV^(7#V@#>M)~U86 z%@ucF&cw}#xu?@RHlDf+F$+CBdOBXv+YX#vTEY1-i!fLDEHg3VQk~`(O_KfVB6ZFD zJD;71j}luPaaUf~GryeQbANW3qk%^ByvIU}ho8s#UE!gw7j73y-{C(U4{cwLvshP4Dj*)x zTwItWFb(G;h;I@ks4!dwb}*l5=*Ax~b?2F2#gNK8RJbI;Wplx5?;v^s50JJ}`5ly* zl+hG|PIZ;sAKr;hP<^9Y-C^rlzxim6Ipf*R^#P49_Cm0Z18r$1ZE`i~iFbL@v!bv> z-v+Og!c;eb#SI!_ClXv=ce|f0Ez+wh+wG816p>`bC=B;1I9AF@)4aGTh65+8N(t5f zFhTWfggZfiUMW4!WuN~AvSom8dDW$i&mC@4Uxw^9AStUe&nv|q8dGa3F5nTu6u{1o zx+vIug?7DJ)8tlT$9d{v+Tv@rhqrLSubXnbU-}B0|74Gf?BK zZIES~J8j}iH?F(twcCX9o^3WtoG|Zll~^z{XYZ+!$K3O8nz~_hZwV$GUibMUqp&Nb z{zd4#mw#|)l~T{YVAhh7Z5&KxE<+VT zUp`LDo&(a?{58Tjn1Pjf&c+xAT@GA~!*L;=X`shYxfgs~rkG%6eAX13FxQDX)m8Oz z=>ptL0Ezn+ItQl{=y96FgC!-40muR4CVhDaMt$aKQNzQ9<2GYV(V7~nGm0yvkkhho zORy_w{H|u+2UpN@)%}y{Q@D44ejMpiJRt_$_frZ#;(MfcIPJJ1#$WO))USR=8YdbO zEO^+qni$%Y)`OAb4T<;|e`tkS$Gbd9kEcgU=uCsE{XE;{4shSntl6Oc@#E(ni`yr* zx&{-ZF=j>%$DCHJic`?O#m^-)X-~kJk8ZKfe~eAPFn>PpC@w4Rq~(j2`|Gv}u9D|` z&3rez7)L!mhv&MULl$!{{nUijUM^fG%RMYLO*e^6;@Mf8vGc{ND1siTgFBXQ1}4P+DuOWcHNRAS>_!iVze*jhF$gY`f!JBwItgJ+$)p(z0t!1; zI@r!LnX!6_x6?!(jZhsL?g_D2eeT;N?&brJW6d?i8nZ_CzK;Mfz?;EREql`GwCtK*g;p;WZJF$lVn=CLKL_%EF+TbT>ZL&#)Q<}QMJ<` z_(hz+w99cBgXi)1i8aS2grvSy#mP-5&r2TR>4xW&{h zI*Yk3GcVsZeLJ@GR#XXpbnM(v?@znp<~}+Qe1iFg{_J|CSJgbZ`v*!#c|{xY&fqfU zJ)A0Hs%<(W{iYz76G6@UebTjEm2)2*3XWjDdA}#NGGX_8IjcygWt}mG+h>C22`#&4 zN4>I(gWFap1*a4jhrKCO zJ&K3_RP&xCcFAg8VZlCJ7AalD=ie{X7Ia%ylA0H`nszne;cbaGdI?G)3vsoF?#M6x z(ix`RIF>7d=PJ3`{BF;sx}b|SYP)*pwsUaJ!%6d=Hup}l<00|*PWBF3|6$G>PT~Pv zu#N{;6Z520>R!c#ZKfqoo)7Ad90~I{^62>-t}2XKN{hc~VoUEa$BQ~8M=}Gyrp2lKW}S5Ocsw^lg_^XV7GN^b&$~wliB-wwS9$ub-=f4>%%b##kakm+lxU{EKKxlvEE9XF#QQY0@ci*4=InK5lY*}-E`Mt7 zF>A%c@p|b|?lvAgcK~Z#RCC~Ny%VtLJQQY?>y{{m@Z(|*+_9{7qmBXH@Oss5k9lN0 zFPNFiw4NUf)NA*GxDJM~PMUk#J}^{h^uB4a%)-){s)ma>q%cXDdkmF$cI17a9GaXt6M5p zXdVonfD50jH|21l8q=h=>w|Ui)Lzq`LuD8q#=F|m_W>y~#$UP~>aOG!J6V}gEu!Q$ zeN?Q*nbnd@f+ffsx zQQ37U<-(U$t6Nt-Jw3C*^hx=9(wc@IkEk=_wTnN$^0~0PXzH7lPDC%wj9Jg-KGvBN z*lm}c)OaZruPV@`o%z{5WM=Q=F~+7!+`7KnMz&XZ_ZQ8>&V1|PYyX&6_Coy9lrV7v z$vxqFxZcq(Jy{h^Q`o*jY`6k=v?Ynt7;)_Oykhv|H${TyHb<8uXyw%y;^KsX8 zldw;1dx8j&iz`E3;{w`3OK-|{?LI$oiszPqqsK5ArOO|S)-ro57E{Xo3_tSL@Ne3g zeL$r&RmW|f?8!yt(?aj6NG%u_YEM}5LQaRL=D?U^_pYv~4}VbV&%2S=&?LrjLSt@h z;uigmR?@o)qmoN%d^n|?1{<4wmj$Ppl!P&5#Y&n?-%QQXt5_QU zqI!x@kN%ez$I}$g9u90c5D+%{L;*9iye6X7=}Ar}VOG<|ZW@%ZJq2#JSm*|Tzt!d*Y=&o6R#&3 z6{Uz&^&U8pueaax;hp$sw-u|SMm2Cx57dmkthz>+>Av5l(_7cGmKOe0KVEQk7$C&* zu-r{1PfKkZw{Bd$=v?r^$40V8k{&MX&Z=R2Ii^yeKBH>3V(yVOt>+H!jf^YZzG-r1 ze#fiJ;f*_;=TvoYf9%-WSh0QOHtixI?dI98#g{HNTG#PS@)ijyvN~szS<18(y47fC z>T4ld^pV%oC|&LNemMR+b;*NDTXn{9VVUaEd!6z$H*&AAw5^wtlCj7pYQNc)-1`2U z{By<^;_^RM#q8@j#*D-U_XIpyKe1q|-79HXvs_=>#58(9lXq)-PVp!WU7_ja#;%W_ zoc7wCpLC^bLy(%<(gmGq_U+qCAB3KMy>#1&G%w||S{Jj$Hs=YspN+GdFWa@HM4h{N zRR?3i`@_X$MP0qLYLN{OriO=gbUEF4aB^EL_Zsb10~5^GAgB0W7s}GRRFwMp={xIa zaZiFV|NX)?yuj1mclQqJR)^Jb- zKa$omy{1#S*?7;T(^YZHb6yAnHrVyjaDw1-0|$Maut)IdIeL&ak_{t6FlIo3-5tdd zwDVo;Nglu;JL>k&#@vYD0Dmq5N>oar-97?_=Z+9y+B?dKlB8+Mf7K{UgHb=_KiX6I zM6b3N?YS{+=f5!5Ry|M<8MWlmUhc~&{%>AeDyNTs!3^eLYLydGy7t<{9rWi2;be{{ za57~C`NIzjw!b1WTgDz=YsJY`0A3NXi&-6JLgl@h?-=%=s>Aebeg4|2g6-Qs2nOq{ za5&7oRCA!VAp2;5e2A-W;aXfo^7>KSNekpwRo^YVt1fkT)3xw0;o|n+#+hZ=J~gq zwYWA1&jWgG=PZMa44p4RlaSuj%R;yCg%EiY+${w-U5B={iH^&-77KgvtIS27XC#uArwAU7glH7>GDz5KF@v$# z^VK{#9#zp`=8+RGc*8YxTZ|I6TG+jRAu(anLT)i}Afc7GV<);Dt)3cS64%W$0ZcN% z-IZ8K3qw5SsLkPue|-!HBYpcmFL}X57(O2v;^SsDR*e9 z?fVHYZ_s;VQlkA{D{TK@!-speBPVDBEhF0Jxx^@dh&4d5(SDJrvn`iHIjMqvX#-jmvC_D@g$(W(LGN~69j{U5t0J!J>HFO!*GPmuG-r?-qfer7r15aY|EO?RKDXLev;JW ze(&BBtk@zR0A{2aL&6~F(}UOC(p$ec;R{oXJBwc_xum(DdVSBn$M&Ok(Rr(msMkvP zXYMm_`R!={6l!jp=klpeW;_~kC6k!r)%msmSpD|#^)tfi_wQupOIs|CQ;OUl3YEY1 zAm4zD7Bjstm&PE;bfunWBI*JqHx|(eCM9MkL)U6*S!Zt&oVMJ77Z>KJzAiSh_C>C{ z`GKN%t9;`$_o$x8v?q;U+SMyV<}iDFUI)sWJP6B)u)Mn_P1&dM=`4}1>a4U7o1I7J zw)=9eOi|w^{n3ado@s$wR=swE`Vsfa>?e4qsGjk2w~`lRO(^ckX!WR?`!;`F(7X>~ z<;u|<4OgzGf7IwzexHW7-d%Mt9m73l(rVr6$Ji*nhcm3T%{MC30w0v(4@&*9rS5f# zU6ZHdlDpZYSZq~vL~Z)ZsDl%FBJOlAx_=`xbgjU3M}C2jD?;tZTkaU9rXAZXds;ZN zqcWkTT`f(o^xCsb#g+#Ndn^Rg;=8!IbX$5ZeJGkJ(Bpo$`U!0TScMR7ja1u{FG90d ziJf|~F?Wqi`^@C|=%wDRl zsb2N?itFJmdyZE|sugT~gwXwyJie*2g9sP$TU*W*geW z?i)!mmDUUO?Fv4MM(wTMQew$HCQZG^0r7>`W(38jrZiW1@8(S&MP{(-m@axf*`Xgq+}Hk z9&w>1k|AoIYZLE96AqQ_Oqb$L0(^Sn6z-EeMsBSl4{D?qHg!< zhsw5t&c)^x;*eOQT`trzVIoFAkxTk`rxkUecJ9fxjo^<$+8p17UJNG|guP)R> z2EgfIc9(eB9Wu-(rSj6I&RycLgeyf|)_Aw{i)jIqxSTxKiap3aG4=ZPbOrVRD|q-% zGeYR&rbfxxfdL{H$ZchI2Q3~wFNs@B68B)Md|A!thtjK^>te6&fP-wtNncp~E=~NI zP3yJdBaSXxC!Au0_zZY`RrPZJ*>+*eLsz@H2rP1Ht&*-iThMl>A{59%pspEJ`}!|5 z4QF=SElVwpis=Z8OnZ3$!)=#ET$_O)g{neTGjaP^yF*8W=y{At{~Qt7n6WnNd5laP zf|+mL$Hwi-let~}cxA_FMr1&ah-q8~P=d-Yi4 zC8GhkCg*b(NI7I^ zr)2uU-0W2>*3^z z8KxGie5#J|^Mo{`8p|%+xlTnUIZkPMU)z|J!nOEWgpJRM%_V1D&Btufp`kz@VxDhT z+{$=&@fwHV^OeY84^~u1@Oj9XbQA1iDqdY30*6WG%&`*1^3dFHu}t{IK`A9-QiivIiOjjM!f zCcnNsMz}|K!p+LMW_Oz_WdY|)N8wEOF6QOpn#C){Y>B`$e7Rh^IX8mvA!u&p}txPI1iY>~~&n-NUeF4@^! zfZIu~;#s1@!PN%4wh!!Fe2T1PD zJDd9AUMr=h8yywtJ8v0>tQ(Wf72emUS;v>a)r;=b075{$zrf&#$L*!I{^Mo`u5Qf= zvTV~oEw(=Tu1FuG2`#&2t?jkB^krY5N8Kl+9-KDU!H@$zikt8VAu3g9(5-m)q7lBl4UaWJ!xQs|_}UHRdqk`_OyjhC zpz=Uogu4jfsPxw92HQPXGXVZGx9>kQ_r@W_hMi`>f$KE(**S(Y6A*Bgq9-ou=5FwQ zy~pGEWS;j65P1^{%%OnWvl5q-EaJ4(lrrwl7`^@epMd1Rhx74$sHCU!C^8tAk^Xut zZi8{`MS+m>P|Ukj^)@WJv`uh1FaM`~@_i5j1;TI_&nPa7i4wPy&+jv_i;TFW;^AkU z58hh^5FT+n`K{0&q=hdPI+|s+GFJ)-moIUU=5hjp!u-io?y~tin6)e7)1|rn0kGOp z_or`B*}}nmb#T+Pv0Q>@#N~9V58TnaUz$+BZF{fqOwdVOgSfJ-&LbN@&^RUTUA&Xi zEY$?o-PdLYT1|5C#CVw^8bRzNiM-UyHJ6Sgwsc=K7{{X#4zOkkwpmq~d%6Jk>}5zR zelx~;!&xm1X3Lc(ycG|Z3h4CMCJv^Uxh@Bng^*75Ha@Nt|CagsUV_1__nmclbR66f z{URZs=^pEaI&O_R8;AWfU{#YR#hq z&k;d?&zUV{u z{5dGa{aSIc-!o717hCt-nti;=vifb8sdo30=i`TJ~!t$9~9$rbGd-y{4=*AvC6RdO2%Dm(8^vLQkAk{mW(C5pq9MdQ~8}x49ECohE=}K z=Wg*%Q4?CxU}`FStMO_2s}Dx{Q)@RKIdMM1Ff66sJamC2&tXBY%$7ag`a2qf{ASIH zIv=UM_WG#sG0vfDPRd`o;9;?>>~!AzF0;FribI9AO1wNrl&PG1fX3k(kkr`LF^}-( zyhFsf?f1qvUhR&#P`jc!CfhF2-9|V>*447{NPE}Io}99Er)TlKv9pUgthD1kQ^nGA zU-xrvu3bE5taFdAHBTyfn4%v2vdceX+RA3j6ZxyvlLN|>DDqoAZ&~t0YW>Tj$;`|E znp;goa%orDLWos>xv!4tEE2FNnK>LN-406uIs%f^@ za3s&_8BFg3c-|>oVgR$Y3zJnFi>y05o8}7~4|`vkne(Yd@6+fv%O@!0s8?}+%ww!^;5m$r64Pk zAy#|%MBM&s&w7eZ`!tCXO-X? zF}ZN2-pQSvl-HSu%g)s`etG^v@kO|m{%Hbpm&p#v4MA13^n%+HT$8KR_IeZ&C)DoN zF%0*$S(yHyF?wB^e?wKTlrwF!zhDmkV=IOzk*f z+h?H0xW1kfH+|dN4G*nCnT8hygLMQ#wp#{7=K2+f2FKD!TGl<8?bDB!$45_mW^ZM( zU2%Q11TZ`4v*YfSxv!dCu3IvX)3WEYxI>tN;*p3O5=>f*F=s}>jx|E~!(9(!&nh0_ zSXMn7J5OHEVIfy}sy}6GjbqB*9oMp{K81$XX^d5rx~|zDI&;l&rU&(S$8gPpdS112 zX;+P43N%1d3iW0?^8izW1E(FtRdg8_E^8+V?8YiBaRZ#DpVa~lp2I>=gW$?IpDBWi z5tmZmQWA}DNF5=Z%3H#EyUxHDVoXbaygN#F#U zM+#6;W*nbdxP^oJB@m@cM{_#iRHRc=nQhr~G?$bJAWa-nTWaDAs>%Bnh3J;-VsU)$ z>09G493f+np@XBCi{Xi`z%9&LUDjZa4(mXpOl`ybx=Y=FlYTh8VxwS|7-FxIEFWCC zZCPETwx<{KD7a)APP?}}eQFT>!ze5J^C8CeZ(WpXd^X(O$E;uCvS2CC;YrgHTJ{8( zb&PWU@Dg`*6~*ew3R4SQjF^u4=HLlXXlBH>slE0%bmC$97qMk+sGlPcdSyI9oB58RfMwB=qq> zt`q6c#&X$kkMS45**(+g+8jIz;K3A{!>dgb-NzCS3eI&f=DhmCKe3>pP%B+nA(yYfQF*4Y$}EMP^=Q$osJXY@o1)mS~3f0f1&5$LVef zR^qe_h)>FKmle_8U1A9)&%!FA51kQ}i%B-m-F$k*Ha6}}c#WPDEj^EndNF}(JhJ8? zqqs&_je4#8uBw)ydNm!4Zows#>i?)TzIJ9|jO~2^MOXP*^2gk7&s^>*=%wRO#7q=> z5Fot2Gx)a9WFKWu;r6F-E?oDQ*n*{6Ei^6N{d_NVOhc7M-93|QVVYI1`$yxq$bF6< zV?J@Spcg(hsriF$Ft69xD2SL94m+V~{cP;IH3S)w{X4#tdd0D~rUTSWOKMSDt8bZB zSAXbu)6CJh#ViO%SymKvUKi(XO{q^jZk|j0kcj0uGdGxNFLV3t{z<+?89ggRaA&Wj zbMtXRd)k!3tFgNJ;erUJan770C}}efnRQ_2M=&2aTXAg-mV{5{oNN&{1pCTG8<5rv z#Dis3UA144>Al~EcQRKJ#D8D{GkzhMRCLdCel9Y!0D2^F+IF{6>Wy6%m?4oz05girqJ-bKggNa_5+}d;9ybWR9N~>N?$4(>E&lpmFcTDa*jlH6HkeWwlINi_(HY z;5|sOeP5J4aJuFlcbEoM-Q!F*=0wJPUXdUu2fYFvFqEmbb8CWo;>%?!f?j$Kb8*RB zJedsv?<(GZI0+*j+IO9XHu2lq))UGq+dM_C*z4uw^wPqfd#$YBbFb`1&f7d=jW)4@ zNfLlHNF}?QKcGDHTb$d`5cKBZBKyF$jM@es*$bw~eUoF$CLAivO4=r_eCBzv?>6ts z^JckiCmi3W-=Wp>4>9~Gq z2G0Jyy~a{k97T+uZ|1!4glCTQ`xeb&832NG-h>ummEsRA*2?i8#utaGgliU>cj$k) zq(`^tXiV=tN~vuAa+7uXJkrS3MGqY3jad6%gb?UADNzCGKpo$(Hz zF>`Iq3ZI+d9~~JK7p^f@#w9 z$C}QJ6?Q5*)dqgM$(Tnwb>f)De674`?w{mvDH%!*btGy`R!`ENB^%+%~uC z*){RXTjGtn3Bo`&y=iJ`U6$~CL4fz0?hg|s3iM8U1X#wSW3tj*wKI18IeKYf=g~lRZLps^6tV z@AGHU4dn!<>2u()oRza4$u?A~HBN||eQ@e@VXmBsDXSPZcw^AhTkqA8O#exqi7j=v z7QE4Mm>gn@6TT~g^SR+!A(-Mn2KVHJx!T_KbLHl8j>0{w7h#R-e+ICcEd~4bVC432 zFq>_aYMIXp%_5S=iY*NdEr|uv=?D%0>65b4BNSM)c3@I!v<2o%959?%T&rgU(?g>k zZ)2%xR_*KWpzQ3%W3;klRrLzH#Fp`e8PmCNyH_d2#VMOln#O$@toxd@UT#i}h~z6t z^9=w7K5*~E8ROSlRF1c|Ixj;ykY+Xekbm?`eome>f?3u|d9%s)A9J+7-*bDkhViaY z4(^k@isrd@)jywIzHwE_l$BdYSMWX}Y8XR_-8}!sit6mV+Pv{m6Y()K@)Pu$&xI{l z=U<_z>1sQFA)^ zzAlf^@`N;I6u}3F9Qz*%C28w!3Kr%%hm&4&n17ke%83bwKkO6SF2qHfG%eA+ zto6jw+_z<`jH;qO0@dU^kOmB?%+xGv<+{zavkbdeYz3-k6feJ((uKgRw3;gaVz34H4bg+1{61yW!E{7`|BJbB48JU0<95k8V!`PiiubbRzIN}%#%m2WV4z! zbDJ?}7x_89Ysk+*e2XYnTgy%!fLQ_z^-Y$Z)OFbOZ@!fOzxh85EPgog$9Lubki*I; z$PLc_A+Lg!SNb>q$A2dO2Zs^(e;JbhLsUVzn1f?Auatq4LD^+!|(G}G4 z$VbiONQFt8Hr1EEG!PRzB?Ctm%sO<6@HYQ{^fv(!|(HER@OD#mPXys&kgzP^5KroGSE z2Q$l)lah8C%-eBHsx2$v)`bff+V15~;nUZ+7KL?fe)dc)vg-Qv0|yThbL%4_1ZpmK za}e|I$=aVcdinhN_3L?gc}I@Sl4%+r_T<)yl{}jyCi7+1mYD1lwL$Wj) z?a5Z3*AJTlTjno0AJ}6nx_7=H(~=3s%&O_?=`AZ;;dpdaDt}n%{i-TOn+{sV%T)A?b8$ajVbL%pV#O5ViE<9Kq*yDJTQLsi$P3=H_ zN!WxrI{SG>7o0t7w{D$D6xGdbTY$CSSZXd|y+2j>FWBVk&?8L;)3Xd;^3)^^% z9W&-R&qVIJ`g$&bc|6CjJejL4=T%WznH?!!G+}|;h7B_mcVqU@B^m0o4!tcZ(in4f z)cUi#cJ92r_Jj`A)-xwaJ?eqVY6 zZdhvQdHeX>-a2E}tV?n)Zzr2BJlJwGaan6?D_yL*x|)BFYgOE6<4fYs^C!(M-qg5I zQt}VkN4Xxg?eipdSXo-W@9fTENt z3QNFV`MBlc+70LSJ$Ue7T1D~{&_;CP@h|u9&um&hS$~7S|MQylr#H0{*ZkqI=Zx@* z1G-0pS3kI{pN|bTEl8*rnqTU+vFp9$>5S6Gg!kO_W@3D^6{d#Y%wX=CwRkGu)`TM- z9v(vc`l2`2`3uaZIy!E8rJxnmJF~vVC1>wh5|uisUhv+y<0i?8^8rcTNR$_e5Zif~ z$y`|6Fk#jt;rUO?%J?2!fAgWu?z!TG*&5rrCr_Tt&(E)8H*qv?-JLs24SiqTSF3p- zpl)nx`ov<_Qc=*s9}a?*VN%nU$5$OXcu-$#a`>fjGS8~@UGk@ za(j3^8qU0WaCWS)s34D9uI;&Xuj%TIGY^mE|Mc!z)x2f9_VAh>Q6Jrvw{_8^?R0PN zz~0Z(k3}X1&%IY)e|1aP_*vAm4|JbC(RbJr6BBdb-o4G6H*+?~<*KFTS{+ z2)(r@^_ZeFQ$iqW;R?N^9lgSPzHpqENa`JBCRhEhhWD@j_t*O0kY_S(bWhR<=zj`I z@>pdRH2sD>wjjz@}J6UcN; zQ98kwE(;qi#yGj*sWbvz6K824tttveqTI56QvfW4@Y&Xn)tvMDO7y>qLO%nm|L0hAe0@Z2Li|P*9Zf@*Q?44M(D@ zmIjzCxqlKaV11;02q?xJDJ18`803))-jhi314yJ2@sKw9C#ayLB!!WK^};}xVq`~} z*W#~#3h=oK@DVU%3;{#M;4yRz1^l*0ep4_c3?LK;hL(mb0+QnZ3=f{9EZv#C46>|s z0DrJ)L>3_u_!rUB6@w=MG84tns7{)qs5vako+WD$RFolR+*q?!kq4i?J%xXN{eg%1D1pVm#gscbd(4h(o+^$;R0I6^9|KKVNo+AF+ zJP$(UMkTmtipt2y_WkEf@gb8acxPJwUx;2Ms$~XPKi-vqVL#W9#cTa24r!iv5@}d= z%;vpL6j7Zny-I`s$d08UafXu%yBdPYzw@ABB1N8GP&KpS?Q-2TQ?<0lJryQ(}vg}$^go=8&10NX*wh3H72N<;omkZ~pqW;1El~Wbf zQji%^6awjDVBre@yw>1C7{m9dq@<#VRe(Lp5ABjc19EI=zr*+aC;h9a$tfx${eL|I zo(yazc3DH(aA^4R&K0q$3Ro4ia|H}iJJ%1Xk_E>BG$g?1NN~e@6DbVpw>#I6{TfwY zxBKRLD5xny02GGIO@NQ+=|v*ILhJaxHU1eyssJ+)nJQcH-UK`y#hnq+lZX--?QgRI1$jj^c_rAjJZ6bEh3L$xnFEWUB1BBX5CJE3A(DX* zfMwqig80UAeT#q<6y>pS2nE&6_1Jas67N-mF4J}?T1qmQ zB~Bh>iVun4?22xK@7}D6K(MNSi7U%smJ?|JlYU>lIta8uipapf-Q;2KNU2Y@F0x#n z?IsMhj9MG8nUtdL18YDZo<_xkk9uZX}4BnAOr{Yn)WN>kK5}xeJ04jmZ zpdNe(pbMnHD%?8AumopVh^udRD}W8=N@p$@7TOeGS?&R`EA z0Q5f}u+IeekV?`l28RO5f@&C62w?kqry}Z1KZ8e`c~L1q#fEiEDGWN1OrQap!nhE8 zfW6+&w%sT`2-s8ttfNM71}HYB0E{9fX#qH{gI5gFd|!!Z2(}X*Fb`O%6csYgu;ibU z8-|F?N`Q~z2ns1m@uhumFS_m;?bVGlk?0X5olxa~k+Q9}GNsP?weU@$r#CN*R+tPclvvPgzkd z3-)IgjnntUl|mY6u4esT>vbe3=$oz5zPb95olfn zC!z~9Ge~|i)<{i73o`&c!HGa{1|8|41Atk>iBh}}d{SHn4&VY=t{(wUrAZ+(12&pB z*mI!K09oisz(Zof(10m}j0dYt0%;GJCWZp2goO8kiY-_rfGGe01dv2vDFglMDl-gA zSwh1A%?B(XCXeH1j-0+U^Js=FN3OVv&5(u%ku>QhNQ@V$VGK6 z8UZcKjrU@yLTF2%Bh&gvN4bUNbB(i@XY7q|XOrSY|?T8|gMnGEt>lA{4mH9d0!nQi$j#7|8b%p_ueJx-h zwuev^vJVCse_&a`iU5G&N(1-_USPkYmC67oaPk0btB*mW(?T}47r~vv-kx|e=u92b z2x6W9ZJti_B%pE#?pCx&JVXIoM6d^dH4{AnJy9_J8WEt=0IA!Ipwx|mPzRU< z7z#`R?FI5(L_Z|ZSmf$VpaaT;*aw>xA*Ll}hHz?hq`JK`Dj8)kM&JV#QK4CDgUZFP z@dSl0o#2Y-WJD6f6UZab&7Ulw!q*F^FmwUgMn1ZL@MnqX>9U@WBguap3v9Wtm3kp$>rEo&^vVFwv- zvN7P%S2*nV2=+f2v|Jj_&RQ$M?t&tvf5|D1?ocj5sz!?s!>@me5xNenbKlRd(1D=R z^Ap_gPy2=ngf|fuc8B|k26aF$h9f{bx>o_iN0p?0Ul4u}F8cZb$_xf->QFQQsz$>l zFwS^79u;O#_D~7ZEa51FF$0?p)mncY;vgUJg7x9)kelG4zD*(xmT<@-e?@>p{hTc7 z9=t1t1}C6r_n6^20MJ8*=Z&5X2=K|tD5wwY^g9N}*iaaVcHjjNhd~rmFBXyq>Ed64?J&I7Fv*u68s1rKz>0i*=_pfQ}FQGaKM`#5*2}KN?0-W-vtq9_BnS z@MD0T{8z-LkM@a??<3D|$xd{qVfs#9{@&*Srw6R>hqUWIuNWM+G<=W{5<`Rjz^X|O z3Au4%u@ZpeVZwO&j$Rby2Ohm32Qh!+;N_cQTjOiN^w+^p3Rq=0CG-cF*AE|k56@G; zjsz;P1dIiwORA6D3E@1<5CwObb5m0us(4y(Ei zRojNDY=aeg?AHoC_A7;+b*jcv=!a415oZ?rWNnCvh6Nw=zP9jTJSLuqc)Sq0McMCAbCn94Wps7;6HC zK*BphOOXJ@Kiv)5Q>cXoh=EE+J&6clU>ImY8v^)%_=ff-V(=lI!S3-0F9W@h{7@O} ziT6N#IjnO_wku8sV?v=5q|m_zyb0ZK1Ttvv)bGoTA@JRA6P0m5Dv9^C7^N; zh(?Bs3(<*)n6`!k-}a&6y}ZE7=s`|DQ~1+JufJjqked;aGw&hcUTlN=-+lkTyzhy0 zpn3oOJD#t_B)Ct1=jRk(&-^Pgfye}eJ<7Y7qxGvi-zBmqZ&==$BK5O9MK zsC}^uea8=EwtE3ua(-Tb#T(L55pP8#_&_1p|B1#vWv1a_pa6Psk9tyTY?{u3gU?dPv z0Flf9koGxKCI9uN{{Qf%Vq7JBrTirS!cB>xLVqD!>Z8&bz9#t>uR$3}gffz<{`c;c z4EBb8?bw7faFO^n_?Tq_0k?CNkdso8lme4hk&;(L{*VW1hl0H1+HXz;nS>jh#IhfE z<}M#Nyqn|?zmFi0PVj`oFIOL_yE$wf1or%0E@QxY>|GF-vE;YD9prSC`xE5`{q+|e z$bVxP*Fmimz6%(IZ+U=`rUN{{u>XM`;2|2$FE$}zILd%?=)SWuKMDimi3I4;@g4-^ z2$SN0!PB8oqa!vaZNTjVmMaH5m4!d-p}ZLoB}we4!67@2 ztpB`J0`o0>UtUf@3Zo=1g#mv^eyt}Be^f211(-LOZQsE(Movb7ecarq*nI8&)`hWP zh%=K7=5R9D3k_!-a8e8JEqon0KZ#G6?$KhgLVel6Yd$-k^7KH z0f=9Cm_ou(U@!q1wb&myz>0um_ezGB_+a1z1?c!_V853ai8!oN-;_*1`$R&iy{X`TN7bKL>dcIkj9C$p%Z4H(INtTRJd1Rfb%yF zK&cc@G}amk1cLMcUUdRiBJ9PJLMM9T5rrL3V|ma4i-7nBoBow zLudfqv8RB%gr0vPd<&gC!->wat-y$obWz|O(cnxnf$fuoB<45t+!ppI34nDXu+G94+VgQUDL5D%ZXQ&h(6ga#O-fzGO9*oo?c%dh5EZ;D|ybA+4 zpJLD{o`+`XXbgneqi2Rl3=ND-hR`s`NLVRs<%37g{RW1^`$3t7oNKZ%)fdM9 zb0L}Rn}ev_RQSpc9DFV~M1m>&ofuoX4+UXbLwGZVG~_DFfNPWkj+4=NS-*jHCjq&A zXwSZU2&drb3BIQx@m9bf0k$*-Uh(S-wnsvi@pN%u0pn?YXy7l4MyYICr#d4`0Lcvy zJCd&lLzAJ)z<_lmeHUjH0S{K59f>u-?504X0(unC?FJovvvv+J zuaOW0)UQ5lFflTHHdFV6rhT6fXI=Ne3-AFFhTDM^06dHYb?v+P(El>B`kOn$OtW>0aFAg2A%Eq|C)Os6JQUGa4A=rA$N`jEco}Sc&wYJEJ_`4`&57r z5&(ux0K=$RMg+LnaBhI|s6!4EQR%`C%^oQ6`r;4(%|d+khaL>@e!$Lv;6i5VOr)_X z^xt!e|78coki|f)eP1cepExX#FfF<73DNTXb|1q$a{tqAe>{#0^G)E~A#i>_1l%`= zmmo^HOa5d}?%x|&1~xc_N{731m@mOo8SuY^i{!WZ`V()#&zvr>T^W9?{3^5$gZvSsM}^-6y&OiucjTd065!J_ zH8xuUsD7l$WdPuiSC2gGs;I7IZ)gCJZ)BnWbKNPaAhfNbI^uvT$P4h9nVQ*KjvR*n zQZfu=D2jiRl_)6uBiT7XxYDoZmGeqW?3SYdgLjiJ8LQhTceG%vO{DaqHp?fn)}3+(>`KF+QA({?41^e;(=kk5`G5RDXp^ z^g9)x5vN79|1AGf{kv`=xqmVTP{#gx%M>tP`H=@)8DnT-X0$|4-+sx`r9ZxbMj9NI z-)bn2pd(U_rQfj6*?tm6<&ja>Rj|K>8;l?x6;Xh7jZF1c{#*dd$RJQ@1lN^4NwpDz zP4%C)xN84hi>vw@j)#CjWkMknMx5cOVlk`qEpe+%epL0r{F(Rcn<29!5h`m46a3JS ziyAaK#mnpK00|@#2%dnlze3|qkYqU+2@FirBfy6y8~l!&GwcXcNu(B-vdH~l zw^;eVjt}_7vH44!=x9Wt54znvVERfV=`ax{`tW3>QiXdC&HRVNRFMYd{$K@pp>^i_3aKaz>f6$!?Z!Vsk} z?*E45{pOIozdCmvVO{|9mOxz>YMO}R4HQ%4;&Y!6Lv=_zrr#3k*H{7fz!QN=OJVVY zzAFzb)fQEQA$vg5OcH$Y$hWNfF%HAcA}zJ4+bE?(GR0ATvl_K>S12eet(}E zQppL?o_t_RaF+7)bNK<-1qRu-$NGv43h?z;8N>`IGC0gFGRr=9Eg28%e$Xf+MxS>T ztrx^_bwzK9A->eF3kKn7USt`V!PJ|8xH^%VK}#&mOl0*a6c1P`SQfp9Cc6qKQCfes-w zGeTd%FcyIDGMt|b4Tu#dm@nRyAVVh5VO1ldrx{W?3??IRNAj}*t&u`R5<4L21ChJ> zh;9lUNK`6%?GxTIMlM+bUPB`gkY-c@tKGJL33l* ztU;e5dObU3LLZK(eyoJoa54H$rerWk-6*sw7f|BMB5$ zyfdpv7qAnEkm`_~BZX8@V88;t$dc0BfPRHs5*;uvv=a%o%MlnR3UbJ)1)h#^Wx%2t zV41vGVDuFr02pMKYH)HRfH@+J1}0f{^y^Oy4tiqer5boQb3k5ynZH~IbbGLxvu}RF zozs_M7%9uczV->I7dlyytH$63Ux*erutrESEj)SP9Z}?ldml?gYL7t@LnkyY*sswr%k(Yn4K4LoAp~Mzx(fLq)BhOdv1l<1#IA&|_oX-M&#l~- z3=GYajDmw!B7!%HAyLuL%l#;OU=fuytGEL4IuRu&dVjSycFHqoiTj`zt9`(h29xOn z(33$!o1$4h0KQns#|Bi=Lx}|JR`vwZq!N97u-FM6-Qa+>;pJ?&%rFN4au>fZI~sC{ zyRRE)3Cj!;b>F6k!55Q%SkAC3&9dbTmMx?E%FSYiR+}A0(kwyhuCc`noFXfqIYt4^ z4}z5hJA&Qe@K!afxknvP{)|EwoSNbXG7U!pEE0#nLV>wO`m%kq zAYfJSLwpOQfx88sRgwmrt|CQtU62eneKawgAA_AdhjlgyJ7z7`fQ-19{)D*w-WZrl z0yahJouJt(*!2aS`+P>A59C}F`gmA*^_Z7Ek_UW@7fC5G-Sf`pkR~B4L-H>GP4Zw(1Dv?t~Mw z2Lt=ysm}J0vkZ2-AgU4#=wGlN4CF#U(4yH9`#?vD2Ik2?Gi$&^3@C#dBF<4!IUt=7 z;{W=oOfN&A$7l{t!i9iL^B^LrkP(dg5NQONZ)aKm&a(A#3l@tG@cV$*N8a=E=Vj}E zPXhbj5WM+yKGDCNy9UwIwVz&CYod(!o&$TAt|=;tp;4VQMRnOcNXE=$ zndsk$Gx=L9H9~V9!JwGmwer8dZ_Ho+8c9=rXnHTC5OAN~4|rmqnaxf##}2_k<*FM@ z5`-FvP`kvtQt_Tp+aGBz$Yy`g7J=*#vT!u7+z|OOlEb>V3>ue2!8@~(E5Ty}G`sb^uUyLE~qWiH>Lre#Hubk=nhbyL_(bksGvX&Z3YXjfeEGhl-PeypZ`Ce ze+=Wo`;l}YY)0}!-b@U6Fc*>-Lis=LBkr?%zIi1MBQN*Ey(<6B*)5XCNDO5qKRzcl z_UPYxw16T1@EGz67}jy_kH3n=eDmZA*88P1yzEgM;>WvI9t_nl%82tH@?jf58H>iy z(HMYTQ=zR2nRZ_tB4})rT?t4=xxr=>Vt|9Gz$(#1SK>gg&A-Rj|FZAD9mx89ajAcq znfeE78GcuyEVSTZUqm2yso#nqP#co>`IlwR`Yq@4 zm~XH0&u7j09Y^#(ev{@;GJeC{;9#A>dQ1LE$sm|LTn;7?hmF|#XGjFdj|8X;8TRi| zXe(Y!xRMh?%j&{wU@VlTTp}|<|~zb0ABtU zFa58>+z_-x*pr;&-AIlz(Sz-N=Kl_WN>D zjX3ZyW!wlRrD6q*%FC(!0#KEH&t4vBu$6zWAvUt9;(kje63nki6Za2hh>A)-lhWxI z<)u+n{;%AA!%M`UvP%_Jex+rqq|9QG%Kz1tsgm5kmg$J$5<8+oR$dOFAZ6wMF{4!J zcjlL_!Y>nKr^|22-1Uyj=0sp5MMmA9tZ5Uv{=CKr?e$l#(oyoqGk>6C6GcXdk;!+7SL?g<<{v=*z{&ZpP` zkC`?{X6~xs&RaxqxQ+lk1-4g@g|s1v>Q_BN*mp~i8`SG|3%_W=&o+0l2t7JqdE|v7 zjJq|{Cww?@{mKgFL_HB;rsws_g6XxUkP#%ED(l>;$kEZORfobZAe;>zkgaWDe#3J_ zeR--VZ(H0)P5}h7(Tw`@E&`pA^noT4|98v)8;@T^P@qTPf5FPYeR!8Shv;;~u5+J_ zM#ds2Dnt&t?)U<`4f9#IDho)&se0NCTuqcLVsu1yP;Ye%4nD7Y?xF>AGb2C$m}NE< z{R>hj!uXnqsHdgCMj|cfzF--E;i_hc_ks{0(FW5g!D!9}y@_X5MW=Ai8jc0>#%A&R z*LXUSrbzyCL5O5J6}`?ISWX`2I(R=5Ai|2^=a9fdF6drBPVMlE7BRhh$lhZT9RX3h z*Iby6P#oJPVA_d&!frse4i5j4d^p{*mD|baiO)!-zQdGYFA0pQ;EZCPiNM_#I88_L z(UW`;BQ*}t2*)Del_+@-()^I*o+dy1wGMmCg!L0>QCMfoCW;8$ z_aWOQe32vj0QAsqAu6+jo&jcqikrC?9xj^?yNaeJYVqew%y#w0K)*0D?Rb4esSO5e+| z5zt)~Tth>Alums-cU^DL({dZux;8w*wCj39rL4s~%o4OTi|{4_OwFnn!7IdJuqdnn z`LeC7M?A5M^A0X1DY^R`LYYG}0^JrZWu_@YMI@dK) zy#dNysCMzIJlJr3t5dg3Olg1Lk%$#7&w4H?p~&dcjT#&vrh%k5J}Cs4(|LW-LLz2) z9wNgY9f#?Z(gKRhh}fa(o`s-SXabw1v%k}TLc2$PiUn%a$4GRoc+ud1cNwwC!4dBm zWYeNKWp<&GMj9a6Q_UzJ5}tiXYaTUxBpDkS&mkMz`VqK}t;HR-O04N=pd6AdgO}F^ z0~6i7_rUh)y?t~MrG?wH=YcXrp+`*$3k zIj}#OzV?H-xo_P}5cJHn0mMCEJ6e8bAd$a79p*KuzxtU}T@XptV||eGd~tB-q;PST z1=lVBWk8z06-0y;e&~BrUw%9!TJ3jQSNFvIQ;+s-n6}8>E{4dP2$@9tnuRh!a$lOv zBtLy!)9VJg3QNF6PpJ>I{wq^WWB~O)b2pyAnViln4lY${i8S$34fySyqw#(qH%hrP zW&(jIxP%~`j)nJ#uBYk zZ6eR25CPJKtGYx1&ngy?xd!t#<}oz}DZHs#lqFMXh}1lq=pre`U8f?8hz8|7%9Q`Y zdX|Ww3?vzgf-@G{qLLd_F#_{&FzRGE4a&9&Dy32tSy@&?)Sz)gKLFK63Em%e&Tm>3 z^Afhb6$ZjoVGou4A_f)M2@I=n$c5F-ytTm_ut6ui@Ysy?FTh4O4VgJb*jR@r1N zw;@Vp!x*4bM%Xr{;3+0~3d;qR+Jb?kQ<2EHDlk?fc3fy0^VTrUhO*jJ0U{MetT#L? zJH%BXo@qIUoiAat6ikS}M5bF|#L^jsIjMUVr!Zs~>7)W|RNXd0fG+~gvZ&Kpm^3p! z9*r0l#!6>b$gq=q7dA;e6-Fk|WR}V`Sw=d_va(7-xgO3enKmMRnP0|t3a9Q=w`MS( zZrECs-}rdpx@Ej-SvYAFS7rYk_Fx%M1lVxR<(LLp0nL|A;XY@!&i%}mrG0DB#!ln? z@*LeoW$uPBuZh%>sJ#dZqTcXvphF`t9gfN11_4R~zgBaNhHXYc)V;vviT1Fv<%kX9 zc%)919P_0kwpBjDL1;!no)`2vlOG8(fM3e^qC&0KiF?pGaSwSdR}#2~ zLRMt$i_G^>B-1IOo!Sr&TEv)HA{?_sq+$ovH=t^L>6EN21czR>(1pS(wB_5o$3*Wq zX8kW>HA*a4gcaLB``2w)H_8GNxog4b)R@9rpJLJxL_t7;=__XfOOb=NUND&f#`g&Q z$+6rW76QTo48nZHX@-|yNv(S$>}p56$P?M}XoI2wOf`yBMtmi>WTaEUc$muL9}cs} zIpGz+l=t8mF@kSosN;^?1T$0(%wU^YL%tjCH9KU#XaKv_J7h0$6!9@)T~_gINZc<9 zkLuonNDVhkEY~O!#R+WD)IEXez!i`H3bc~(GhtuT6tse*a=eRpnCTAp5*NnZ^2yS8L6dcui!dp08_|6(Dn;(KYL=+#%a>*sGNGVm_ zScDr7rwm9E6RLj-H=efPtsJkE*NT%`NsUNj(~GWUu$E=ohQvCc)FU=V6!U`FuGpf) zw7@DIz#6_)OtG$1bWQ?5PqQT-7R7gA$!e{1N|t{n3kPJv7qV{gNG>QSEQf0NQl_Qn z*2Q(t#i~^%A$zEhCqWkwn8O>EFRGxxLsHqnt}*3}T-1(~b%X_S$!_W`uEcF#_iD8B z3B)5Y7=BRu8LpksELL-N48%InsBvkarF5$4dJ818;>L?O36VP7VnKOL9jAH8vf#@C zn`!x?R#1zV7mF9nXCAhISPJuK9V65FbVKggU8@zau>1#s?;Ra!K8A+B6Sz!1a#?4 zl^VoPW!X&nH)<)4cWK|Ohl_wJjml&T435~6nD8ss)$Zm|*iSA5;X#<$v`Cwc3Jb%f zRGtIsPH#GJx>QUfRAgC9{6#-YIt6{HcvhKe7ekLg;Ojn4Kuupjv>&Y>ifUv@X!o-r z)oesX@gcS-iqFAZcT8CXp2LM0;`rz&ikxApLq^PtKsX>$&)Jnr*<=pYo{%zW`hc)y zHGxy~g_+UTT@nJSOfNh|!Oo7WMrHkwOfDt13e_fFL*GmcOh9tQp8G+1&?Ug-ufgoB2n}Kz8MR90bno6Q(E$-Z^brcVx8RmOrPC+Ma-EyR$ zQ^LAy+isIwJZr^!!%nlI^*r$vJADijtd8n%W=k)hyb$i5zt!Qg)U&i4D&-CjP$AQ^ z7@Tlu;$E=)Eh~;|U{{8R#a`4iXyj=b_MvpD{j+7d{`={L7n|L%I9jQ-vP~7~C6qXH z3|ldE8=l6vP2t=z&e(mr;tsBF>=ke9f~Ku9T9;@@wUAFb=$FlA6OWcpBs%8t@iSn| z<72ByTSzGSJRV66Jbdu#%M;8Hq9nnIVx}MDcnN1#^qI|X0GuoZq}EDCBqoaK)b^SE z(+96zLws7n{_C&7U>-Fq4awo5dp?)J@YU7Vjw!ZCb?s^44yj8IbVz~#pJ3%x0T+ck z5mAc>-$alWAmaBrQYqkl2bn1F@`OGObU)CI#|gst$@gDUOO(}|iOxo#uO7wB^{T(x z*GH6OL+i=zLV7A=4GX8=Igl1PiVN#(+ z)|*m3440BErr0&;XazIfcHIS{T_K;8a#)!tfRzQZ%XOIxu^f7mMd=tM*T_m9U|Y8` zs&Efox`8~-h9$jHtF12|DwB9=c~MLr-j_g}MAdDMhf8>Ge`?Qp2>gR$0q~x`s?mp< zKa}2jgCoO@MunEutGcY>Z6C|z!CZfS;WK1#{KzH)>&5S>Ic9g#DG zD0C{O+|v{SL6^|_ZE^j!*z2}<2Hz(-|3TLYsfrUJ2JE-Z7i#xyojP%KXHPms-sBco zCvccz`fc0MA~@xmD)nIE2!=m8qcB0l-CVTnsqV3ySWIUJJY^Y@R4xdNgfhJz7&(hiL=2x+*;28Ro(G5! z&5!U#{ZwgPT@!|o^`TMUc3KgU+=`#-7PQfFnU(u>Ruj$X*=U(C46Py)#FUN;Zb{b<9Srzc zBW*HnA@ZFeR~k}UK&CAN#T zwq2}NcofVv&>StWt@K6RvT>zPz13GajP^zw^#t@%(j&sHJ6y_i3`Ts=kwTo1b`3{S zM(eS3%ASL+WF^+^YSz}nJ}cAxZj-@C5MV_qUQMLVRvBbsMkPx$Z`gj!b`;;4*SWY& zgw|!42GCLt*f3+D?)vLt{&iKn9_C-eVg5ow5Ns{Mh_dQV;!x}S;27NW#Dn%@r9oD- zOT70J?DQkztWWZAnnmCG)Ez9yIe>y!<%E(P#tQ?<$=I}gQ>G7jLsuT0*-s>f`__ms zjt{V!Y&mlVCYMm`AMI9dnsK&=exzpjx;JO~d=-Jz=4J)#mAL81~eoPaPQ zLTyBpaaATZ~4K{n*SJs5np zIx89ur3QymM;uC7KpL??OpSsyLFJnGol4xe0^WUb4a0I!a!TkCIc@Mr0~(dprV#dm z0dkmdQ|A@}xweyV!T+OWPq*MTh_RwMiC@F!3!O2HLVFBjY;q!>*8;#(R?-=>>1bNF zD0abBVt~$86Y;5n1k48j(#i|2&A_~UnAp!gk%b8hk*o( zRke_6hGJ}GQ)IR&FXE~sD!^!q%cSci5jrEk2(cA)M9*MT!1a*eGp@b*&rrWR$=9xD(ER<50=?3k4N(+nN0VpPzz?kO9KM~z} zI`^%P@gYu=TzaIYaD70Z$n=yT;SDzs5zKTtC$0&LOwb~uc+JiU-XQo)a`~)2+}q`7 zkbz2sd7?9gvi=ASMG(AJ1oBMln<0gO$_7_cRQX~=qk*bM=+{8F*HKYttAl$^I=G2Y zCXk0=I%m4MyyqgmVwph4O8qwNRs@k8%jI(cin^eHxE0$)5-bI}-68+UhG9E6W)w4@ z2>_ks4E6lg$NMM7w8{LW>QhlEoI)0EbW)!hUJD)GvU`MsH86*PNCJ@iq)x|8l^MFP z`>i^rdyoo{;C}cmA|WMAQZfg?hnvISqiU1T%24S+AB1C;6p213k~s`$!*=VGn};Up zj4Z~4RqcGQF*ir;(eZ|T5hM$qNKDY3796rmOxbBNOYFxYeQ{EWe8Bv(OfWx-%mt`G z*hnC3G{pil8l9AUmhC4Yz?%eCA>4$9L%A_Wy=Vv75?fj1d0Y%i-xdkeMwCLpGZ8I~ z90F3p@YVEAtaYTr>Dd6|*cOQzltEoKeSNj8Ad|&0ZA{2u2~*=M3y#~gO=C{v>qv40 zxF$FYWXF6I=>gcjr~bw!@{21>$I;ndw_))S_{%e$Pq3>RppHh^KG-k|@aGK+Zj&!q zBkV95@P~A}N}+5xhd|7OVw|37Iq*?Mr3oDZ!LoFlijLBo;bIhNUL0dY+$JhFd8T1< zP;1Ke@4+3i%IPYW#*5=pjf}yq!a{Sq6=#r$HY!*^qy+XpJtj)g(<86t+l~*dzsEpy4yy+BSn%zV>7}aWkX1q*r5`Fy1PY zY&HqL81gkVJX(@?Tr*Y`HoV|r2((5eUd02#9wO$T@Nz{kn6kQa(qSNfE{g<3%5)D| zatdG>(DewfF7i?jI<71;Q;4Kf-dN&}0s;_VnAHgARODsNgfV&4Z>mWxX;3g%#%*?S z$f1D1B(@7t$6WVIt|mrvbBUqzsZXLR`oqLApHjq2Tuz01xg(}mx$%E4Jm>u#W zbu(htszl_*laq+TASGfK>H|S|(wV>;{!S$u^GG6f^qY=!EZ{zuOC|`o(4cQ%&RUIl zYRDdsa;|0b*)Gc$k=6)Pn5!FnI722V(V@Z5ix#)gssS06Oozxb1UG}VDJZ2;EkQxa z4^&VrWN)_oNQHY?SXHV#qUy=RjA%0|Wy*;qiTjc+8S9xcLNf;G>!PYE{e~+NrXc?{ z&J@ih2Q&HT>9`1bB-pe~N4!3ADAIAI$eH2z^pWDS0(#3A2d+rTY_Dq{klj%!dbd`G z`vXUMN_nGnJq5nx>V#Z;n0z}QKrnnWx{xk4XNk#Ze~35+Bk>30j+;(WTE+G^jL7Gh4=8gcEq*?!)gGt`GJ~cl zIeaM;P_=A7T37-3YE94_1{`<7jS1_gqSw8ROgv*-5g)ZUY&#T7#(>Jc)4&5Etd;JRxYkq0otIb_T2 zea`PRZM_AG4Hi+kdr5_c4&s5Ir-@1V_^6f}EhQ!72_3pK!d6w2y>egJiXu_5l!Kt% zpvADQuodylM>Yq)nD=YAvK!X_6aTdtuA}5B+}!r*X2Y$tf0nH~bIW{3PRr%S#>O_} z#DDR>H7!4u&u!4OTp>3$KBg7n^L#$96*sWlASR%J83l}OSkPN%7W1O(08{jwr+Uk zzkc(*?>T&d`HPP{ec?OKd1U`LXY#-M>^A=DO+S0%#+$c3*392K^Nw%7e*D!BeDcX> zkMpl@ef_>yfAY#_?lJE@argFA=0xto>o+%k?%U*g--+c4Qm+BM0a@Wow zJ-zXgE$MToZ<%`T-1}>nlx~0br!Sj1e*Ad$4<3B{@y8#0 z@E7Kv|Kb1M^~PtPt@2&Fc2%ptn){2VUV8eOXUgCCy>I^hlONm#9eH2&vY8udwTB*l z*qxuBx9#)KyY0u1=AJOF{p!?z&%R=AxI=&W;qU+58=HSRd+~Xvj{f-N zZ?syi%qRA}^gHbGFJ;bu*Zsp=j{oBwcbxYpSN+p>?%aO7_}QV$W^TRt&O7G*=h5O- zL%;Qd7tep{%On5r$jFXQz4hLkA3XW*$BrG_^||+7cjU-@pa1;VZ~T{cec+yp4zf?< zB%EN!e()Iox4YiI^*0V3`lUN}et*Y%+@bl4Z=bs3#dEH|`pwyMfBS(y{nl%*z4pvA z&ph|sa~D1OXZ0`K15ErUYQtl8+FKYzx?8kdhhm@oc2K0e;x-#+tmSoHPM<{=g4X zhPskkM%hRW4-X%VqgGc_Gcq!Y)U8sI@O@i^eDnG)qTr(-iKtB=oyN{ZmTNfS20 zf&#_JZ3bLvD=RBW$-!d9yiZ=iZLO_i>D<#xONUNvlN8YLLzjH9?9;6?*9Gz?J)8c zm7kyAcr4wPCjKMTmV3=It8laiuH1zy6&g^b5D`E9oX zhIjldp)_!I)Hc+br>vUB(>SYYYh(9Z?I!o|Hz-D;;jCFk2D-SM2?&EY{)9NQb4#gy zPrtKfVl9aLhxWdQ1mo2a!x-1>6r&=rZ_^(U^JKBEsH!RoN*&_7C*xTH973|RYOFcQ@- z3cc%U_*F%Y%ryM&pI)tOzXfAYQJCvdvW)ZoL{5~z%fjg`cA$*VM|f64{Ez(n9r^hN zL-Dj9<7kD3lvgQ;F!ZHVt*x!eKtDw&@ZbB~$mVkkfiw~Wy@iTr4jhc?7R?%#j-A5# zb0gemBhxsX59eA$KF~Uq39?8RyaJn&@Y4Y=B0W2~uCg z1wMKu|ErzF5~mpd;^!Q)XhDHDaGK_15!{Y|c-*%UFXaqjPryDPx*^*gE?g%1H#t** zK2+-8$vC^Js*ceWe7By%Uf>B*tqU1pJkIS81}gh*KQAgZE$u@L(x3cX8ZnA@cTD8J zEI7uKSzy6WT)tU!B6*5Q!#hrG{yk*B_~2onB{qYhXq(}$gg|gVtNa+eBDWoQh(Yvy z%(V>ql(Y_#i9052bi=HD%z&O4uaELw1AN>Y#o6hqWhS5Wr<{j;#JfcrreaKSHMSL({HAtxBLr=?Q%(1se`V zaE}6%KI#fw`Qh#3vsc&n9x8%=F3nKwNG*d%eyYsJyh)^-5>SH_@BSukJsdiD*@Qiy zJ|QA-LV$YE(9yvls5rjQP%N#vxcB(}{X4!-pi(KrFbL~CN+1df3Lr?=Zk~SnnPg|P z6Ws4$WutrxX$W+!erXz>Cs~eAaZH#InmD2FeY*N!KL3&bcB>1HDK?Hd$xs1cbOh-S5o))%W_Du~J<`mrfSpHJa_KQs9KJW2z{pbOzp(1kVXS^iwZ` z54zk4WIGi`H06Y^AI>Dde^Qs0Mz#5-^WSiGZW`EzwyIq|t}`AF(sePQQur+-UT7U5 zEFR|K@Az7`#e@~YjMjJAu3aTBFVC4G1C+K28?Y`QbwvfkhdS8g z4}u%lZXI8;#<$O}Zf@N8NTR)6Go87JL`6mQe}}W+qmg-)E@<*9==w$Dyu*)0h2($~ zoVbWcIIX?`(wMEE$)$pg#v478N@`-&eKawqH-bR2j~gEJPvzdUv?x*%qpt0vu8IFk96FnIz*>+k;1WBV0HfkUf557tE%SIcp-GJEFGVJZ{0$ouxzdSoD ziUbY)nUT?QcO+$Taq;Xck?@9cev42W@nDKcGmQ>?u%(-yP<11?o91Kd*E>)x<#Q6}n(6~k59?~;GlZU@OyP0O;UaeW7y zb>m+iH~cZTyn`p=<%;M(y$$VplSv%)Z!A_TT*+c*VhY&7nEIiZY+1mrXYR>oeR)3X z!*q6b7Py{K=3I06aMxg{`H6{Xd~{Tm5rK$D2n66j5C;a^m)9qI5bWf+VU5N=r?yoq zJh+^K0>j6fV_v6!Ty}qv{!A|6hKuQYd3hNc?rimkRkdFXJw17p&7wG<`885XBKY@M zH5nTlM-lUKERvx3MFSv}mc|Q|n`jvBXc{MzfB#hfCM=O`4HmYNMGG6D|H<9zaMBs9#Zt_9Hgm#2GrwesZ8#*sa` zf_M~i9Dm;>&ntaPrXnXr6Fq}RKO{0j2DjoBoI&gZZgV?Enp1Ds$)H1*~N)EV=u=dz~`pi56 z?1|Iqnk-U{27`DMNrP5Jz>>a@qo^&;J(zWf80(G!wbl9Unq-@lgWZ+}z65jv|S9E4yCYEY1#!vb^?lf&~=vX=r< z(AKuRcNvn46rY-q!2ZO-iH{cbR?eW zO(ar*lcQtLgVJDZj>7(;an|z=lXr@RKjxRajoYqQ&%DW>qf>Day8!Np9e%oED_qwF zK1Z%7jQjFnPQ?R7PCaY9$!=#TPdw`5GAGXdyTa|WeN&LXQUe__nx?1cbFOHZo4b4P zO3ulN)ynywGmYJnqRfYzrmhIMjFglRB~L4>lOBJ>>8U9N!*1%}5@!_=luK zcV#1zn#hDJsJraA3;efjRZ8n^=; z7pPt3eLbtLUas*D4Z+>r{X@)8xuUv73qP{(nPh;3&m%b306Q@;H8r)g1peDxnopXw z`PJ1nCIuBLN2s}|LF@7(CfV$7d|Du#R2sVQF|xkCzT#_>Tq+y#SFwX|ke`PeAS_hU ziD<8%0zfIXlatofd3pZZT>C*oodVIan0G+HkW1&X<@zOh3q8Y-Xn5X^ybr6L#{oyy zSDOETO)V#r#$lPfD)nnDmP{}+moec^_3PK=sRC)?9FSE$s0TJBKK2JMso#Ma5{Cy1KfK4(9N+vA|RrGPzjZI}f2^3IO{` zOG};CJ)25Okn^5{F*OriGZF7+Hf``De$VT8KQ}I0y=TqBfn__7&yTk{*-dJXmTKgUGJ}EO(&fZWa6J`^6e|eAjHUS_SedV%*n;QoX}qNDctVp}EOfS=MZX@87@I0d(3@ zp2K?0W9wH)XebI`IVgb|iRf@Jh?pc6CMFxMYX+>)hL6uL%T{gZ--NmN&#be?Z-Eum zP1AWkRBzz)Lk9k$d(N~$3mu_vvoH9x?exoW|8$`&Jp)64iSlea5PM3>%6MHb@(-zR zSM23AH8l+l3noowI3$oXJKP+#v{FS{@}d36ioLKR#CUml0I6DCU5y|G@K2o7^9s}Z z&VSa-v28Wm*J`=3qO$Vj;iyVpS~|>i`Y!wXCwabeID8Eg9TYw<9UY)7PG7gGI`sayW2VmG|?}?Ck8F9uV09O3-!uDK>R2(@K-+gZv-mJ% zKT$N6f7C2kaCEH;c)vV7Jh-+0HejvL>3WgYc~BA)6MKRN1m*d0{S_k(#f!^mBw1eI zIeu5%Z3F;>13Z2jN=Y8OzkdJ`w|TfSeX==S>u70daddPX9UTQc^-C5&e+w3kU#(gU z$tZpzr=W!Wc13!fwJOuDYO1aVy}q}1(es4P^5dWj-P%dgk(0+Sn|)Ybf4R9BW+G)P z@7+GPSg78t86fFP)eeXT^0W1NXU3lELhodHtI1?8kjy8Y?^jQ~nrt?E_155Dq`P|N z=G25hPhJ8)``kL#OxPe?pS4tWUesnx*dG4I$>+M>)((GKZnoW?xDojC)%TCNW}+T7 zM~V!foPs8QN?91%YFC)fe#}>XXUmey`qBYt#$v4@TUPH#wl5DYoWPHB-Ew_4I3EZ~ zjvpuhzpDhmh1Wgrmm*5Zvmi3|pP8M5Yy2f7Q?{q)X?_dWP=UJ4KNW8SK#7Jxl5VtG zm6{)2Zgr#&VA)X2tDa8haWn&(sFvX?18&(Y9a8W4_5k9RGUN}Cr*BTzG3mL%C!-e@eKANNN(uRIF!D*71E z8aBIR*+oSIr?=C3uhT{H>%h?xA6A=Ae+0tl{E;RdTWwq00dMs&cZPohv zmAnxd4Bn3g;6;Rjsq>CPJ0&Zt%k|QTY+8Y4W^oa@0LteBCDqE530q-7LCUC6a3AzQ zmIbh4o4tYfR@Yl$Olz)t8RzIFKpX*jyrZL|nZsZx!?H%BwzhU^dRp&z(W24uXl@m7 zoU^aYw2((K9ubOniH3QT`vNcLQRY=0P7hZHwpJA|omNl?vpxt2YnZInmXmvzJ<8n% z+pcT6%*;{+e$-hWSXB(Pw2SSopGPPZ!9o;0#?&Y+`cSo#CV#mAT(=&GBz|);1PH(v zC#mL@Il|&yml>zun%jPPm`R4rZE?w&55P@?Ro2wJdj&X&_^IN`8Zqt*v*LR-9^%}x zhgl!nl8O1qNDQrW*UM2(UwMFc)=z`yOO`B5trAKI1!@@v(A@Bm@TXBfYO zyM}pf*h1JvqFmmInjR%r76m(UtPr0sX&D*MO!VZH!QQI+;qqkq zE`fubNvj@-2hJ9m*`WJ_O?-5ZF4Q{&!B;#7Nsv8OIImuDv62hA3*;R>6P(ab?&VDP zlNNUKxrr>ki$5PuJ8ntH;k+oKqT2-IFok|)Gcsri;&Ky~6HqNkXZtAXoW%i3`NXXh zODVZ&a|h&5UYiXlqJ6ke*8mDCg1zthNT)bGpUww><)fC*Z2!@Z@^A?R9UdYKV?#qj z0|OtcuyZWkB&d`>+vg7SP@d^%)%Fu8?C}cFRWSH^0EM0n9ZVOEX9;A1ww&7D6B3SP z@_z*scwu2-YHDijzcD#Ex%l4zepp&s0)D@;^3Q>16I^~&*%pa$fLL`dxPNry52q&4 ze0Y2eZyAY@-s|_}hZdH#x%r0x{0K21uEz47eL?vF;L+q<#aHZft>Tw$aPBsdp(X-q zw_toID|*Ktz0S$R*8VWOzFPD^h>2*9;|B=*_nbob(=br2ZjT?Wa-ps{A_h@+*FjRV z%lQ_d1u?CttE@1KaZc-|1ImE_@o%hS@?R-zanM5{fe`%385z-C(YVkl(Uz=W?~>v} z*`%D~8%6l;HvG?|*=T&Q0z|kKKC)Xn=>90Mp~7fJ#Wz4S3*Bzcdj4k H8B-+A55 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 IMgYJA02cOm9RL6T literal 0 HcmV?d00001 diff --git a/clint/packages/applib/test/fixtures/libtele-0.2.tar.gz b/clint/packages/applib/test/fixtures/libtele-0.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e42a7abab4534700bf91837f9cd296bbcbb7cc9c GIT binary patch literal 87618 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⪚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 0, total + assert delay >= 0, delay + assert show_size + + _set_current_progress_bar(self) + self.delay = timedelta(seconds=delay) + self.delay_duration = timedelta(seconds=1) + self.start = datetime.now() + self.elapsed = None # time elapsed from start + self.estimated_time_left = None + self.lastprint = None + self.lastprint_duration = None # for updating duration/ETA + self.lastprocessed = 0 + self.total = total + self.processed = 0 + self.show_size = show_size + self.note = note + self.duration_display = '' + self._length = 0 # current length of the progress display + + @classmethod + def iterate(cls, sequence, note=None, post=None): + """Iterate a sequence and update the progress bar accordingly + + The sequence must have a 'len' attribute if it is an arbitrary + generator. + + note -- Text to print before the progress bar + post -- Text to print at the end of progress (w/ fmt vars) + """ + p = cls(len(sequence), note=note) + clean_exit = False + try: + for item in sequence: + yield item + p.tick() + clean_exit = True + finally: + p.close() + if post and clean_exit: + sys.stdout.write(post.format(**p.__dict__) + '\n') + + def tick(self, items=1): + """The method that updates the display if necessary. + + After creating the ``PercentProgress`` object, this method must be + called for every item processed (or, pass items=ITEMS for every ITEMS + processed). + + This method must be called no more than ``self.total`` times (otherwise + you get assertion error .. implying a bug in your code) + + Return True if progress bar was redrawn. + """ + self.processed += items + assert self.processed <= self.total, \ + '{0} <= {1}'.format(self.processed, self.total) + + now = datetime.now() + if (self.lastprint == None or + (now - self.lastprint) > self.delay): + self.lastprint = now + self.redraw() + return True + else: + return False + + def clear(self): + """Erase the entire progress bar and put the cursor at first column""" + # Move cursor to the beginning of current progress line so that further + # messages will overwrite the progress bar. Also overwrite the previous + # progress bar with empty space. + sys.stdout.write('\r' + ' '*self._length + '\r') + sys.stdout.flush() + + def close(self): + """Close (hide) the progress bar + + Erase the progress bar and print the closing message in place of the + previous progress bar text. + """ + self.redraw() + self.clear() + _del_current_progress_bar(self) + + def redraw(self): + self.clear() + percent = _calculate_percent(self.processed, self.total) + now = datetime.now() + self.elapsed = now - self.start + if self.processed: + self.estimated_time_left = self.elapsed.seconds * (self.total-self.processed)/self.processed + + # Update time elapsed/left once a second only (delay_duration = 1s). + if self.elapsed.seconds and ( + self.lastprint_duration is None or \ + now - self.lastprint_duration > self.delay_duration): + + self.lastprint_duration = now + elapsed = _format_duration(self.elapsed.seconds) + if self.estimated_time_left: + self.duration_display = '({0}; {1} left)'.format( + elapsed, _format_duration(self.estimated_time_left)) + else: + self.duration_display = '({0})'.format(elapsed) + + bar_width = 20 + bar_filled = int(round(20.0/100 * percent)) + filled = ['='] * bar_filled + if filled: + filled[-1] = '>' + filled = ''.join(filled) + + progress_bar = ''.join([ + (self.note+': ') if self.note else '', + # header: + '[', + + # solid bar + filled, + + # empty space + ' ' * (bar_width-bar_filled), + + # footer + '] {0:-3}% {1}/{2} {3}'.format( + percent, + self.show_size(self.processed), + self.show_size(self.total), + self.duration_display + ) + ]) + + self._length = len(progress_bar) + sys.stdout.write('\r' + progress_bar + '\r') + sys.stdout.flush() + + +def clear_progress_bar(): + """Clear progress bar, if any""" + if _current_progress_bar: + _current_progress_bar.clear() + + +def redraw_progress_bar(): + """Redraw progress bar, if any""" + if _current_progress_bar: + _current_progress_bar.redraw() + + +@contextmanager +def safe_output(): + """Wrapper that makes it safe to print to stdout + + If a progress bar is currently being shown, this wrapper takes care of + clearing it before .. and then redrawing it after + """ + clear_progress_bar() + yield + redraw_progress_bar() + + +def askyesno(question, default): + """Ask (Y/N) type of question to the user""" + assert isinstance(default, bool), '"default" must be a boolean' + + s = '{0} ({1}/{2}) '.format( + question, + default and 'Y' or 'y', + default and 'n' or 'N') + + while True: + val = input(s).strip().lower() + + if val == '': + return default + elif val in ('y', 'yes', 'ok'): + return True + elif val in ('n', 'no'): + return False + + +# This function was written by Alex Martelli +# http://stackoverflow.com/questions/1396820/ +def colprint(table, totwidth=None): + """Print the table in terminal taking care of wrapping/alignment + + - `table`: A table of strings. Elements must not be `None` + - `totwidth`: If None, console width is used + """ + if not table: return + if totwidth is None: + totwidth = find_console_width() + if totwidth is not None: + totwidth -= 1 # for not printing an extra empty line on windows + numcols = max(len(row) for row in table) + # ensure all rows have >= numcols columns, maybe empty + padded = [row+numcols*['',] for row in table] + # compute col widths, including separating space (except for last one) + widths = [ 1 + max(len(x) for x in column) for column in zip(*padded)] + widths[-1] -= 1 + # drop or truncate columns from the right in order to fit + if totwidth is not None: + while sum(widths) > totwidth: + mustlose = sum(widths) - totwidth + if widths[-1] <= mustlose: + del widths[-1] + else: + widths[-1] -= mustlose + break + # and finally, the output phase! + for row in padded: + s = ''.join(['%*s' % (-w, i[:w]) + for w, i in zip(widths, row)]) + LOG.info(s) + + +def find_console_width(): + """Return the console width + + Return ``None`` if stdout is not a terminal (eg: a pipe) + """ + if sys.platform.startswith('win'): + return _find_windows_console_width() + else: + return _find_unix_console_width() + + +@contextmanager +def longrun(log, finalfn=lambda: None): + """Decorator for performing a long operation with consideration for the + command line. + + 1. Catch keyboard interrupts and exit gracefully + + 2. Print total time elapsed always at the end (successful or not) + + 3. Call ``finalfn`` always at the end (successful or not) + """ + start_time = datetime.now() + + try: + yield + except KeyboardInterrupt: + log.info('*** interrupted by user - Ctrl+c ***') + raise SystemExit(3) + finally: + finalfn() + end_time = datetime.now() + + log.info('') + log.info('-----') + log.info('Total time elapsed: %s', end_time-start_time) + + +def _find_unix_console_width(): + import termios, fcntl, struct, sys + + # fcntl.ioctl will fail if stdout is not a tty + if not sys.stdout.isatty(): + return None + + s = struct.pack("HHHH", 0, 0, 0, 0) + fd_stdout = sys.stdout.fileno() + size = fcntl.ioctl(fd_stdout, termios.TIOCGWINSZ, s) + height, width = struct.unpack("HHHH", size)[:2] + return width + + +def _find_windows_console_width(): + # http://code.activestate.com/recipes/440694/ + from ctypes import windll, create_string_buffer + STDIN, STDOUT, STDERR = -10, -11, -12 + + h = windll.kernel32.GetStdHandle(STDERR) + csbi = create_string_buffer(22) + res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi) + + if res: + import struct + (bufx, bufy, curx, cury, wattr, + left, top, right, bottom, + maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw) + sizex = right - left + 1 + sizey = bottom - top + 1 + return sizex + + + +def _byteshr(bytes): + """Human-readable version of bytes count""" + for x in ['bytes','KB','MB','GB','TB']: + if bytes < 1024.0: + return "%3.1f%s" % (bytes, x) + bytes /= 1024.0 + raise ValueError('cannot find human-readable version') + + +def _calculate_percent(numerator, denominator): + assert numerator <= denominator, '%d <= %d' % (numerator, denominator) + if denominator == 0: + if numerator == 0: + return 100 + else: + raise ValueError('denominator cannot be zero') + + return int(round( numerator / float(denominator) * 100 )) + + +def _format_duration(seconds): + s = [] + if seconds > 60: + s.append('{0}m'.format(int(seconds/60))) + s.append('{0}s'.format(int(seconds % 60))) + return ''.join(s) + + +# Handle to the current progress bar object. There cannot be more than one +# progress bar for obvious reasons. +_current_progress_bar = None +def _set_current_progress_bar(pbar): + global _current_progress_bar + assert _current_progress_bar is None, 'there is already a pbar' + _current_progress_bar = pbar +def _del_current_progress_bar(pbar): + global _current_progress_bar + assert _current_progress_bar is pbar, 'pbar is something else' + _current_progress_bar = None +