[-]
[+]
|
Changed |
harbour-modrana_0.48.2.spec
|
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/__pycache__/modrana.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/__pycache__/test_internet_connectivity.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/color.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/configs.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/constants.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/directions_generator.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/exceptions.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/fix.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/geo.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/gs.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/i18n.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/json_dict.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/lines.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/paths.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/platform_detection.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/point.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/pool.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/providers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/queues.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/rectangle.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/rectangles.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/requirements.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/signal.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/singleton.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/startup.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/threads.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/tilenames.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/tiles.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/utils.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/vmap_load.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/__pycache__/way.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports
^
|
+(directory)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__init__.py
^
|
@@ -0,0 +1,40 @@
+import sys
+
+# based on: http://blog.yjl.im/2009/02/propery-setter-and-deleter-in-python-25.html
+# For Python 2.5-, this will enable the similar property mechanism as in
+# Python 2.6+/3.0+. The code is based on
+# http://bruynooghe.blogspot.com/2008/04/xsetter-syntax-in-python-25.html
+if sys.version_info[:2] <= (2, 5):
+ # If you need to access original built-in property(), uncomment the next line.
+ # __builtin__._property = property
+ import __builtin__
+ class property(property):
+
+ def __init__(self, fget, *args, **kwargs):
+
+ self.__doc__ = fget.__doc__
+ super(property, self).__init__(fget, *args, **kwargs)
+
+ def setter(self, fset):
+
+ cls_ns = sys._getframe(1).f_locals
+ for k, v in cls_ns.iteritems():
+ if v == self:
+ propname = k
+ break
+ cls_ns[propname] = property(self.fget, fset,
+ self.fdel, self.__doc__)
+ return cls_ns[propname]
+
+ def deleter(self, fdel):
+
+ cls_ns = sys._getframe(1).f_locals
+ for k, v in cls_ns.iteritems():
+ if v == self:
+ propname = k
+ break
+ cls_ns[propname] = property(self.fget, self.fset,
+ fdel, self.__doc__)
+ return cls_ns[propname]
+
+ __builtin__.property = property
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__pycache__
^
|
+(directory)
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__pycache__/__init__.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__pycache__/argparse.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__pycache__/ast.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__pycache__/collections.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/__pycache__/six.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/argparse.py
^
|
@@ -0,0 +1,2362 @@
+# Author: Steven J. Bethard <steven.bethard@gmail.com>.
+
+"""Command-line parsing library
+
+This module is an optparse-inspired command-line parsing library that:
+
+ - handles both optional and positional arguments
+ - produces highly informative usage messages
+ - supports parsers that dispatch to sub-parsers
+
+The following is a simple usage example that sums integers from the
+command-line and writes the result to a file::
+
+ parser = argparse.ArgumentParser(
+ description='sum the integers at the command line')
+ parser.add_argument(
+ 'integers', metavar='int', nargs='+', type=int,
+ help='an integer to be summed')
+ parser.add_argument(
+ '--log', default=sys.stdout, type=argparse.FileType('w'),
+ help='the file where the sum should be written')
+ args = parser.parse_args()
+ args.log.write('%s' % sum(args.integers))
+ args.log.close()
+
+The module contains the following public classes:
+
+ - ArgumentParser -- The main entry point for command-line parsing. As the
+ example above shows, the add_argument() method is used to populate
+ the parser with actions for optional and positional arguments. Then
+ the parse_args() method is invoked to convert the args at the
+ command-line into an object with attributes.
+
+ - ArgumentError -- The exception raised by ArgumentParser objects when
+ there are errors with the parser's actions. Errors raised while
+ parsing the command-line are caught by ArgumentParser and emitted
+ as command-line messages.
+
+ - FileType -- A factory for defining types of files to be created. As the
+ example above shows, instances of FileType are typically passed as
+ the type= argument of add_argument() calls.
+
+ - Action -- The base class for parser actions. Typically actions are
+ selected by passing strings like 'store_true' or 'append_const' to
+ the action= argument of add_argument(). However, for greater
+ customization of ArgumentParser actions, subclasses of Action may
+ be defined and passed as the action= argument.
+
+ - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter,
+ ArgumentDefaultsHelpFormatter -- Formatter classes which
+ may be passed as the formatter_class= argument to the
+ ArgumentParser constructor. HelpFormatter is the default,
+ RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser
+ not to change the formatting for help text, and
+ ArgumentDefaultsHelpFormatter adds information about argument defaults
+ to the help.
+
+All other classes in this module are considered implementation details.
+(Also note that HelpFormatter and RawDescriptionHelpFormatter are only
+considered public as object names -- the API of the formatter objects is
+still considered an implementation detail.)
+"""
+
+__version__ = '1.2.1'
+__all__ = [
+ 'ArgumentParser',
+ 'ArgumentError',
+ 'ArgumentTypeError',
+ 'FileType',
+ 'HelpFormatter',
+ 'ArgumentDefaultsHelpFormatter',
+ 'RawDescriptionHelpFormatter',
+ 'RawTextHelpFormatter',
+ 'Namespace',
+ 'Action',
+ 'ONE_OR_MORE',
+ 'OPTIONAL',
+ 'PARSER',
+ 'REMAINDER',
+ 'SUPPRESS',
+ 'ZERO_OR_MORE',
+]
+
+
+import copy as _copy
+import os as _os
+import re as _re
+import sys as _sys
+import textwrap as _textwrap
+
+from gettext import gettext as _
+
+try:
+ set
+except NameError:
+ # for python < 2.4 compatibility (sets module is there since 2.3):
+ from sets import Set as set
+
+try:
+ basestring
+except NameError:
+ basestring = str
+
+try:
+ sorted
+except NameError:
+ # for python < 2.4 compatibility:
+ def sorted(iterable, reverse=False):
+ result = list(iterable)
+ result.sort()
+ if reverse:
+ result.reverse()
+ return result
+
+
+def _callable(obj):
+ return hasattr(obj, '__call__') or hasattr(obj, '__bases__')
+
+
+SUPPRESS = '==SUPPRESS=='
+
+OPTIONAL = '?'
+ZERO_OR_MORE = '*'
+ONE_OR_MORE = '+'
+PARSER = 'A...'
+REMAINDER = '...'
+_UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args'
+
+# =============================
+# Utility functions and classes
+# =============================
+
+class _AttributeHolder(object):
+ """Abstract base class that provides __repr__.
+
+ The __repr__ method returns a string in the format::
+ ClassName(attr=name, attr=name, ...)
+ The attributes are determined either by a class-level attribute,
+ '_kwarg_names', or by inspecting the instance __dict__.
+ """
+
+ def __repr__(self):
+ type_name = type(self).__name__
+ arg_strings = []
+ for arg in self._get_args():
+ arg_strings.append(repr(arg))
+ for name, value in self._get_kwargs():
+ arg_strings.append('%s=%r' % (name, value))
+ return '%s(%s)' % (type_name, ', '.join(arg_strings))
+
+ def _get_kwargs(self):
+ return sorted(self.__dict__.items())
+
+ def _get_args(self):
+ return []
+
+
+def _ensure_value(namespace, name, value):
+ if getattr(namespace, name, None) is None:
+ setattr(namespace, name, value)
+ return getattr(namespace, name)
+
+
+# ===============
+# Formatting Help
+# ===============
+
+class HelpFormatter(object):
+ """Formatter for generating usage messages and argument help strings.
+
+ Only the name of this class is considered a public API. All the methods
+ provided by the class are considered an implementation detail.
+ """
+
+ def __init__(self,
+ prog,
+ indent_increment=2,
+ max_help_position=24,
+ width=None):
+
+ # default setting for width
+ if width is None:
+ try:
+ width = int(_os.environ['COLUMNS'])
+ except (KeyError, ValueError):
+ width = 80
+ width -= 2
+
+ self._prog = prog
+ self._indent_increment = indent_increment
+ self._max_help_position = max_help_position
+ self._width = width
+
+ self._current_indent = 0
+ self._level = 0
+ self._action_max_length = 0
+
+ self._root_section = self._Section(self, None)
+ self._current_section = self._root_section
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/ast.py
^
|
@@ -0,0 +1,311 @@
+# -*- coding: utf-8 -*-
+"""
+ ast
+ ~~~
+
+ The `ast` module helps Python applications to process trees of the Python
+ abstract syntax grammar. The abstract syntax itself might change with
+ each Python release; this module helps to find out programmatically what
+ the current grammar looks like and allows modifications of it.
+
+ An abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as
+ a flag to the `compile()` builtin function or by using the `parse()`
+ function from this module. The result will be a tree of objects whose
+ classes all inherit from `ast.AST`.
+
+ A modified abstract syntax tree can be compiled into a Python code object
+ using the built-in `compile()` function.
+
+ Additionally various helper functions are provided that make working with
+ the trees simpler. The main intention of the helper functions and this
+ module in general is to provide an easy to use interface for libraries
+ that work tightly with the python syntax (template engines for example).
+
+
+ :copyright: Copyright 2008 by Armin Ronacher.
+ :license: Python License.
+"""
+from _ast import *
+from _ast import __version__
+
+
+def parse(source, filename='<unknown>', mode='exec'):
+ """
+ Parse the source into an AST node.
+ Equivalent to compile(source, filename, mode, PyCF_ONLY_AST).
+ """
+ return compile(source, filename, mode, PyCF_ONLY_AST)
+
+
+def literal_eval(node_or_string):
+ """
+ Safely evaluate an expression node or a string containing a Python
+ expression. The string or node provided may only consist of the following
+ Python literal structures: strings, numbers, tuples, lists, dicts, booleans,
+ and None.
+ """
+ _safe_names = {'None': None, 'True': True, 'False': False}
+ if isinstance(node_or_string, basestring):
+ node_or_string = parse(node_or_string, mode='eval')
+ if isinstance(node_or_string, Expression):
+ node_or_string = node_or_string.body
+ def _convert(node):
+ if isinstance(node, Str):
+ return node.s
+ elif isinstance(node, Num):
+ return node.n
+ elif isinstance(node, Tuple):
+ return tuple(map(_convert, node.elts))
+ elif isinstance(node, List):
+ return list(map(_convert, node.elts))
+ elif isinstance(node, Dict):
+ return dict((_convert(k), _convert(v)) for k, v
+ in zip(node.keys, node.values))
+ elif isinstance(node, Name):
+ if node.id in _safe_names:
+ return _safe_names[node.id]
+ elif isinstance(node, BinOp) and \
+ isinstance(node.op, (Add, Sub)) and \
+ isinstance(node.right, Num) and \
+ isinstance(node.right.n, complex) and \
+ isinstance(node.left, Num) and \
+ isinstance(node.left.n, (int, long, float)):
+ left = node.left.n
+ right = node.right.n
+ if isinstance(node.op, Add):
+ return left + right
+ else:
+ return left - right
+ raise ValueError('malformed string')
+ return _convert(node_or_string)
+
+
+def dump(node, annotate_fields=True, include_attributes=False):
+ """
+ Return a formatted dump of the tree in *node*. This is mainly useful for
+ debugging purposes. The returned string will show the names and the values
+ for fields. This makes the code impossible to evaluate, so if evaluation is
+ wanted *annotate_fields* must be set to False. Attributes such as line
+ numbers and column offsets are not dumped by default. If this is wanted,
+ *include_attributes* can be set to True.
+ """
+ def _format(node):
+ if isinstance(node, AST):
+ fields = [(a, _format(b)) for a, b in iter_fields(node)]
+ rv = '%s(%s' % (node.__class__.__name__, ', '.join(
+ ('%s=%s' % field for field in fields)
+ if annotate_fields else
+ (b for a, b in fields)
+ ))
+ if include_attributes and node._attributes:
+ rv += fields and ', ' or ' '
+ rv += ', '.join('%s=%s' % (a, _format(getattr(node, a)))
+ for a in node._attributes)
+ return rv + ')'
+ elif isinstance(node, list):
+ return '[%s]' % ', '.join(_format(x) for x in node)
+ return repr(node)
+ if not isinstance(node, AST):
+ raise TypeError('expected AST, got %r' % node.__class__.__name__)
+ return _format(node)
+
+
+def copy_location(new_node, old_node):
+ """
+ Copy source location (`lineno` and `col_offset` attributes) from
+ *old_node* to *new_node* if possible, and return *new_node*.
+ """
+ for attr in 'lineno', 'col_offset':
+ if attr in old_node._attributes and attr in new_node._attributes \
+ and hasattr(old_node, attr):
+ setattr(new_node, attr, getattr(old_node, attr))
+ return new_node
+
+
+def fix_missing_locations(node):
+ """
+ When you compile a node tree with compile(), the compiler expects lineno and
+ col_offset attributes for every node that supports them. This is rather
+ tedious to fill in for generated nodes, so this helper adds these attributes
+ recursively where not already set, by setting them to the values of the
+ parent node. It works recursively starting at *node*.
+ """
+ def _fix(node, lineno, col_offset):
+ if 'lineno' in node._attributes:
+ if not hasattr(node, 'lineno'):
+ node.lineno = lineno
+ else:
+ lineno = node.lineno
+ if 'col_offset' in node._attributes:
+ if not hasattr(node, 'col_offset'):
+ node.col_offset = col_offset
+ else:
+ col_offset = node.col_offset
+ for child in iter_child_nodes(node):
+ _fix(child, lineno, col_offset)
+ _fix(node, 1, 0)
+ return node
+
+
+def increment_lineno(node, n=1):
+ """
+ Increment the line number of each node in the tree starting at *node* by *n*.
+ This is useful to "move code" to a different location in a file.
+ """
+ for child in walk(node):
+ if 'lineno' in child._attributes:
+ child.lineno = getattr(child, 'lineno', 0) + n
+ return node
+
+
+def iter_fields(node):
+ """
+ Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields``
+ that is present on *node*.
+ """
+ for field in node._fields:
+ try:
+ yield field, getattr(node, field)
+ except AttributeError:
+ pass
+
+
+def iter_child_nodes(node):
+ """
+ Yield all direct child nodes of *node*, that is, all fields that are nodes
+ and all items of fields that are lists of nodes.
+ """
+ for name, field in iter_fields(node):
+ if isinstance(field, AST):
+ yield field
+ elif isinstance(field, list):
+ for item in field:
+ if isinstance(item, AST):
+ yield item
+
+
+def get_docstring(node, clean=True):
+ """
+ Return the docstring for the given node or None if no docstring can
+ be found. If the node provided does not have docstrings a TypeError
+ will be raised.
+ """
+ if not isinstance(node, (FunctionDef, ClassDef, Module)):
+ raise TypeError("%r can't have docstrings" % node.__class__.__name__)
+ if node.body and isinstance(node.body[0], Expr) and \
+ isinstance(node.body[0].value, Str):
+ if clean:
+ import inspect
+ return inspect.cleandoc(node.body[0].value.s)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/collections.py
^
|
@@ -0,0 +1,146 @@
+## {{{ http://code.activestate.com/recipes/500261/ (r15)
+from operator import itemgetter as _itemgetter
+from keyword import iskeyword as _iskeyword
+import sys as _sys
+from core.backports.six import string_types as basestring
+
+def namedtuple(typename, field_names, verbose=False, rename=False):
+ """Returns a new subclass of tuple with named fields.
+
+ >>> Point = namedtuple('Point', 'x y')
+ >>> Point.__doc__ # docstring for the new class
+ 'Point(x, y)'
+ >>> p = Point(11, y=22) # instantiate with positional args or keywords
+ >>> p[0] + p[1] # indexable like a plain tuple
+ 33
+ >>> x, y = p # unpack like a regular tuple
+ >>> x, y
+ (11, 22)
+ >>> p.x + p.y # fields also accessable by name
+ 33
+ >>> d = p._asdict() # convert to a dictionary
+ >>> d['x']
+ 11
+ >>> Point(**d) # convert from a dictionary
+ Point(x=11, y=22)
+ >>> p._replace(x=100) # _replace() is like str.replace() but targets named fields
+ Point(x=100, y=22)
+
+ """
+
+ # Parse and validate the field names. Validation serves two purposes,
+ # generating informative error messages and preventing template injection attacks.
+ if isinstance(field_names, basestring):
+ field_names = field_names.replace(',', ' ').split() # names separated by whitespace and/or commas
+ field_names = tuple(map(str, field_names))
+ if rename:
+ names = list(field_names)
+ seen = set()
+ for i, name in enumerate(names):
+ if (not min(c.isalnum() or c=='_' for c in name) or _iskeyword(name)
+ or not name or name[0].isdigit() or name.startswith('_')
+ or name in seen):
+ names[i] = '_%d' % i
+ seen.add(name)
+ field_names = tuple(names)
+ for name in (typename,) + field_names:
+ if not min(c.isalnum() or c=='_' for c in name):
+ raise ValueError('Type names and field names can only contain alphanumeric characters and underscores: %r' % name)
+ if _iskeyword(name):
+ raise ValueError('Type names and field names cannot be a keyword: %r' % name)
+ if name[0].isdigit():
+ raise ValueError('Type names and field names cannot start with a number: %r' % name)
+ seen_names = set()
+ for name in field_names:
+ if name.startswith('_') and not rename:
+ raise ValueError('Field names cannot start with an underscore: %r' % name)
+ if name in seen_names:
+ raise ValueError('Encountered duplicate field name: %r' % name)
+ seen_names.add(name)
+
+ # Create and fill-in the class template
+ numfields = len(field_names)
+ argtxt = repr(field_names).replace("'", "")[1:-1] # tuple repr without parens or quotes
+ reprtxt = ', '.join('%s=%%r' % name for name in field_names)
+ template = '''class %(typename)s(tuple):
+ '%(typename)s(%(argtxt)s)' \n
+ __slots__ = () \n
+ _fields = %(field_names)r \n
+ def __new__(_cls, %(argtxt)s):
+ return _tuple.__new__(_cls, (%(argtxt)s)) \n
+ @classmethod
+ def _make(cls, iterable, new=tuple.__new__, len=len):
+ 'Make a new %(typename)s object from a sequence or iterable'
+ result = new(cls, iterable)
+ if len(result) != %(numfields)d:
+ raise TypeError('Expected %(numfields)d arguments, got %%d' %% len(result))
+ return result \n
+ def __repr__(self):
+ return '%(typename)s(%(reprtxt)s)' %% self \n
+ def _asdict(self):
+ 'Return a new dict which maps field names to their values'
+ return dict(zip(self._fields, self)) \n
+ def _replace(_self, **kwds):
+ 'Return a new %(typename)s object replacing specified fields with new values'
+ result = _self._make(map(kwds.pop, %(field_names)r, _self))
+ if kwds:
+ raise ValueError('Got unexpected field names: %%r' %% kwds.keys())
+ return result \n
+ def __getnewargs__(self):
+ return tuple(self) \n\n''' % locals()
+ for i, name in enumerate(field_names):
+ template += ' %s = _property(_itemgetter(%d))\n' % (name, i)
+ if verbose:
+ print(template)
+
+ # Execute the template string in a temporary namespace
+ namespace = dict(_itemgetter=_itemgetter, __name__='namedtuple_%s' % typename,
+ _property=property, _tuple=tuple)
+ try:
+ exec(template, namespace)
+ except SyntaxError:
+ e = _sys.exc_info()[1]
+ raise SyntaxError(e.message + ':\n' + template)
+ result = namespace[typename]
+
+ # For pickling to work, the __module__ variable needs to be set to the frame
+ # where the named tuple is created. Bypass this step in enviroments where
+ # sys._getframe is not defined (Jython for example) or sys._getframe is not
+ # defined for arguments greater than 0 (IronPython).
+ try:
+ result.__module__ = _sys._getframe(1).f_globals.get('__name__', '__main__')
+ except (AttributeError, ValueError):
+ pass
+
+ return result
+
+if __name__ == '__main__':
+ # verify that instances can be pickled
+ from cPickle import loads, dumps
+ Point = namedtuple('Point', 'x, y', True)
+ p = Point(x=10, y=20)
+ assert p == loads(dumps(p, -1))
+
+ # test and demonstrate ability to override methods
+ class Point(namedtuple('Point', 'x y')):
+ @property
+ def hypot(self):
+ return (self.x ** 2 + self.y ** 2) ** 0.5
+ def __str__(self):
+ return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
+
+ for p in Point(3,4), Point(14,5), Point(9./7,6):
+ print(p)
+
+ class Point(namedtuple('Point', 'x y')):
+ 'Point class with optimized _make() and _replace() without error-checking'
+ _make = classmethod(tuple.__new__)
+ def _replace(self, _map=map, **kwds):
+ return self._make(_map(kwds.get, ('x', 'y'), self))
+
+ print(Point(11, 22)._replace(x=100))
+
+ import doctest
+ TestResults = namedtuple('TestResults', 'failed attempted')
+ print(TestResults(*doctest.testmod()))
+## end of http://code.activestate.com/recipes/500261/ }}}
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/odict
^
|
+(directory)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/odict/__init__.py
^
|
@@ -0,0 +1 @@
+from .pyodict import odict
\ No newline at end of file
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/odict/__pycache__
^
|
+(directory)
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/odict/__pycache__/__init__.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/odict/__pycache__/pyodict.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/odict/pyodict.py
^
|
@@ -0,0 +1,293 @@
+# Python Software Foundation License
+
+# XXX: it feels like using the class with "is" and "is not" instead of "==" and
+# "!=" should be faster.
+class _Nil(object):
+
+ def __repr__(self):
+ return "nil"
+
+ def __eq__(self, other):
+ if (isinstance(other, _Nil)):
+ return True
+ else:
+ return NotImplemented
+
+ def __ne__(self, other):
+ if (isinstance(other, _Nil)):
+ return False
+ else:
+ return NotImplemented
+
+_nil = _Nil()
+
+class _odict(object):
+ """Ordered dict data structure, with O(1) complexity for dict operations
+ that modify one element.
+
+ Overwriting values doesn't change their original sequential order.
+ """
+
+ def _dict_impl(self):
+ return None
+
+ def __init__(self, data=(), **kwds):
+ """This doesn't accept keyword initialization as normal dicts to avoid
+ a trap - inside a function or method the keyword args are accessible
+ only as a dict, without a defined order, so their original order is
+ lost.
+ """
+ if kwds:
+ raise TypeError("__init__() of ordered dict takes no keyword "
+ "arguments to avoid an ordering trap.")
+ self._dict_impl().__init__(self)
+ # If you give a normal dict, then the order of elements is undefined
+ if hasattr(data, "iteritems"):
+ for key, val in data.iteritems():
+ self[key] = val
+ else:
+ for key, val in data:
+ self[key] = val
+
+ # Double-linked list header
+ def _get_lh(self):
+ dict_impl = self._dict_impl()
+ if not hasattr(self, '_lh'):
+ dict_impl.__setattr__(self, '_lh', _nil)
+ return dict_impl.__getattribute__(self, '_lh')
+
+ def _set_lh(self, val):
+ self._dict_impl().__setattr__(self, '_lh', val)
+
+ lh = property(_get_lh, _set_lh)
+
+ # Double-linked list tail
+ def _get_lt(self):
+ dict_impl = self._dict_impl()
+ if not hasattr(self, '_lt'):
+ dict_impl.__setattr__(self, '_lt', _nil)
+ return dict_impl.__getattribute__(self, '_lt')
+
+ def _set_lt(self, val):
+ self._dict_impl().__setattr__(self, '_lt', val)
+
+ lt = property(_get_lt, _set_lt)
+
+ def __getitem__(self, key):
+ return self._dict_impl().__getitem__(self, key)[1]
+
+ def __setitem__(self, key, val):
+ dict_impl = self._dict_impl()
+ try:
+ dict_impl.__getitem__(self, key)[1] = val
+ except KeyError:
+ import sys
+ e = sys.exc_info()[1]
+ new = [dict_impl.__getattribute__(self, 'lt'), val, _nil]
+ dict_impl.__setitem__(self, key, new)
+ if dict_impl.__getattribute__(self, 'lt') == _nil:
+ dict_impl.__setattr__(self, 'lh', key)
+ else:
+ dict_impl.__getitem__(
+ self, dict_impl.__getattribute__(self, 'lt'))[2] = key
+ dict_impl.__setattr__(self, 'lt', key)
+
+ def __delitem__(self, key):
+ dict_impl = self._dict_impl()
+ pred, _ ,succ= self._dict_impl().__getitem__(self, key)
+ if pred == _nil:
+ dict_impl.__setattr__(self, 'lh', succ)
+ else:
+ dict_impl.__getitem__(self, pred)[2] = succ
+ if succ == _nil:
+ dict_impl.__setattr__(self, 'lt', pred)
+ else:
+ dict_impl.__getitem__(self, succ)[0] = pred
+ dict_impl.__delitem__(self, key)
+
+ def __contains__(self, key):
+ return key in self.keys()
+
+ def __len__(self):
+ return len(self.keys())
+
+ def __str__(self):
+ pairs = ("%r: %r" % (k, v) for k, v in self.iteritems())
+ return "{%s}" % ", ".join(pairs)
+
+ def __repr__(self):
+ if self:
+ pairs = ("(%r, %r)" % (k, v) for k, v in self.iteritems())
+ return "odict([%s])" % ", ".join(pairs)
+ else:
+ return "odict()"
+
+ def get(self, k, x=None):
+ if k in self:
+ return self._dict_impl().__getitem__(self, k)[1]
+ else:
+ return x
+
+ def __iter__(self):
+ dict_impl = self._dict_impl()
+ curr_key = dict_impl.__getattribute__(self, 'lh')
+ while curr_key != _nil:
+ yield curr_key
+ curr_key = dict_impl.__getitem__(self, curr_key)[2]
+
+ iterkeys = __iter__
+
+ def keys(self):
+ return list(self.iterkeys())
+
+ def itervalues(self):
+ dict_impl = self._dict_impl()
+ curr_key = dict_impl.__getattribute__(self, 'lh')
+ while curr_key != _nil:
+ _, val, curr_key = dict_impl.__getitem__(self, curr_key)
+ yield val
+
+ def values(self):
+ return list(self.itervalues())
+
+ def iteritems(self):
+ dict_impl = self._dict_impl()
+ curr_key = dict_impl.__getattribute__(self, 'lh')
+ while curr_key != _nil:
+ _, val, next_key = dict_impl.__getitem__(self, curr_key)
+ yield curr_key, val
+ curr_key = next_key
+
+ def items(self):
+ return list(self.iteritems())
+
+ def sort(self, cmp=None, key=None, reverse=False):
+ items = [(k, v) for k,v in self.items()]
+ if cmp is not None:
+ items = sorted(items, cmp=cmp)
+ elif key is not None:
+ items = sorted(items, key=key)
+ else:
+ items = sorted(items, key=lambda x: x[1])
+ if reverse:
+ items.reverse()
+ self.clear()
+ self.__init__(items)
+
+ def clear(self):
+ dict_impl = self._dict_impl()
+ dict_impl.clear(self)
+ dict_impl.__setattr__(self, 'lh', _nil)
+ dict_impl.__setattr__(self, 'lt', _nil)
+
+ def copy(self):
+ return self.__class__(self)
+
+ def update(self, data=(), **kwds):
+ if kwds:
+ raise TypeError("update() of ordered dict takes no keyword "
+ "arguments to avoid an ordering trap.")
+ if hasattr(data, "iteritems"):
+ data = data.iteritems()
+ for key, val in data:
+ self[key] = val
+
+ def setdefault(self, k, x=None):
+ try:
+ return self[k]
+ except KeyError:
+ self[k] = x
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/six.py
^
|
@@ -0,0 +1,423 @@
+"""Utilities for writing code that runs on Python 2 and 3"""
+
+# Copyright (c) 2010-2013 Benjamin Peterson
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import operator
+import sys
+import types
+
+__author__ = "Benjamin Peterson <benjamin@python.org>"
+__version__ = "1.3.0"
+
+
+# Useful for very coarse version differentiation.
+PY2 = sys.version_info[0] == 2
+PY3 = sys.version_info[0] == 3
+
+if PY3:
+ string_types = str,
+ integer_types = int,
+ class_types = type,
+ text_type = str
+ binary_type = bytes
+
+ MAXSIZE = sys.maxsize
+else:
+ string_types = basestring,
+ integer_types = (int, long)
+ class_types = (type, types.ClassType)
+ text_type = unicode
+ binary_type = str
+
+ if sys.platform.startswith("java"):
+ # Jython always uses 32 bits.
+ MAXSIZE = int((1 << 31) - 1)
+ else:
+ # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
+ class X(object):
+ def __len__(self):
+ return 1 << 31
+ try:
+ len(X())
+ except OverflowError:
+ # 32-bit
+ MAXSIZE = int((1 << 31) - 1)
+ else:
+ # 64-bit
+ MAXSIZE = int((1 << 63) - 1)
+ del X
+
+
+def _add_doc(func, doc):
+ """Add documentation to a function."""
+ func.__doc__ = doc
+
+
+def _import_module(name):
+ """Import module, returning the module after the last dot."""
+ __import__(name)
+ return sys.modules[name]
+
+
+class _LazyDescr(object):
+
+ def __init__(self, name):
+ self.name = name
+
+ def __get__(self, obj, tp):
+ result = self._resolve()
+ setattr(obj, self.name, result)
+ # This is a bit ugly, but it avoids running this again.
+ delattr(tp, self.name)
+ return result
+
+
+class MovedModule(_LazyDescr):
+
+ def __init__(self, name, old, new=None):
+ super(MovedModule, self).__init__(name)
+ if PY3:
+ if new is None:
+ new = name
+ self.mod = new
+ else:
+ self.mod = old
+
+ def _resolve(self):
+ return _import_module(self.mod)
+
+
+class MovedAttribute(_LazyDescr):
+
+ def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
+ super(MovedAttribute, self).__init__(name)
+ if PY3:
+ if new_mod is None:
+ new_mod = name
+ self.mod = new_mod
+ if new_attr is None:
+ if old_attr is None:
+ new_attr = name
+ else:
+ new_attr = old_attr
+ self.attr = new_attr
+ else:
+ self.mod = old_mod
+ if old_attr is None:
+ old_attr = name
+ self.attr = old_attr
+
+ def _resolve(self):
+ module = _import_module(self.mod)
+ return getattr(module, self.attr)
+
+
+
+class _MovedItems(types.ModuleType):
+ """Lazy loading of moved objects"""
+
+
+_moved_attributes = [
+ MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
+ MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"),
+ MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"),
+ MovedAttribute("map", "itertools", "builtins", "imap", "map"),
+ MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"),
+ MovedAttribute("reload_module", "__builtin__", "imp", "reload"),
+ MovedAttribute("reduce", "__builtin__", "functools"),
+ MovedAttribute("StringIO", "StringIO", "io"),
+ MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
+ MovedAttribute("zip", "itertools", "builtins", "izip", "zip"),
+
+ MovedModule("builtins", "__builtin__"),
+ MovedModule("configparser", "ConfigParser"),
+ MovedModule("copyreg", "copy_reg"),
+ MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
+ MovedModule("http_cookies", "Cookie", "http.cookies"),
+ MovedModule("html_entities", "htmlentitydefs", "html.entities"),
+ MovedModule("html_parser", "HTMLParser", "html.parser"),
+ MovedModule("http_client", "httplib", "http.client"),
+ MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"),
+ MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"),
+ MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
+ MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
+ MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
+ MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
+ MovedModule("cPickle", "cPickle", "pickle"),
+ MovedModule("queue", "Queue"),
+ MovedModule("reprlib", "repr"),
+ MovedModule("socketserver", "SocketServer"),
+ MovedModule("tkinter", "Tkinter"),
+ MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
+ MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
+ MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
+ MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
+ MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
+ MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
+ MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
+ MovedModule("tkinter_colorchooser", "tkColorChooser",
+ "tkinter.colorchooser"),
+ MovedModule("tkinter_commondialog", "tkCommonDialog",
+ "tkinter.commondialog"),
+ MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
+ MovedModule("tkinter_font", "tkFont", "tkinter.font"),
+ MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
+ MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
+ "tkinter.simpledialog"),
+ MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
+ MovedModule("winreg", "_winreg"),
+]
+for attr in _moved_attributes:
+ setattr(_MovedItems, attr.name, attr)
+del attr
+
+moves = sys.modules[__name__ + ".moves"] = _MovedItems("moves")
+
+
+def add_move(move):
+ """Add an item to six.moves."""
+ setattr(_MovedItems, move.name, move)
+
+
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25
^
|
+(directory)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/README
^
|
@@ -0,0 +1 @@
+This is a an old version os Urllib 3 modified to work with Python 2.5.
\ No newline at end of file
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__init__.py
^
|
@@ -0,0 +1,58 @@
+# urllib3/__init__.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+"""
+urllib3 - Thread-safe connection pooling and re-using.
+"""
+from __future__ import absolute_import
+
+__author__ = 'Andrey Petrov (andrey.petrov@shazow.net)'
+__license__ = 'MIT'
+__version__ = 'dev'
+
+
+from .connectionpool import (
+ HTTPConnectionPool,
+ HTTPSConnectionPool,
+ connection_from_url
+)
+
+from .filepost import encode_multipart_formdata
+from .poolmanager import PoolManager, ProxyManager, proxy_from_url
+from .response import HTTPResponse
+from .util import make_headers, get_host
+
+
+# Set default logging handler to avoid "No handler found" warnings.
+import logging
+try: # Python 2.7+
+ from logging import NullHandler
+except ImportError:
+ class NullHandler(logging.Handler):
+ def emit(self, record):
+ pass
+
+logging.getLogger(__name__).addHandler(NullHandler())
+
+def add_stderr_logger(level=logging.DEBUG):
+ """
+ Helper for quickly adding a StreamHandler to the logger. Useful for
+ debugging.
+
+ Returns the handler after adding it.
+ """
+ # This method needs to be in this __init__.py to get the __name__ correct
+ # even if urllib3 is vendored within another package.
+ logger = logging.getLogger(__name__)
+ handler = logging.StreamHandler()
+ handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s %(message)s'))
+ logger.addHandler(handler)
+ logger.setLevel(level)
+ logger.debug('Added an stderr logging handler to logger: %s' % __name__)
+ return handler
+
+# ... Clean up.
+del NullHandler
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__
^
|
+(directory)
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/__init__.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/_collections.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/connectionpool.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/exceptions.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/filepost.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/poolmanager.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/request.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/response.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/__pycache__/util.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/_collections.py
^
|
@@ -0,0 +1,100 @@
+# urllib3/_collections.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+from __future__ import with_statement # for python 2.5
+
+try:
+ # from _abcoll import MutableMapping
+ from collections import MutableMapping
+except ImportError: # Python 2.5
+ from UserDict import DictMixin as MutableMapping
+
+from threading import Lock
+
+try: # Python 2.7+
+ from collections import OrderedDict
+except ImportError:
+ from .packages.ordered_dict import OrderedDict
+
+
+__all__ = ['RecentlyUsedContainer']
+
+
+_Null = object()
+
+
+class RecentlyUsedContainer(MutableMapping):
+ """
+ Provides a thread-safe dict-like container which maintains up to
+ ``maxsize`` keys while throwing away the least-recently-used keys beyond
+ ``maxsize``.
+
+ :param maxsize:
+ Maximum number of recent elements to retain.
+
+ :param dispose_func:
+ Every time an item is evicted from the container,
+ ``dispose_func(value)`` is called. Callback which will get called
+ """
+
+ ContainerCls = OrderedDict
+
+ def __init__(self, maxsize=10, dispose_func=None):
+ self._maxsize = maxsize
+ self.dispose_func = dispose_func
+
+ self._container = self.ContainerCls()
+ self._lock = Lock()
+
+ def __getitem__(self, key):
+ # Re-insert the item, moving it to the end of the eviction line.
+ with self._lock:
+ item = self._container.pop(key)
+ self._container[key] = item
+ return item
+
+ def __setitem__(self, key, value):
+ evicted_value = _Null
+ with self._lock:
+ # Possibly evict the existing value of 'key'
+ evicted_value = self._container.get(key, _Null)
+ self._container[key] = value
+
+ # If we didn't evict an existing value, we might have to evict the
+ # least recently used item from the beginning of the container.
+ if len(self._container) > self._maxsize:
+ _key, evicted_value = self._container.popitem(last=False)
+
+ if self.dispose_func and evicted_value is not _Null:
+ self.dispose_func(evicted_value)
+
+ def __delitem__(self, key):
+ with self._lock:
+ value = self._container.pop(key)
+
+ if self.dispose_func:
+ self.dispose_func(value)
+
+ def __len__(self):
+ with self._lock:
+ return len(self._container)
+
+ def __iter__(self):
+ raise NotImplementedError('Iteration over this class is unlikely to be threadsafe.')
+
+ def clear(self):
+ with self._lock:
+ # Copy pointers to all values, then wipe the mapping
+ # under Python 2, this copies the list of values twice :-|
+ values = list(self._container.values())
+ self._container.clear()
+
+ if self.dispose_func:
+ for value in values:
+ self.dispose_func(value)
+
+ def keys(self):
+ with self._lock:
+ return self._container.keys()
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/connectionpool.py
^
|
@@ -0,0 +1,615 @@
+# urllib3/connectionpool.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+import logging
+import socket
+import errno
+
+from socket import error as SocketError, timeout as SocketTimeout
+import sys
+from .util import resolve_cert_reqs, resolve_ssl_version, assert_fingerprint
+
+try: # Python 3
+ from http.client import HTTPConnection, HTTPException
+ from http.client import HTTP_PORT, HTTPS_PORT
+except ImportError:
+ from httplib import HTTPConnection, HTTPException
+ from httplib import HTTP_PORT, HTTPS_PORT
+
+try:
+ try:
+ from Queue import LifoQueue, Empty, Full # Python 2.6+
+ except ImportError:
+ from queue import LifoQueue, Empty, Full # Python 3
+except ImportError:
+ from Queue import Queue
+ class LifoQueue(Queue): # Python 2.5
+ """Variant of Queue that retrieves most recently added entries first."""
+ def _init(self, maxsize):
+ self.queue = []
+ self.maxsize = maxsize
+ def _qsize(self, len=len):
+ return len(self.queue)
+ def _put(self, item):
+ self.queue.append(item)
+ def _get(self):
+ return self.queue.pop()
+
+ from Queue import Empty, Full
+
+
+try: # Compiled with SSL?
+ HTTPSConnection = object
+ BaseSSLError = None
+ ssl = None
+
+ try: # Python 3
+ from http.client import HTTPSConnection
+ except ImportError:
+ from httplib import HTTPSConnection
+
+ import ssl
+ BaseSSLError = ssl.SSLError
+
+except (ImportError, AttributeError): # Platform-specific: No SSL.
+ pass
+
+
+from .request import RequestMethods
+from .response import HTTPResponse
+from .util import get_host, is_connection_dropped, ssl_wrap_socket
+from .exceptions import (
+ ClosedPoolError,
+ EmptyPoolError,
+ HostChangedError,
+ MaxRetryError,
+ SSLError,
+ TimeoutError,
+)
+
+from .packages.ssl_match_hostname import match_hostname, CertificateError
+from .packages import six
+
+
+xrange = six.moves.xrange
+
+log = logging.getLogger(__name__)
+
+_Default = object()
+
+port_by_scheme = {
+ 'http': HTTP_PORT,
+ 'https': HTTPS_PORT,
+}
+
+
+## Connection objects (extension of httplib)
+
+class VerifiedHTTPSConnection(HTTPSConnection):
+ """
+ Based on httplib.HTTPSConnection but wraps the socket with
+ SSL certification.
+ """
+ cert_reqs = None
+ ca_certs = None
+ ssl_version = None
+
+ def set_cert(self, key_file=None, cert_file=None,
+ cert_reqs=None, ca_certs=None,
+ assert_hostname=None, assert_fingerprint=None):
+
+ self.key_file = key_file
+ self.cert_file = cert_file
+ self.cert_reqs = cert_reqs
+ self.ca_certs = ca_certs
+ self.assert_hostname = assert_hostname
+ self.assert_fingerprint = assert_fingerprint
+
+ def connect(self):
+ # Add certificate verification
+ sock = socket.create_connection((self.host, self.port), self.timeout)
+
+ resolved_cert_reqs = resolve_cert_reqs(self.cert_reqs)
+ resolved_ssl_version = resolve_ssl_version(self.ssl_version)
+
+ # Wrap socket using verification with the root certs in
+ # trusted_root_certs
+ self.sock = ssl_wrap_socket(sock, self.key_file, self.cert_file,
+ cert_reqs=resolved_cert_reqs,
+ ca_certs=self.ca_certs,
+ server_hostname=self.host,
+ ssl_version=resolved_ssl_version)
+
+ if resolved_cert_reqs != ssl.CERT_NONE:
+ if self.assert_fingerprint:
+ assert_fingerprint(self.sock.getpeercert(binary_form=True),
+ self.assert_fingerprint)
+ else:
+ match_hostname(self.sock.getpeercert(),
+ self.assert_hostname or self.host)
+
+## Pool objects
+
+class ConnectionPool(object):
+ """
+ Base class for all connection pools, such as
+ :class:`.HTTPConnectionPool` and :class:`.HTTPSConnectionPool`.
+ """
+
+ scheme = None
+ QueueCls = LifoQueue
+
+ def __init__(self, host, port=None):
+ self.host = host
+ self.port = port
+
+ def __str__(self):
+ return '%s(host=%r, port=%r)' % (type(self).__name__,
+ self.host, self.port)
+
+
+class HTTPConnectionPool(ConnectionPool, RequestMethods):
+ """
+ Thread-safe connection pool for one host.
+
+ :param host:
+ Host used for this HTTP Connection (e.g. "localhost"), passed into
+ :class:`httplib.HTTPConnection`.
+
+ :param port:
+ Port used for this HTTP Connection (None is equivalent to 80), passed
+ into :class:`httplib.HTTPConnection`.
+
+ :param strict:
+ Causes BadStatusLine to be raised if the status line can't be parsed
+ as a valid HTTP/1.0 or 1.1 status line, passed into
+ :class:`httplib.HTTPConnection`.
+
+ :param timeout:
+ Socket timeout for each individual connection, can be a float. None
+ disables timeout.
+
+ :param maxsize:
+ Number of connections to save that can be reused. More than 1 is useful
+ in multithreaded situations. If ``block`` is set to false, more
+ connections will be created but they will not be saved once they've
+ been used.
+
+ :param block:
+ If set to True, no more than ``maxsize`` connections will be used at
+ a time. When no free connections are available, the call will block
+ until a connection has been released. This is a useful side effect for
+ particular multithreaded situations where one does not want to use more
+ than maxsize connections per host to prevent flooding.
+
+ :param headers:
+ Headers to include with all requests, unless other headers are given
+ explicitly.
+ """
+
+ scheme = 'http'
+
+ def __init__(self, host, port=None, strict=False, timeout=None, maxsize=1,
+ block=False, headers=None):
+ ConnectionPool.__init__(self, host, port)
+ RequestMethods.__init__(self, headers)
+
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib
^
|
+(directory)
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib/__init__.py
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib/__pycache__
^
|
+(directory)
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib/__pycache__/__init__.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib/__pycache__/pyopenssl.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib/ntlmpool.py
^
|
@@ -0,0 +1,120 @@
+# urllib3/contrib/ntlmpool.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+"""
+NTLM authenticating pool, contributed by erikcederstran
+
+Issue #10, see: http://code.google.com/p/urllib3/issues/detail?id=10
+"""
+
+try:
+ from http.client import HTTPSConnection
+except ImportError:
+ from httplib import HTTPSConnection
+from logging import getLogger
+from ntlm import ntlm
+
+from urllib3 import HTTPSConnectionPool
+
+
+log = getLogger(__name__)
+
+
+class NTLMConnectionPool(HTTPSConnectionPool):
+ """
+ Implements an NTLM authentication version of an urllib3 connection pool
+ """
+
+ scheme = 'https'
+
+ def __init__(self, user, pw, authurl, *args, **kwargs):
+ """
+ authurl is a random URL on the server that is protected by NTLM.
+ user is the Windows user, probably in the DOMAIN\username format.
+ pw is the password for the user.
+ """
+ super(NTLMConnectionPool, self).__init__(*args, **kwargs)
+ self.authurl = authurl
+ self.rawuser = user
+ user_parts = user.split('\\', 1)
+ self.domain = user_parts[0].upper()
+ self.user = user_parts[1]
+ self.pw = pw
+
+ def _new_conn(self):
+ # Performs the NTLM handshake that secures the connection. The socket
+ # must be kept open while requests are performed.
+ self.num_connections += 1
+ log.debug('Starting NTLM HTTPS connection no. %d: https://%s%s' %
+ (self.num_connections, self.host, self.authurl))
+
+ headers = {}
+ headers['Connection'] = 'Keep-Alive'
+ req_header = 'Authorization'
+ resp_header = 'www-authenticate'
+
+ conn = HTTPSConnection(host=self.host, port=self.port)
+
+ # Send negotiation message
+ headers[req_header] = (
+ 'NTLM %s' % ntlm.create_NTLM_NEGOTIATE_MESSAGE(self.rawuser))
+ log.debug('Request headers: %s' % headers)
+ conn.request('GET', self.authurl, None, headers)
+ res = conn.getresponse()
+ reshdr = dict(res.getheaders())
+ log.debug('Response status: %s %s' % (res.status, res.reason))
+ log.debug('Response headers: %s' % reshdr)
+ log.debug('Response data: %s [...]' % res.read(100))
+
+ # Remove the reference to the socket, so that it can not be closed by
+ # the response object (we want to keep the socket open)
+ res.fp = None
+
+ # Server should respond with a challenge message
+ auth_header_values = reshdr[resp_header].split(', ')
+ auth_header_value = None
+ for s in auth_header_values:
+ if s[:5] == 'NTLM ':
+ auth_header_value = s[5:]
+ if auth_header_value is None:
+ raise Exception('Unexpected %s response header: %s' %
+ (resp_header, reshdr[resp_header]))
+
+ # Send authentication message
+ ServerChallenge, NegotiateFlags = \
+ ntlm.parse_NTLM_CHALLENGE_MESSAGE(auth_header_value)
+ auth_msg = ntlm.create_NTLM_AUTHENTICATE_MESSAGE(ServerChallenge,
+ self.user,
+ self.domain,
+ self.pw,
+ NegotiateFlags)
+ headers[req_header] = 'NTLM %s' % auth_msg
+ log.debug('Request headers: %s' % headers)
+ conn.request('GET', self.authurl, None, headers)
+ res = conn.getresponse()
+ log.debug('Response status: %s %s' % (res.status, res.reason))
+ log.debug('Response headers: %s' % dict(res.getheaders()))
+ log.debug('Response data: %s [...]' % res.read()[:100])
+ if res.status != 200:
+ if res.status == 401:
+ raise Exception('Server rejected request: wrong '
+ 'username or password')
+ raise Exception('Wrong server response: %s %s' %
+ (res.status, res.reason))
+
+ res.fp = None
+ log.debug('Connection established')
+ return conn
+
+ def urlopen(self, method, url, body=None, headers=None, retries=3,
+ redirect=True, assert_same_host=True):
+ if headers is None:
+ headers = {}
+ headers['Connection'] = 'Keep-Alive'
+ return super(NTLMConnectionPool, self).urlopen(method, url, body,
+ headers, retries,
+ redirect,
+ assert_same_host)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/contrib/pyopenssl.py
^
|
@@ -0,0 +1,170 @@
+'''SSL with SNI-support for Python 2.
+
+This needs the following packages installed:
+
+* pyOpenSSL (tested with 0.13)
+* ndg-httpsclient (tested with 0.3.2)
+* pyasn1 (tested with 0.1.6)
+
+To activate it call :func:`~urllib3.contrib.pyopenssl.inject_into_urllib3`.
+This can be done in a ``sitecustomize`` module, or at any other time before
+your application begins using ``urllib3``, like this::
+
+ try:
+ import urllib3.contrib.pyopenssl
+ urllib3.contrib.pyopenssl.inject_into_urllib3()
+ except ImportError:
+ pass
+
+Now you can use :mod:`urllib3` as you normally would, and it will support SNI
+when the required modules are installed.
+'''
+
+from ndg.httpsclient.ssl_peer_verification import (ServerSSLCertVerification,
+ SUBJ_ALT_NAME_SUPPORT)
+from ndg.httpsclient.subj_alt_name import SubjectAltName
+import OpenSSL.SSL
+from pyasn1.codec.der import decoder as der_decoder
+from socket import _fileobject
+import ssl
+
+from .. import connectionpool
+from .. import util
+import sys
+
+__all__ = ['inject_into_urllib3', 'extract_from_urllib3']
+
+# SNI only *really* works if we can read the subjectAltName of certificates.
+HAS_SNI = SUBJ_ALT_NAME_SUPPORT
+
+# Map from urllib3 to PyOpenSSL compatible parameter-values.
+_openssl_versions = {
+ ssl.PROTOCOL_SSLv23: OpenSSL.SSL.SSLv23_METHOD,
+ ssl.PROTOCOL_SSLv3: OpenSSL.SSL.SSLv3_METHOD,
+ ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD,
+}
+_openssl_verify = {
+ ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE,
+ ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER,
+ ssl.CERT_REQUIRED: OpenSSL.SSL.VERIFY_PEER
+ + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT,
+}
+
+
+orig_util_HAS_SNI = util.HAS_SNI
+orig_connectionpool_ssl_wrap_socket = connectionpool.ssl_wrap_socket
+
+
+def inject_into_urllib3():
+ 'Monkey-patch urllib3 with PyOpenSSL-backed SSL-support.'
+
+ connectionpool.ssl_wrap_socket = ssl_wrap_socket
+ util.HAS_SNI = HAS_SNI
+
+
+def extract_from_urllib3():
+ 'Undo monkey-patching by :func:`inject_into_urllib3`.'
+
+ connectionpool.ssl_wrap_socket = orig_connectionpool_ssl_wrap_socket
+ util.HAS_SNI = orig_util_HAS_SNI
+
+
+### Note: This is a slightly bug-fixed version of same from ndg-httpsclient.
+def get_subj_alt_name(peer_cert):
+ # Search through extensions
+ dns_name = []
+ if not SUBJ_ALT_NAME_SUPPORT:
+ return dns_name
+
+ general_names = SubjectAltName()
+ for i in range(peer_cert.get_extension_count()):
+ ext = peer_cert.get_extension(i)
+ ext_name = ext.get_short_name()
+ if ext_name != 'subjectAltName':
+ continue
+
+ # PyOpenSSL returns extension data in ASN.1 encoded form
+ ext_dat = ext.get_data()
+ decoded_dat = der_decoder.decode(ext_dat,
+ asn1Spec=general_names)
+
+ for name in decoded_dat:
+ if not isinstance(name, SubjectAltName):
+ continue
+ for entry in range(len(name)):
+ component = name.getComponentByPosition(entry)
+ if component.getName() != 'dNSName':
+ continue
+ dns_name.append(str(component.getComponent()))
+
+ return dns_name
+
+
+class WrappedSocket(object):
+ '''API-compatibility wrapper for Python OpenSSL's Connection-class.'''
+
+ def __init__(self, connection, socket):
+ self.connection = connection
+ self.socket = socket
+
+ def makefile(self, mode, bufsize=-1):
+ return _fileobject(self.connection, mode, bufsize)
+
+ def settimeout(self, timeout):
+ return self.socket.settimeout(timeout)
+
+ def sendall(self, data):
+ return self.connection.sendall(data)
+
+ def getpeercert(self, binary_form=False):
+ x509 = self.connection.get_peer_certificate()
+ if not x509:
+ raise ssl.SSLError('')
+
+ if binary_form:
+ return OpenSSL.crypto.dump_certificate(
+ OpenSSL.crypto.FILETYPE_ASN1,
+ x509)
+
+ return {
+ 'subject': (
+ (('commonName', x509.get_subject().CN),),
+ ),
+ 'subjectAltName': [
+ ('DNS', value)
+ for value in get_subj_alt_name(x509)
+ ]
+ }
+
+
+def _verify_callback(cnx, x509, err_no, err_depth, return_code):
+ return err_no == 0
+
+
+def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None,
+ ca_certs=None, server_hostname=None,
+ ssl_version=None):
+ ctx = OpenSSL.SSL.Context(_openssl_versions[ssl_version])
+ if certfile:
+ ctx.use_certificate_file(certfile)
+ if keyfile:
+ ctx.use_privatekey_file(keyfile)
+ if cert_reqs != ssl.CERT_NONE:
+ ctx.set_verify(_openssl_verify[cert_reqs], _verify_callback)
+ if ca_certs:
+ try:
+ ctx.load_verify_locations(ca_certs, None)
+ except OpenSSL.SSL.Error:
+ e = sys.exc_info()[1]
+ raise ssl.SSLError('bad ca_certs: %r' % ca_certs, e)
+
+ cnx = OpenSSL.SSL.Connection(ctx, sock)
+ cnx.set_tlsext_host_name(server_hostname)
+ cnx.set_connect_state()
+ try:
+ cnx.do_handshake()
+ except OpenSSL.SSL.Error:
+ e = sys.exc_info()[1]
+ raise ssl.SSLError('bad handshake', e)
+
+ return WrappedSocket(cnx, sock)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/exceptions.py
^
|
@@ -0,0 +1,87 @@
+# urllib3/exceptions.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+
+## Base Exceptions
+
+class HTTPError(Exception):
+ "Base exception used by this module."
+ pass
+
+
+class PoolError(HTTPError):
+ "Base exception for errors caused within a pool."
+ def __init__(self, pool, message):
+ self.pool = pool
+ HTTPError.__init__(self, "%s: %s" % (pool, message))
+
+ def __reduce__(self):
+ # For pickling purposes.
+ return self.__class__, (None, self.url)
+
+
+class SSLError(HTTPError):
+ "Raised when SSL certificate fails in an HTTPS connection."
+ pass
+
+
+class DecodeError(HTTPError):
+ "Raised when automatic decoding based on Content-Type fails."
+ pass
+
+
+## Leaf Exceptions
+
+class MaxRetryError(PoolError):
+ "Raised when the maximum number of retries is exceeded."
+
+ def __init__(self, pool, url, reason=None):
+ self.reason = reason
+
+ message = "Max retries exceeded with url: %s" % url
+ if reason:
+ message += " (Caused by %s: %s)" % (type(reason), reason)
+ else:
+ message += " (Caused by redirect)"
+
+ PoolError.__init__(self, pool, message)
+ self.url = url
+
+
+class HostChangedError(PoolError):
+ "Raised when an existing pool gets a request for a foreign host."
+
+ def __init__(self, pool, url, retries=3):
+ message = "Tried to open a foreign host with url: %s" % url
+ PoolError.__init__(self, pool, message)
+
+ self.url = url
+ self.retries = retries
+
+
+class TimeoutError(PoolError):
+ "Raised when a socket timeout occurs."
+ pass
+
+
+class EmptyPoolError(PoolError):
+ "Raised when a pool runs out of connections and no more are allowed."
+ pass
+
+
+class ClosedPoolError(PoolError):
+ "Raised when a request enters a pool after the pool has been closed."
+ pass
+
+
+class LocationParseError(ValueError, HTTPError):
+ "Raised when get_host or similar fails to parse the URL input."
+
+ def __init__(self, location):
+ message = "Failed to parse: %s" % location
+ HTTPError.__init__(self, message)
+
+ self.location = location
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/filepost.py
^
|
@@ -0,0 +1,104 @@
+# urllib3/filepost.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+import codecs
+import mimetypes
+
+from uuid import uuid4
+try:
+ from io import BytesIO
+except ImportError:
+ # Python 2.5
+ from StringIO import StringIO as BytesIO
+
+from .packages import six
+from .packages.six import b
+
+writer = codecs.lookup('utf-8')[3]
+
+
+def choose_boundary():
+ """
+ Our embarassingly-simple replacement for mimetools.choose_boundary.
+ """
+ return uuid4().hex
+
+
+def get_content_type(filename):
+ return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
+
+
+def iter_fields(fields):
+ """
+ Iterate over fields.
+
+ Supports list of (k, v) tuples and dicts.
+ """
+ if isinstance(fields, dict):
+ return ((k, v) for k, v in six.iteritems(fields))
+
+ return ((k, v) for k, v in fields)
+
+
+def encode_multipart_formdata(fields, boundary=None):
+ """
+ Encode a dictionary of ``fields`` using the multipart/form-data MIME format.
+
+ :param fields:
+ Dictionary of fields or list of (key, value) or (key, value, MIME type)
+ field tuples. The key is treated as the field name, and the value as
+ the body of the form-data bytes. If the value is a tuple of two
+ elements, then the first element is treated as the filename of the
+ form-data section and a suitable MIME type is guessed based on the
+ filename. If the value is a tuple of three elements, then the third
+ element is treated as an explicit MIME type of the form-data section.
+
+ Field names and filenames must be unicode.
+
+ :param boundary:
+ If not specified, then a random boundary will be generated using
+ :func:`mimetools.choose_boundary`.
+ """
+ body = BytesIO()
+ if boundary is None:
+ boundary = choose_boundary()
+
+ for fieldname, value in iter_fields(fields):
+ body.write(b('--%s\r\n' % (boundary)))
+
+ if isinstance(value, tuple):
+ if len(value) == 3:
+ filename, data, content_type = value
+ else:
+ filename, data = value
+ content_type = get_content_type(filename)
+ writer(body).write('Content-Disposition: form-data; name="%s"; '
+ 'filename="%s"\r\n' % (fieldname, filename))
+ body.write(b('Content-Type: %s\r\n\r\n' %
+ (content_type,)))
+ else:
+ data = value
+ writer(body).write('Content-Disposition: form-data; name="%s"\r\n'
+ % (fieldname))
+ #body.write(b'\r\n')
+ body.write('\r\n')
+
+ if isinstance(data, int):
+ data = str(data) # Backwards compatibility
+
+ if isinstance(data, six.text_type):
+ writer(body).write(data)
+ else:
+ body.write(data)
+
+ #body.write('\r\n')
+ body.write('\r\n')
+
+ body.write(b('--%s--\r\n' % (boundary)))
+
+ content_type = str('multipart/form-data; boundary=%s' % boundary)
+
+ return body.getvalue(), content_type
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages
^
|
+(directory)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/__init__.py
^
|
@@ -0,0 +1,4 @@
+from __future__ import absolute_import
+
+from . import ssl_match_hostname
+
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/__pycache__
^
|
+(directory)
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/__pycache__/__init__.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/__pycache__/ordered_dict.cpython-33.pyc
^
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/__pycache__/six.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/ordered_dict.py
^
|
@@ -0,0 +1,260 @@
+# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy.
+# Passes Python2.7's test suite and incorporates all the latest updates.
+# Copyright 2009 Raymond Hettinger, released under the MIT License.
+# http://code.activestate.com/recipes/576693/
+
+try:
+ from thread import get_ident as _get_ident
+except ImportError:
+ from dummy_thread import get_ident as _get_ident
+
+try:
+ from _abcoll import KeysView, ValuesView, ItemsView
+except ImportError:
+ pass
+
+
+class OrderedDict(dict):
+ 'Dictionary that remembers insertion order'
+ # An inherited dict maps keys to values.
+ # The inherited dict provides __getitem__, __len__, __contains__, and get.
+ # The remaining methods are order-aware.
+ # Big-O running times for all methods are the same as for regular dictionaries.
+
+ # The internal self.__map dictionary maps keys to links in a doubly linked list.
+ # The circular doubly linked list starts and ends with a sentinel element.
+ # The sentinel element never gets deleted (this simplifies the algorithm).
+ # Each link is stored as a list of length three: [PREV, NEXT, KEY].
+
+ def __init__(self, *args, **kwds):
+ '''Initialize an ordered dictionary. Signature is the same as for
+ regular dictionaries, but keyword arguments are not recommended
+ because their insertion order is arbitrary.
+
+ '''
+ if len(args) > 1:
+ raise TypeError('expected at most 1 arguments, got %d' % len(args))
+ try:
+ self.__root
+ except AttributeError:
+ self.__root = root = [] # sentinel node
+ root[:] = [root, root, None]
+ self.__map = {}
+ self.__update(*args, **kwds)
+
+ def __setitem__(self, key, value, dict_setitem=dict.__setitem__):
+ 'od.__setitem__(i, y) <==> od[i]=y'
+ # Setting a new item creates a new link which goes at the end of the linked
+ # list, and the inherited dictionary is updated with the new key/value pair.
+ if key not in self:
+ root = self.__root
+ last = root[0]
+ last[1] = root[0] = self.__map[key] = [last, root, key]
+ dict_setitem(self, key, value)
+
+ def __delitem__(self, key, dict_delitem=dict.__delitem__):
+ 'od.__delitem__(y) <==> del od[y]'
+ # Deleting an existing item uses self.__map to find the link which is
+ # then removed by updating the links in the predecessor and successor nodes.
+ dict_delitem(self, key)
+ link_prev, link_next, key = self.__map.pop(key)
+ link_prev[1] = link_next
+ link_next[0] = link_prev
+
+ def __iter__(self):
+ 'od.__iter__() <==> iter(od)'
+ root = self.__root
+ curr = root[1]
+ while curr is not root:
+ yield curr[2]
+ curr = curr[1]
+
+ def __reversed__(self):
+ 'od.__reversed__() <==> reversed(od)'
+ root = self.__root
+ curr = root[0]
+ while curr is not root:
+ yield curr[2]
+ curr = curr[0]
+
+ def clear(self):
+ 'od.clear() -> None. Remove all items from od.'
+ try:
+ for node in self.__map.itervalues():
+ del node[:]
+ root = self.__root
+ root[:] = [root, root, None]
+ self.__map.clear()
+ except AttributeError:
+ pass
+ dict.clear(self)
+
+ def popitem(self, last=True):
+ '''od.popitem() -> (k, v), return and remove a (key, value) pair.
+ Pairs are returned in LIFO order if last is true or FIFO order if false.
+
+ '''
+ if not self:
+ raise KeyError('dictionary is empty')
+ root = self.__root
+ if last:
+ link = root[0]
+ link_prev = link[0]
+ link_prev[1] = root
+ root[0] = link_prev
+ else:
+ link = root[1]
+ link_next = link[1]
+ root[1] = link_next
+ link_next[0] = root
+ key = link[2]
+ del self.__map[key]
+ value = dict.pop(self, key)
+ return key, value
+
+ # -- the following methods do not depend on the internal structure --
+
+ def keys(self):
+ 'od.keys() -> list of keys in od'
+ return list(self)
+
+ def values(self):
+ 'od.values() -> list of values in od'
+ return [self[key] for key in self]
+
+ def items(self):
+ 'od.items() -> list of (key, value) pairs in od'
+ return [(key, self[key]) for key in self]
+
+ def iterkeys(self):
+ 'od.iterkeys() -> an iterator over the keys in od'
+ return iter(self)
+
+ def itervalues(self):
+ 'od.itervalues -> an iterator over the values in od'
+ for k in self:
+ yield self[k]
+
+ def iteritems(self):
+ 'od.iteritems -> an iterator over the (key, value) items in od'
+ for k in self:
+ yield (k, self[k])
+
+ def update(*args, **kwds):
+ '''od.update(E, **F) -> None. Update od from dict/iterable E and F.
+
+ If E is a dict instance, does: for k in E: od[k] = E[k]
+ If E has a .keys() method, does: for k in E.keys(): od[k] = E[k]
+ Or if E is an iterable of items, does: for k, v in E: od[k] = v
+ In either case, this is followed by: for k, v in F.items(): od[k] = v
+
+ '''
+ if len(args) > 2:
+ raise TypeError('update() takes at most 2 positional '
+ 'arguments (%d given)' % (len(args),))
+ elif not args:
+ raise TypeError('update() takes at least 1 argument (0 given)')
+ self = args[0]
+ # Make progressively weaker assumptions about "other"
+ other = ()
+ if len(args) == 2:
+ other = args[1]
+ if isinstance(other, dict):
+ for key in other:
+ self[key] = other[key]
+ elif hasattr(other, 'keys'):
+ for key in other.keys():
+ self[key] = other[key]
+ else:
+ for key, value in other:
+ self[key] = value
+ for key, value in kwds.items():
+ self[key] = value
+
+ __update = update # let subclasses override update without breaking __init__
+
+ __marker = object()
+
+ def pop(self, key, default=__marker):
+ '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value.
+ If key is not found, d is returned if given, otherwise KeyError is raised.
+
+ '''
+ if key in self:
+ result = self[key]
+ del self[key]
+ return result
+ if default is self.__marker:
+ raise KeyError(key)
+ return default
+
+ def setdefault(self, key, default=None):
+ 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'
+ if key in self:
+ return self[key]
+ self[key] = default
+ return default
+
+ def __repr__(self, _repr_running={}):
+ 'od.__repr__() <==> repr(od)'
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/six.py
^
|
@@ -0,0 +1,385 @@
+"""Utilities for writing code that runs on Python 2 and 3"""
+
+#Copyright (c) 2010-2011 Benjamin Peterson
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy of
+#this software and associated documentation files (the "Software"), to deal in
+#the Software without restriction, including without limitation the rights to
+#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+#the Software, and to permit persons to whom the Software is furnished to do so,
+#subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in all
+#copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+#FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+#COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+#IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import operator
+import sys
+import types
+
+__author__ = "Benjamin Peterson <benjamin@python.org>"
+__version__ = "1.2.0" # Revision 41c74fef2ded
+
+
+# True if we are running on Python 3.
+PY3 = sys.version_info[0] == 3
+
+if PY3:
+ string_types = str,
+ integer_types = int,
+ class_types = type,
+ text_type = str
+ binary_type = bytes
+
+ MAXSIZE = sys.maxsize
+else:
+ string_types = basestring,
+ integer_types = (int, long)
+ class_types = (type, types.ClassType)
+ text_type = unicode
+ binary_type = str
+
+ if sys.platform.startswith("java"):
+ # Jython always uses 32 bits.
+ MAXSIZE = int((1 << 31) - 1)
+ else:
+ # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
+ class X(object):
+ def __len__(self):
+ return 1 << 31
+ try:
+ len(X())
+ except OverflowError:
+ # 32-bit
+ MAXSIZE = int((1 << 31) - 1)
+ else:
+ # 64-bit
+ MAXSIZE = int((1 << 63) - 1)
+ del X
+
+
+def _add_doc(func, doc):
+ """Add documentation to a function."""
+ func.__doc__ = doc
+
+
+def _import_module(name):
+ """Import module, returning the module after the last dot."""
+ __import__(name)
+ return sys.modules[name]
+
+
+class _LazyDescr(object):
+
+ def __init__(self, name):
+ self.name = name
+
+ def __get__(self, obj, tp):
+ result = self._resolve()
+ setattr(obj, self.name, result)
+ # This is a bit ugly, but it avoids running this again.
+ delattr(tp, self.name)
+ return result
+
+
+class MovedModule(_LazyDescr):
+
+ def __init__(self, name, old, new=None):
+ super(MovedModule, self).__init__(name)
+ if PY3:
+ if new is None:
+ new = name
+ self.mod = new
+ else:
+ self.mod = old
+
+ def _resolve(self):
+ return _import_module(self.mod)
+
+
+class MovedAttribute(_LazyDescr):
+
+ def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
+ super(MovedAttribute, self).__init__(name)
+ if PY3:
+ if new_mod is None:
+ new_mod = name
+ self.mod = new_mod
+ if new_attr is None:
+ if old_attr is None:
+ new_attr = name
+ else:
+ new_attr = old_attr
+ self.attr = new_attr
+ else:
+ self.mod = old_mod
+ if old_attr is None:
+ old_attr = name
+ self.attr = old_attr
+
+ def _resolve(self):
+ module = _import_module(self.mod)
+ return getattr(module, self.attr)
+
+
+
+class _MovedItems(types.ModuleType):
+ """Lazy loading of moved objects"""
+
+
+_moved_attributes = [
+ MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
+ MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"),
+ MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"),
+ MovedAttribute("map", "itertools", "builtins", "imap", "map"),
+ MovedAttribute("reload_module", "__builtin__", "imp", "reload"),
+ MovedAttribute("reduce", "__builtin__", "functools"),
+ MovedAttribute("StringIO", "StringIO", "io"),
+ MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
+ MovedAttribute("zip", "itertools", "builtins", "izip", "zip"),
+
+ MovedModule("builtins", "__builtin__"),
+ MovedModule("configparser", "ConfigParser"),
+ MovedModule("copyreg", "copy_reg"),
+ MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
+ MovedModule("http_cookies", "Cookie", "http.cookies"),
+ MovedModule("html_entities", "htmlentitydefs", "html.entities"),
+ MovedModule("html_parser", "HTMLParser", "html.parser"),
+ MovedModule("http_client", "httplib", "http.client"),
+ MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
+ MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
+ MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
+ MovedModule("cPickle", "cPickle", "pickle"),
+ MovedModule("queue", "Queue"),
+ MovedModule("reprlib", "repr"),
+ MovedModule("socketserver", "SocketServer"),
+ MovedModule("tkinter", "Tkinter"),
+ MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
+ MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
+ MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
+ MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
+ MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
+ MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
+ MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
+ MovedModule("tkinter_colorchooser", "tkColorChooser",
+ "tkinter.colorchooser"),
+ MovedModule("tkinter_commondialog", "tkCommonDialog",
+ "tkinter.commondialog"),
+ MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
+ MovedModule("tkinter_font", "tkFont", "tkinter.font"),
+ MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
+ MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
+ "tkinter.simpledialog"),
+ MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
+ MovedModule("winreg", "_winreg"),
+]
+for attr in _moved_attributes:
+ setattr(_MovedItems, attr.name, attr)
+del attr
+
+moves = sys.modules[__name__ + ".moves"] = _MovedItems("moves")
+
+
+def add_move(move):
+ """Add an item to six.moves."""
+ setattr(_MovedItems, move.name, move)
+
+
+def remove_move(name):
+ """Remove item from six.moves."""
+ try:
+ delattr(_MovedItems, name)
+ except AttributeError:
+ try:
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/ssl_match_hostname
^
|
+(directory)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/ssl_match_hostname/__init__.py
^
|
@@ -0,0 +1,61 @@
+"""The match_hostname() function from Python 3.2, essential when using SSL."""
+
+import re
+
+__version__ = '3.2.2'
+
+class CertificateError(ValueError):
+ pass
+
+def _dnsname_to_pat(dn):
+ pats = []
+ for frag in dn.split(r'.'):
+ if frag == '*':
+ # When '*' is a fragment by itself, it matches a non-empty dotless
+ # fragment.
+ pats.append('[^.]+')
+ else:
+ # Otherwise, '*' matches any dotless fragment.
+ frag = re.escape(frag)
+ pats.append(frag.replace(r'\*', '[^.]*'))
+ return re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE)
+
+def match_hostname(cert, hostname):
+ """Verify that *cert* (in decoded format as returned by
+ SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 rules
+ are mostly followed, but IP addresses are not accepted for *hostname*.
+
+ CertificateError is raised on failure. On success, the function
+ returns nothing.
+ """
+ if not cert:
+ raise ValueError("empty or no certificate")
+ dnsnames = []
+ san = cert.get('subjectAltName', ())
+ for key, value in san:
+ if key == 'DNS':
+ if _dnsname_to_pat(value).match(hostname):
+ return
+ dnsnames.append(value)
+ if not dnsnames:
+ # The subject is only checked when there is no dNSName entry
+ # in subjectAltName
+ for sub in cert.get('subject', ()):
+ for key, value in sub:
+ # XXX according to RFC 2818, the most specific Common Name
+ # must be used.
+ if key == 'commonName':
+ if _dnsname_to_pat(value).match(hostname):
+ return
+ dnsnames.append(value)
+ if len(dnsnames) > 1:
+ raise CertificateError("hostname %r "
+ "doesn't match either of %s"
+ % (hostname, ', '.join(map(repr, dnsnames))))
+ elif len(dnsnames) == 1:
+ raise CertificateError("hostname %r "
+ "doesn't match %r"
+ % (hostname, dnsnames[0]))
+ else:
+ raise CertificateError("no appropriate commonName or "
+ "subjectAltName fields were found")
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/ssl_match_hostname/__pycache__
^
|
+(directory)
|
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/packages/ssl_match_hostname/__pycache__/__init__.cpython-33.pyc
^
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/poolmanager.py
^
|
@@ -0,0 +1,191 @@
+# urllib3/poolmanager.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+import logging
+
+from ._collections import RecentlyUsedContainer
+from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool
+from .connectionpool import connection_from_url, port_by_scheme
+from .request import RequestMethods
+from .util import parse_url
+
+
+__all__ = ['PoolManager', 'ProxyManager', 'proxy_from_url']
+
+
+pool_classes_by_scheme = {
+ 'http': HTTPConnectionPool,
+ 'https': HTTPSConnectionPool,
+}
+
+log = logging.getLogger(__name__)
+
+SSL_KEYWORDS = ('key_file', 'cert_file', 'cert_reqs', 'ca_certs',
+ 'ssl_version')
+
+
+class PoolManager(RequestMethods):
+ """
+ Allows for arbitrary requests while transparently keeping track of
+ necessary connection pools for you.
+
+ :param num_pools:
+ Number of connection pools to cache before discarding the least
+ recently used pool.
+
+ :param headers:
+ Headers to include with all requests, unless other headers are given
+ explicitly.
+
+ :param \**connection_pool_kw:
+ Additional parameters are used to create fresh
+ :class:`urllib3.connectionpool.ConnectionPool` instances.
+
+ Example: ::
+
+ >>> manager = PoolManager(num_pools=2)
+ >>> r = manager.request('GET', 'http://google.com/')
+ >>> r = manager.request('GET', 'http://google.com/mail')
+ >>> r = manager.request('GET', 'http://yahoo.com/')
+ >>> len(manager.pools)
+ 2
+
+ """
+
+ def __init__(self, num_pools=10, headers=None, **connection_pool_kw):
+ RequestMethods.__init__(self, headers)
+ self.connection_pool_kw = connection_pool_kw
+ self.pools = RecentlyUsedContainer(num_pools,
+ dispose_func=lambda p: p.close())
+
+ def _new_pool(self, scheme, host, port):
+ """
+ Create a new :class:`ConnectionPool` based on host, port and scheme.
+
+ This method is used to actually create the connection pools handed out
+ by :meth:`connection_from_url` and companion methods. It is intended
+ to be overridden for customization.
+ """
+ pool_cls = pool_classes_by_scheme[scheme]
+ kwargs = self.connection_pool_kw
+ if scheme == 'http':
+ kwargs = self.connection_pool_kw.copy()
+ for kw in SSL_KEYWORDS:
+ kwargs.pop(kw, None)
+
+ return pool_cls(host, port, **kwargs)
+
+ def clear(self):
+ """
+ Empty our store of pools and direct them all to close.
+
+ This will not affect in-flight connections, but they will not be
+ re-used after completion.
+ """
+ self.pools.clear()
+
+ def connection_from_host(self, host, port=None, scheme='http'):
+ """
+ Get a :class:`ConnectionPool` based on the host, port, and scheme.
+
+ If ``port`` isn't given, it will be derived from the ``scheme`` using
+ ``urllib3.connectionpool.port_by_scheme``.
+ """
+ scheme = scheme or 'http'
+ port = port or port_by_scheme.get(scheme, 80)
+
+ pool_key = (scheme, host, port)
+
+ # If the scheme, host, or port doesn't match existing open connections,
+ # open a new ConnectionPool.
+ pool = self.pools.get(pool_key)
+ if pool:
+ return pool
+
+ # Make a fresh ConnectionPool of the desired type
+ pool = self._new_pool(scheme, host, port)
+ self.pools[pool_key] = pool
+ return pool
+
+ def connection_from_url(self, url):
+ """
+ Similar to :func:`urllib3.connectionpool.connection_from_url` but
+ doesn't pass any additional parameters to the
+ :class:`urllib3.connectionpool.ConnectionPool` constructor.
+
+ Additional parameters are taken from the :class:`.PoolManager`
+ constructor.
+ """
+ u = parse_url(url)
+ return self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
+
+ def urlopen(self, method, url, redirect=True, **kw):
+ """
+ Same as :meth:`urllib3.connectionpool.HTTPConnectionPool.urlopen`
+ with custom cross-host redirect logic and only sends the request-uri
+ portion of the ``url``.
+
+ The given ``url`` parameter must be absolute, such that an appropriate
+ :class:`urllib3.connectionpool.ConnectionPool` can be chosen for it.
+ """
+ u = parse_url(url)
+ conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
+
+ kw['assert_same_host'] = False
+ kw['redirect'] = False
+ if 'headers' not in kw:
+ kw['headers'] = self.headers
+
+ response = conn.urlopen(method, u.request_uri, **kw)
+
+ redirect_location = redirect and response.get_redirect_location()
+ if not redirect_location:
+ return response
+
+ if response.status == 303:
+ method = 'GET'
+
+ log.info("Redirecting %s -> %s" % (url, redirect_location))
+ kw['retries'] = kw.get('retries', 3) - 1 # Persist retries countdown
+ return self.urlopen(method, redirect_location, **kw)
+
+
+class ProxyManager(RequestMethods):
+ """
+ Given a ConnectionPool to a proxy, the ProxyManager's ``urlopen`` method
+ will make requests to any url through the defined proxy. The ProxyManager
+ class will automatically set the 'Host' header if it is not provided.
+ """
+
+ def __init__(self, proxy_pool):
+ self.proxy_pool = proxy_pool
+
+ def _set_proxy_headers(self, url, headers=None):
+ """
+ Sets headers needed by proxies: specifically, the Accept and Host
+ headers. Only sets headers not provided by the user.
+ """
+ headers_ = {'Accept': '*/*'}
+
+ host = parse_url(url).host
+ if host:
+ headers_['Host'] = host
+
+ if headers:
+ headers_.update(headers)
+
+ return headers_
+
+ def urlopen(self, method, url, **kw):
+ "Same as HTTP(S)ConnectionPool.urlopen, ``url`` must be absolute."
+ kw['assert_same_host'] = False
+ kw['headers'] = self._set_proxy_headers(url, headers=kw.get('headers'))
+ return self.proxy_pool.urlopen(method, url, **kw)
+
+
+def proxy_from_url(url, **pool_kw):
+ proxy_pool = connection_from_url(url, **pool_kw)
+ return ProxyManager(proxy_pool)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/request.py
^
|
@@ -0,0 +1,142 @@
+# urllib3/request.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+try:
+ from urllib.parse import urlencode
+except ImportError:
+ from urllib import urlencode
+
+from .filepost import encode_multipart_formdata
+
+
+__all__ = ['RequestMethods']
+
+
+class RequestMethods(object):
+ """
+ Convenience mixin for classes who implement a :meth:`urlopen` method, such
+ as :class:`~urllib3.connectionpool.HTTPConnectionPool` and
+ :class:`~urllib3.poolmanager.PoolManager`.
+
+ Provides behavior for making common types of HTTP request methods and
+ decides which type of request field encoding to use.
+
+ Specifically,
+
+ :meth:`.request_encode_url` is for sending requests whose fields are encoded
+ in the URL (such as GET, HEAD, DELETE).
+
+ :meth:`.request_encode_body` is for sending requests whose fields are
+ encoded in the *body* of the request using multipart or www-orm-urlencoded
+ (such as for POST, PUT, PATCH).
+
+ :meth:`.request` is for making any kind of request, it will look up the
+ appropriate encoding format and use one of the above two methods to make
+ the request.
+
+ Initializer parameters:
+
+ :param headers:
+ Headers to include with all requests, unless other headers are given
+ explicitly.
+ """
+
+ _encode_url_methods = set(['DELETE', 'GET', 'HEAD', 'OPTIONS'])
+ _encode_body_methods = set(['PATCH', 'POST', 'PUT', 'TRACE'])
+
+ def __init__(self, headers=None):
+ self.headers = headers or {}
+
+ def urlopen(self, method, url, body=None, headers=None,
+ encode_multipart=True, multipart_boundary=None,
+ **kw): # Abstract
+ raise NotImplemented("Classes extending RequestMethods must implement "
+ "their own ``urlopen`` method.")
+
+ def request(self, method, url, fields=None, headers=None, **urlopen_kw):
+ """
+ Make a request using :meth:`urlopen` with the appropriate encoding of
+ ``fields`` based on the ``method`` used.
+
+ This is a convenience method that requires the least amount of manual
+ effort. It can be used in most situations, while still having the option
+ to drop down to more specific methods when necessary, such as
+ :meth:`request_encode_url`, :meth:`request_encode_body`,
+ or even the lowest level :meth:`urlopen`.
+ """
+ method = method.upper()
+
+ if method in self._encode_url_methods:
+ return self.request_encode_url(method, url, fields=fields,
+ headers=headers,
+ **urlopen_kw)
+ else:
+ return self.request_encode_body(method, url, fields=fields,
+ headers=headers,
+ **urlopen_kw)
+
+ def request_encode_url(self, method, url, fields=None, **urlopen_kw):
+ """
+ Make a request using :meth:`urlopen` with the ``fields`` encoded in
+ the url. This is useful for request methods like GET, HEAD, DELETE, etc.
+ """
+ if fields:
+ url += '?' + urlencode(fields)
+ return self.urlopen(method, url, **urlopen_kw)
+
+ def request_encode_body(self, method, url, fields=None, headers=None,
+ encode_multipart=True, multipart_boundary=None,
+ **urlopen_kw):
+ """
+ Make a request using :meth:`urlopen` with the ``fields`` encoded in
+ the body. This is useful for request methods like POST, PUT, PATCH, etc.
+
+ When ``encode_multipart=True`` (default), then
+ :meth:`urllib3.filepost.encode_multipart_formdata` is used to encode the
+ payload with the appropriate content type. Otherwise
+ :meth:`urllib.urlencode` is used with the
+ 'application/x-www-form-urlencoded' content type.
+
+ Multipart encoding must be used when posting files, and it's reasonably
+ safe to use it in other times too. However, it may break request signing,
+ such as with OAuth.
+
+ Supports an optional ``fields`` parameter of key/value strings AND
+ key/filetuple. A filetuple is a (filename, data, MIME type) tuple where
+ the MIME type is optional. For example: ::
+
+ fields = {
+ 'foo': 'bar',
+ 'fakefile': ('foofile.txt', 'contents of foofile'),
+ 'realfile': ('barfile.txt', open('realfile').read()),
+ 'typedfile': ('bazfile.bin', open('bazfile').read(),
+ 'image/jpeg'),
+ 'nonamefile': 'contents of nonamefile field',
+ }
+
+ When uploading a file, providing a filename (the first parameter of the
+ tuple) is optional but recommended to best mimick behavior of browsers.
+
+ Note that if ``headers`` are supplied, the 'Content-Type' header will be
+ overwritten because it depends on the dynamic random boundary string
+ which is used to compose the body of the request. The random boundary
+ string can be explicitly set with the ``multipart_boundary`` parameter.
+ """
+ if encode_multipart:
+ body, content_type = encode_multipart_formdata(fields or {},
+ boundary=multipart_boundary)
+ else:
+ body, content_type = (urlencode(fields or {}),
+ 'application/x-www-form-urlencoded')
+
+ if headers is None:
+ headers = self.headers
+
+ headers_ = {'Content-Type': content_type}
+ headers_.update(headers)
+
+ return self.urlopen(method, url, body=body, headers=headers_,
+ **urlopen_kw)
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/response.py
^
|
@@ -0,0 +1,241 @@
+# urllib3/response.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+from __future__ import absolute_import
+
+import logging
+import zlib
+
+from .exceptions import DecodeError
+from .packages.six import string_types as basestring, binary_type
+
+
+log = logging.getLogger(__name__)
+
+
+class DeflateDecoder(object):
+
+ def __init__(self):
+ self._first_try = True
+ self._data = binary_type()
+ self._obj = zlib.decompressobj()
+
+ def __getattr__(self, name):
+ return getattr(self._obj, name)
+
+ def decompress(self, data):
+ if not self._first_try:
+ return self._obj.decompress(data)
+
+ self._data += data
+ try:
+ return self._obj.decompress(data)
+ except zlib.error:
+ self._first_try = False
+ self._obj = zlib.decompressobj(-zlib.MAX_WBITS)
+ try:
+ return self.decompress(self._data)
+ finally:
+ self._data = None
+
+
+def _get_decoder(mode):
+ if mode == 'gzip':
+ return zlib.decompressobj(16 + zlib.MAX_WBITS)
+
+ return DeflateDecoder()
+
+
+class HTTPResponse(object):
+ """
+ HTTP Response container.
+
+ Backwards-compatible to httplib's HTTPResponse but the response ``body`` is
+ loaded and decoded on-demand when the ``data`` property is accessed.
+
+ Extra parameters for behaviour not present in httplib.HTTPResponse:
+
+ :param preload_content:
+ If True, the response's body will be preloaded during construction.
+
+ :param decode_content:
+ If True, attempts to decode specific content-encoding's based on headers
+ (like 'gzip' and 'deflate') will be skipped and raw data will be used
+ instead.
+
+ :param original_response:
+ When this HTTPResponse wrapper is generated from an httplib.HTTPResponse
+ object, it's convenient to include the original for debug purposes. It's
+ otherwise unused.
+ """
+
+ CONTENT_DECODERS = ['gzip', 'deflate']
+
+ def __init__(self, body='', headers=None, status=0, version=0, reason=None,
+ strict=0, preload_content=True, decode_content=True,
+ original_response=None, pool=None, connection=None):
+ self.headers = headers or {}
+ self.status = status
+ self.version = version
+ self.reason = reason
+ self.strict = strict
+ self.decode_content = decode_content
+
+ self._decoder = None
+ self._body = body if body and isinstance(body, basestring) else None
+ self._fp = None
+ self._original_response = original_response
+
+ self._pool = pool
+ self._connection = connection
+
+ if hasattr(body, 'read'):
+ self._fp = body
+
+ if preload_content and not self._body:
+ self._body = self.read(decode_content=decode_content)
+
+ def get_redirect_location(self):
+ """
+ Should we redirect and where to?
+
+ :returns: Truthy redirect location string if we got a redirect status
+ code and valid location. ``None`` if redirect status and no
+ location. ``False`` if not a redirect status code.
+ """
+ if self.status in [301, 302, 303, 307]:
+ return self.headers.get('location')
+
+ return False
+
+ def release_conn(self):
+ if not self._pool or not self._connection:
+ return
+
+ self._pool._put_conn(self._connection)
+ self._connection = None
+
+ @property
+ def data(self):
+ # For backwords-compat with earlier urllib3 0.4 and earlier.
+ if self._body:
+ return self._body
+
+ if self._fp:
+ return self.read(cache_content=True)
+
+ def read(self, amt=None, decode_content=None, cache_content=False):
+ """
+ Similar to :meth:`httplib.HTTPResponse.read`, but with two additional
+ parameters: ``decode_content`` and ``cache_content``.
+
+ :param amt:
+ How much of the content to read. If specified, caching is skipped
+ because it doesn't make sense to cache partial content as the full
+ response.
+
+ :param decode_content:
+ If True, will attempt to decode the body based on the
+ 'content-encoding' header.
+
+ :param cache_content:
+ If True, will save the returned data such that the same result is
+ returned despite of the state of the underlying file object. This
+ is useful if you want the ``.data`` property to continue working
+ after having ``.read()`` the file object. (Overridden if ``amt`` is
+ set.)
+ """
+ # Note: content-encoding value should be case-insensitive, per RFC 2616
+ # Section 3.5
+ content_encoding = self.headers.get('content-encoding', '').lower()
+ if self._decoder is None:
+ if content_encoding in self.CONTENT_DECODERS:
+ self._decoder = _get_decoder(content_encoding)
+ if decode_content is None:
+ decode_content = self.decode_content
+
+ if self._fp is None:
+ return
+
+ flush_decoder = False
+
+ try:
+ if amt is None:
+ # cStringIO doesn't like amt=None
+ data = self._fp.read()
+ flush_decoder = True
+ else:
+ cache_content = False
+ data = self._fp.read(amt)
+ if amt != 0 and not data: # Platform-specific: Buggy versions of Python.
+ # Close the connection when no data is returned
+ #
+ # This is redundant to what httplib/http.client _should_
+ # already do. However, versions of python released before
+ # December 15, 2012 (http://bugs.python.org/issue16298) do not
+ # properly close the connection in all cases. There is no harm
+ # in redundantly calling close.
+ self._fp.close()
+ flush_decoder = True
+
+ try:
+ if decode_content and self._decoder:
+ data = self._decoder.decompress(data)
+ except (IOError, zlib.error):
+ raise DecodeError("Received response with content-encoding: %s, but "
+ "failed to decode it." % content_encoding)
+
+ if flush_decoder and self._decoder:
+ buf = self._decoder.decompress(binary_type())
+ data += buf + self._decoder.flush()
+
+ if cache_content:
+ self._body = data
+
+ return data
+
+ finally:
|
[-]
[+]
|
Added |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/backports/urllib3_python25/util.py
^
|
@@ -0,0 +1,382 @@
+# urllib3/util.py
+# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
+#
+# This module is part of urllib3 and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+from __future__ import absolute_import
+
+from base64 import b64encode
+from socket import error as SocketError
+from hashlib import md5, sha1
+from binascii import hexlify, unhexlify
+import sys
+
+from core.backports.collections import namedtuple
+
+
+try:
+ from select import poll, POLLIN
+except ImportError: # `poll` doesn't exist on OSX and other platforms
+ poll = False
+ try:
+ from select import select
+ except ImportError: # `select` doesn't exist on AppEngine.
+ select = False
+
+try: # Test for SSL features
+ SSLContext = None
+ HAS_SNI = False
+
+ import ssl
+ from ssl import wrap_socket, CERT_NONE, PROTOCOL_SSLv23
+ from ssl import SSLContext # Modern SSL?
+ from ssl import HAS_SNI # Has SNI?
+except ImportError:
+ pass
+
+
+from .packages import six
+from .exceptions import LocationParseError, SSLError
+
+
+class Url(namedtuple('Url', ['scheme', 'auth', 'host', 'port', 'path', 'query', 'fragment'])):
+ """
+ Datastructure for representing an HTTP URL. Used as a return value for
+ :func:`parse_url`.
+ """
+ slots = ()
+
+ def __new__(cls, scheme=None, auth=None, host=None, port=None, path=None, query=None, fragment=None):
+ return super(Url, cls).__new__(cls, scheme, auth, host, port, path, query, fragment)
+
+ @property
+ def hostname(self):
+ """For backwards-compatibility with urlparse. We're nice like that."""
+ return self.host
+
+ @property
+ def request_uri(self):
+ """Absolute path including the query string."""
+ uri = self.path or '/'
+
+ if self.query is not None:
+ uri += '?' + self.query
+
+ return uri
+
+
+def split_first(s, delims):
+ """
+ Given a string and an iterable of delimiters, split on the first found
+ delimiter. Return two split parts and the matched delimiter.
+
+ If not found, then the first part is the full input string.
+
+ Example: ::
+
+ >>> split_first('foo/bar?baz', '?/=')
+ ('foo', 'bar?baz', '/')
+ >>> split_first('foo/bar?baz', '123')
+ ('foo/bar?baz', '', None)
+
+ Scales linearly with number of delims. Not ideal for large number of delims.
+ """
+ min_idx = None
+ min_delim = None
+ for d in delims:
+ idx = s.find(d)
+ if idx < 0:
+ continue
+
+ if min_idx is None or idx < min_idx:
+ min_idx = idx
+ min_delim = d
+
+ if min_idx is None or min_idx < 0:
+ return s, '', None
+
+ return s[:min_idx], s[min_idx+1:], min_delim
+
+
+def parse_url(url):
+ """
+ Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is
+ performed to parse incomplete urls. Fields not provided will be None.
+
+ Partly backwards-compatible with :mod:`urlparse`.
+
+ Example: ::
+
+ >>> parse_url('http://google.com/mail/')
+ Url(scheme='http', host='google.com', port=None, path='/', ...)
+ >>> parse_url('google.com:80')
+ Url(scheme=None, host='google.com', port=80, path=None, ...)
+ >>> parse_url('/foo?bar')
+ Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...)
+ """
+
+ # While this code has overlap with stdlib's urlparse, it is much
+ # simplified for our needs and less annoying.
+ # Additionally, this imeplementations does silly things to be optimal
+ # on CPython.
+
+ scheme = None
+ auth = None
+ host = None
+ port = None
+ path = None
+ fragment = None
+ query = None
+
+ # Scheme
+ if '://' in url:
+ scheme, url = url.split('://', 1)
+
+ # Find the earliest Authority Terminator
+ # (http://tools.ietf.org/html/rfc3986#section-3.2)
+ url, path_, delim = split_first(url, ['/', '?', '#'])
+
+ if delim:
+ # Reassemble the path
+ path = delim + path_
+
+ # Auth
+ if '@' in url:
+ auth, url = url.split('@', 1)
+
+ # IPv6
+ if url and url[0] == '[':
+ host, url = url[1:].split(']', 1)
+
+ # Port
+ if ':' in url:
+ _host, port = url.split(':', 1)
+
+ if not host:
+ host = _host
+
+ if not port.isdigit():
+ raise LocationParseError("Failed to parse: %s" % url)
+
+ port = int(port)
+
+ elif not host and url:
+ host = url
+
+ if not path:
+ return Url(scheme, auth, host, port, path, query, fragment)
+
+ # Fragment
+ if '#' in path:
+ path, fragment = path.split('#', 1)
+
+ # Query
+ if '?' in path:
+ path, query = path.split('?', 1)
+
+ return Url(scheme, auth, host, port, path, query, fragment)
+
+
+def get_host(url):
+ """
+ Deprecated. Use :func:`.parse_url` instead.
+ """
+ p = parse_url(url)
+ return p.scheme or 'http', p.hostname, p.port
+
+
+def make_headers(keep_alive=None, accept_encoding=None, user_agent=None,
+ basic_auth=None):
+ """
+ Shortcuts for generating request headers.
+
+ :param keep_alive:
+ If ``True``, adds 'connection: keep-alive' header.
+
+ :param accept_encoding:
+ Can be a boolean, list, or string.
+ ``True`` translates to 'gzip,deflate'.
+ List will get joined by comma.
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/configobj/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/configobj/__pycache__/configobj.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/configobj/__pycache__/validate.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/distance.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/format.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/geohash.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/location.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/point.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/units.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/__pycache__/util.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/base.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/bing.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/dot_us.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/geonames.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/google.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/openmapquest.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/virtual_earth.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/wiki_gis.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/wiki_semantic.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/geocoders/__pycache__/yahoo.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/parsers/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/parsers/__pycache__/base.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/parsers/__pycache__/gpx.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/parsers/__pycache__/html.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/parsers/__pycache__/iso8601.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/geopy/parsers/__pycache__/rdf.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/googlemaps/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/googlemaps/__pycache__/googlemaps.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/baken.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/cellid.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/cities.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/geonames.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/gpx.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/kml.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/nmea.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/osm.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/point.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/trigpoints.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/tzdata.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/unmodified_gpx.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/utils.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/weather_stations.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/upoints/__pycache__/xearth.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/_collections.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/connection.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/connectionpool.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/exceptions.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/fields.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/filepost.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/poolmanager.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/request.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/response.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/__pycache__/util.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/contrib/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/contrib/__pycache__/ntlmpool.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/contrib/__pycache__/pyopenssl.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/packages/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/packages/__pycache__/ordered_dict.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/packages/__pycache__/six.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/bundle/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/core/other/__pycache__/test_geo.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_infoOverlay.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_nearestRoad.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_placenames.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_posFromFile.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_replayGpx.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_shareServer.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_showTracklogs.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_vmap.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/_mod_vmap_2.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/base_module.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_clickHandler.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_config.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_cron.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_display.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_example.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_icons.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_info.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_input.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_interfaceFeedback.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_keys.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_loadTracklogs.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_log.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_mapView.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_markers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_messages.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_notification.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_positionMarker.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_projection.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_routeProfile.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_search.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_showOSD.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_showPOI.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_showTracklogs.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_sketch.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_stats.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_storePOI.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_storeTiles.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_textEntry.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_theme.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_tileserver.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_tracklog.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_tracklogManager.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_units.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_updateTiles.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/mod_voice.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/__pycache__/tileserver_callback_proxy.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/device_modules/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/device_modules/__pycache__/base_device_module.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/device_modules/__pycache__/device_jolla.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/device_modules/__pycache__/device_netbook.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/device_modules/__pycache__/device_pc.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/device_modules/__pycache__/device_q7.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/gui_modules/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/gui_modules/__pycache__/base_gui_module.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/gui_modules/gui_qt5/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/gui_modules/gui_qt5/__pycache__/gui_qt5.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_animatedMapView/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_animatedMapView/__pycache__/mod_animatedMapView.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_animatedMapView/__pycache__/tile.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/__pycache__/base_position_source.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/__pycache__/gps_daemon.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/__pycache__/mod_location.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/__pycache__/qt_mobility.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/gps_module/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/gps_module/__pycache__/client.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/gps_module/__pycache__/gps.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_location/gps_module/__pycache__/misc.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapData/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapData/__pycache__/mod_mapData.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapData/__pycache__/pools.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapLayers/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapLayers/__pycache__/layers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapLayers/__pycache__/mod_mapLayers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapLayers/__pycache__/overlay_groups.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapTiles/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapTiles/__pycache__/mod_mapTiles.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_mapTiles/__pycache__/tile_downloader.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_onlineServices/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_onlineServices/__pycache__/geocoding.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_onlineServices/__pycache__/geonames.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_onlineServices/__pycache__/local_search.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_onlineServices/__pycache__/mod_onlineServices.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_onlineServices/__pycache__/online_providers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_options/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_options/__pycache__/mod_options.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/__pycache__/descriptor.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/__pycache__/message.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/__pycache__/reflection.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/__pycache__/service.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/__pycache__/service_reflection.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/api_implementation.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/containers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/cpp_message.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/decoder.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/descriptor_test.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/encoder.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/generator_test.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/message_listener.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/message_test.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/service_reflection_test.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/test_util.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/type_checkers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/wire_format.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__google/protobuf/internal/__pycache__/wire_format_test.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__pycache__/mod_route.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__pycache__/monav.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__pycache__/monav_support.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__pycache__/routing_providers.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_route/__pycache__/signals_pb2.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_turnByTurn/__pycache__/__init__.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_turnByTurn/__pycache__/instructions_generator.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/mod_turnByTurn/__pycache__/mod_turnByTurn.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/loadOsm.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/route.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/routeAsCSV.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/routeAsGpx.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/tiledata.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/tilenames.cpython-33.pyc
^
|
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/modules/pyroutelib2/__pycache__/weights.cpython-33.pyc
^
|
[-]
[+]
|
Changed |
harbour-modrana_0.48.2.tar.gz/harbour-modrana/usr/share/harbour-modrana/version.txt
^
|
@@ -1 +1 @@
-V0.48.1 git:97630da
+V0.48.2 git:97630da
|