You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@senssoft.apache.org by ar...@apache.org on 2016/12/16 17:11:01 UTC
[43/58] [abbrv] [partial] incubator-senssoft-tap git commit: Fixed
.gitignore file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/METADATA
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/METADATA b/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/METADATA
deleted file mode 100644
index a6482c9..0000000
--- a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/METADATA
+++ /dev/null
@@ -1,469 +0,0 @@
-Metadata-Version: 2.0
-Name: docopt
-Version: 0.6.2
-Summary: Pythonic argument parser, that will make you smile
-Home-page: http://docopt.org
-Author: Vladimir Keleshev
-Author-email: vladimir@keleshev.com
-License: MIT
-Keywords: option arguments parsing optparse argparse getopt
-Platform: UNKNOWN
-Classifier: Development Status :: 3 - Alpha
-Classifier: Topic :: Utilities
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: License :: OSI Approved :: MIT License
-
-``docopt`` creates *beautiful* command-line interfaces
-======================================================================
-
-Video introduction to **docopt**: `PyCon UK 2012: Create *beautiful*
-command-line interfaces with Python <http://youtu.be/pXhcPJK5cMc>`_
-
- New in version 0.6.1:
-
- - Fix issue `#85 <https://github.com/docopt/docopt/issues/85>`_
- which caused improper handling of ``[options]`` shortcut
- if it was present several times.
-
- New in version 0.6.0:
-
- - New argument ``options_first``, disallows interspersing options
- and arguments. If you supply ``options_first=True`` to
- ``docopt``, it will interpret all arguments as positional
- arguments after first positional argument.
-
- - If option with argument could be repeated, its default value
- will be interpreted as space-separated list. E.g. with
- ``[default: ./here ./there]`` will be interpreted as
- ``['./here', './there']``.
-
- Breaking changes:
-
- - Meaning of ``[options]`` shortcut slightly changed. Previously
- it ment *"any known option"*. Now it means *"any option not in
- usage-pattern"*. This avoids the situation when an option is
- allowed to be repeated unintentionaly.
-
- - ``argv`` is ``None`` by default, not ``sys.argv[1:]``.
- This allows ``docopt`` to always use the *latest* ``sys.argv``,
- not ``sys.argv`` during import time.
-
-Isn't it awesome how ``optparse`` and ``argparse`` generate help
-messages based on your code?!
-
-*Hell no!* You know what's awesome? It's when the option parser *is*
-generated based on the beautiful help message that you write yourself!
-This way you don't need to write this stupid repeatable parser-code,
-and instead can write only the help message--*the way you want it*.
-
-**docopt** helps you create most beautiful command-line interfaces
-*easily*:
-
-.. code:: python
-
- """Naval Fate.
-
- Usage:
- naval_fate.py ship new <name>...
- naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
- naval_fate.py ship shoot <x> <y>
- naval_fate.py mine (set|remove) <x> <y> [--moored | --drifting]
- naval_fate.py (-h | --help)
- naval_fate.py --version
-
- Options:
- -h --help Show this screen.
- --version Show version.
- --speed=<kn> Speed in knots [default: 10].
- --moored Moored (anchored) mine.
- --drifting Drifting mine.
-
- """
- from docopt import docopt
-
-
- if __name__ == '__main__':
- arguments = docopt(__doc__, version='Naval Fate 2.0')
- print(arguments)
-
-Beat that! The option parser is generated based on the docstring above
-that is passed to ``docopt`` function. ``docopt`` parses the usage
-pattern (``"Usage: ..."``) and option descriptions (lines starting
-with dash "``-``") and ensures that the program invocation matches the
-usage pattern; it parses options, arguments and commands based on
-that. The basic idea is that *a good help message has all necessary
-information in it to make a parser*.
-
-Also, `PEP 257 <http://www.python.org/dev/peps/pep-0257/>`_ recommends
-putting help message in the module docstrings.
-
-Installation
-======================================================================
-
-Use `pip <http://pip-installer.org>`_ or easy_install::
-
- pip install docopt==0.6.2
-
-Alternatively, you can just drop ``docopt.py`` file into your
-project--it is self-contained.
-
-**docopt** is tested with Python 2.5, 2.6, 2.7, 3.2, 3.3 and PyPy.
-
-API
-======================================================================
-
-.. code:: python
-
- from docopt import docopt
-
-.. code:: python
-
- docopt(doc, argv=None, help=True, version=None, options_first=False)
-
-``docopt`` takes 1 required and 4 optional arguments:
-
-- ``doc`` could be a module docstring (``__doc__``) or some other
- string that contains a **help message** that will be parsed to
- create the option parser. The simple rules of how to write such a
- help message are given in next sections. Here is a quick example of
- such a string:
-
-.. code:: python
-
- """Usage: my_program.py [-hso FILE] [--quiet | --verbose] [INPUT ...]
-
- -h --help show this
- -s --sorted sorted output
- -o FILE specify output file [default: ./test.txt]
- --quiet print less text
- --verbose print more text
-
- """
-
-- ``argv`` is an optional argument vector; by default ``docopt`` uses
- the argument vector passed to your program (``sys.argv[1:]``).
- Alternatively you can supply a list of strings like ``['--verbose',
- '-o', 'hai.txt']``.
-
-- ``help``, by default ``True``, specifies whether the parser should
- automatically print the help message (supplied as ``doc``) and
- terminate, in case ``-h`` or ``--help`` option is encountered
- (options should exist in usage pattern, more on that below). If you
- want to handle ``-h`` or ``--help`` options manually (as other
- options), set ``help=False``.
-
-- ``version``, by default ``None``, is an optional argument that
- specifies the version of your program. If supplied, then, (assuming
- ``--version`` option is mentioned in usage pattern) when parser
- encounters the ``--version`` option, it will print the supplied
- version and terminate. ``version`` could be any printable object,
- but most likely a string, e.g. ``"2.1.0rc1"``.
-
- Note, when ``docopt`` is set to automatically handle ``-h``,
- ``--help`` and ``--version`` options, you still need to mention
- them in usage pattern for this to work. Also, for your users to
- know about them.
-
-- ``options_first``, by default ``False``. If set to ``True`` will
- disallow mixing options and positional argument. I.e. after first
- positional argument, all arguments will be interpreted as positional
- even if the look like options. This can be used for strict
- compatibility with POSIX, or if you want to dispatch your arguments
- to other programs.
-
-The **return** value is a simple dictionary with options, arguments
-and commands as keys, spelled exactly like in your help message. Long
-versions of options are given priority. For example, if you invoke the
-top example as::
-
- naval_fate.py ship Guardian move 100 150 --speed=15
-
-the return dictionary will be:
-
-.. code:: python
-
- {'--drifting': False, 'mine': False,
- '--help': False, 'move': True,
- '--moored': False, 'new': False,
- '--speed': '15', 'remove': False,
- '--version': False, 'set': False,
- '<name>': ['Guardian'], 'ship': True,
- '<x>': '100', 'shoot': False,
- '<y>': '150'}
-
-Help message format
-======================================================================
-
-Help message consists of 2 parts:
-
-- Usage pattern, e.g.::
-
- Usage: my_program.py [-hso FILE] [--quiet | --verbose] [INPUT ...]
-
-- Option descriptions, e.g.::
-
- -h --help show this
- -s --sorted sorted output
- -o FILE specify output file [default: ./test.txt]
- --quiet print less text
- --verbose print more text
-
-Their format is described below; other text is ignored.
-
-Usage pattern format
-----------------------------------------------------------------------
-
-**Usage pattern** is a substring of ``doc`` that starts with
-``usage:`` (case *insensitive*) and ends with a *visibly* empty line.
-Minimum example:
-
-.. code:: python
-
- """Usage: my_program.py
-
- """
-
-The first word after ``usage:`` is interpreted as your program's name.
-You can specify your program's name several times to signify several
-exclusive patterns:
-
-.. code:: python
-
- """Usage: my_program.py FILE
- my_program.py COUNT FILE
-
- """
-
-Each pattern can consist of the following elements:
-
-- **<arguments>**, **ARGUMENTS**. Arguments are specified as either
- upper-case words, e.g. ``my_program.py CONTENT-PATH`` or words
- surrounded by angular brackets: ``my_program.py <content-path>``.
-- **--options**. Options are words started with dash (``-``), e.g.
- ``--output``, ``-o``. You can "stack" several of one-letter
- options, e.g. ``-oiv`` which will be the same as ``-o -i -v``. The
- options can have arguments, e.g. ``--input=FILE`` or ``-i FILE`` or
- even ``-iFILE``. However it is important that you specify option
- descriptions if you want for option to have an argument, a default
- value, or specify synonymous short/long versions of option (see next
- section on option descriptions).
-- **commands** are words that do *not* follow the described above
- conventions of ``--options`` or ``<arguments>`` or ``ARGUMENTS``,
- plus two special commands: dash "``-``" and double dash "``--``"
- (see below).
-
-Use the following constructs to specify patterns:
-
-- **[ ]** (brackets) **optional** elements. e.g.: ``my_program.py
- [-hvqo FILE]``
-- **( )** (parens) **required** elements. All elements that are *not*
- put in **[ ]** are also required, e.g.: ``my_program.py
- --path=<path> <file>...`` is the same as ``my_program.py
- (--path=<path> <file>...)``. (Note, "required options" might be not
- a good idea for your users).
-- **|** (pipe) **mutualy exclusive** elements. Group them using **(
- )** if one of the mutually exclusive elements is required:
- ``my_program.py (--clockwise | --counter-clockwise) TIME``. Group
- them using **[ ]** if none of the mutually-exclusive elements are
- required: ``my_program.py [--left | --right]``.
-- **...** (ellipsis) **one or more** elements. To specify that
- arbitrary number of repeating elements could be accepted, use
- ellipsis (``...``), e.g. ``my_program.py FILE ...`` means one or
- more ``FILE``-s are accepted. If you want to accept zero or more
- elements, use brackets, e.g.: ``my_program.py [FILE ...]``. Ellipsis
- works as a unary operator on the expression to the left.
-- **[options]** (case sensitive) shortcut for any options. You can
- use it if you want to specify that the usage pattern could be
- provided with any options defined below in the option-descriptions
- and do not want to enumerate them all in usage-pattern. -
- "``[--]``". Double dash "``--``" is used by convention to separate
- positional arguments that can be mistaken for options. In order to
- support this convention add "``[--]``" to you usage patterns. -
- "``[-]``". Single dash "``-``" is used by convention to signify that
- ``stdin`` is used instead of a file. To support this add "``[-]``"
- to you usage patterns. "``-``" act as a normal command.
-
-If your pattern allows to match argument-less option (a flag) several
-times::
-
- Usage: my_program.py [-v | -vv | -vvv]
-
-then number of occurences of the option will be counted. I.e.
-``args['-v']`` will be ``2`` if program was invoked as ``my_program
--vv``. Same works for commands.
-
-If your usage patterns allows to match same-named option with argument
-or positional argument several times, the matched arguments will be
-collected into a list::
-
- Usage: my_program.py <file> <file> --path=<path>...
-
-I.e. invoked with ``my_program.py file1 file2 --path=./here
---path=./there`` the returned dict will contain ``args['<file>'] ==
-['file1', 'file2']`` and ``args['--path'] == ['./here', './there']``.
-
-
-Option descriptions format
-----------------------------------------------------------------------
-
-**Option descriptions** consist of a list of options that you put
-below your usage patterns.
-
-It is necessary to list option descriptions in order to specify:
-
-- synonymous short and long options,
-- if an option has an argument,
-- if option's argument has a default value.
-
-The rules are as follows:
-
-- Every line in ``doc`` that starts with ``-`` or ``--`` (not counting
- spaces) is treated as an option description, e.g.::
-
- Options:
- --verbose # GOOD
- -o FILE # GOOD
- Other: --bad # BAD, line does not start with dash "-"
-
-- To specify that option has an argument, put a word describing that
- argument after space (or equals "``=``" sign) as shown below. Follow
- either <angular-brackets> or UPPER-CASE convention for options'
- arguments. You can use comma if you want to separate options. In
- the example below, both lines are valid, however you are recommended
- to stick to a single style.::
-
- -o FILE --output=FILE # without comma, with "=" sign
- -i <file>, --input <file> # with comma, wihtout "=" sing
-
-- Use two spaces to separate options with their informal description::
-
- --verbose More text. # BAD, will be treated as if verbose option had
- # an argument "More", so use 2 spaces instead
- -q Quit. # GOOD
- -o FILE Output file. # GOOD
- --stdout Use stdout. # GOOD, 2 spaces
-
-- If you want to set a default value for an option with an argument,
- put it into the option-description, in form ``[default:
- <my-default-value>]``::
-
- --coefficient=K The K coefficient [default: 2.95]
- --output=FILE Output file [default: test.txt]
- --directory=DIR Some directory [default: ./]
-
-- If the option is not repeatable, the value inside ``[default: ...]``
- will be interpeted as string. If it *is* repeatable, it will be
- splited into a list on whitespace::
-
- Usage: my_program.py [--repeatable=<arg> --repeatable=<arg>]
- [--another-repeatable=<arg>]...
- [--not-repeatable=<arg>]
-
- # will be ['./here', './there']
- --repeatable=<arg> [default: ./here ./there]
-
- # will be ['./here']
- --another-repeatable=<arg> [default: ./here]
-
- # will be './here ./there', because it is not repeatable
- --not-repeatable=<arg> [default: ./here ./there]
-
-Examples
-----------------------------------------------------------------------
-
-We have an extensive list of `examples
-<https://github.com/docopt/docopt/tree/master/examples>`_ which cover
-every aspect of functionality of **docopt**. Try them out, read the
-source if in doubt.
-
-Subparsers, multi-level help and *huge* applications (like git)
-----------------------------------------------------------------------
-
-If you want to split your usage-pattern into several, implement
-multi-level help (whith separate help-screen for each subcommand),
-want to interface with existing scripts that don't use **docopt**, or
-you're building the next "git", you will need the new ``options_first``
-parameter (described in API section above). To get you started quickly
-we implemented a subset of git command-line interface as an example:
-`examples/git
-<https://github.com/docopt/docopt/tree/master/examples/git>`_
-
-
-Data validation
-----------------------------------------------------------------------
-
-**docopt** does one thing and does it well: it implements your
-command-line interface. However it does not validate the input data.
-On the other hand there are libraries like `python schema
-<https://github.com/halst/schema>`_ which make validating data a
-breeze. Take a look at `validation_example.py
-<https://github.com/docopt/docopt/tree/master/examples/validation_example.py>`_
-which uses **schema** to validate data and report an error to the
-user.
-
-Development
-======================================================================
-
-We would *love* to hear what you think about **docopt** on our `issues
-page <http://github.com/docopt/docopt/issues>`_
-
-Make pull requrests, report bugs, suggest ideas and discuss
-**docopt**. You can also drop a line directly to
-<vl...@keleshev.com>.
-
-Porting ``docopt`` to other languages
-======================================================================
-
-We think **docopt** is so good, we want to share it beyond the Python
-community!
-
-The follosing ports are available:
-
-- `Ruby port <http://github.com/docopt/docopt.rb>`_
-- `CoffeeScript port <http://github.com/docopt/docopt.coffee>`_
-- `Lua port <http://github.com/docopt/docopt.lua>`_
-- `PHP port <http://github.com/docopt/docopt.php>`_
-
-But you can always create a port for your favorite language! You are
-encouraged to use the Python version as a reference implementation. A
-Language-agnostic test suite is bundled with `Python implementation
-<http://github.com/docopt/docopt>`_.
-
-Porting discussion is on `issues page
-<http://github.com/docopt/docopt/issues>`_.
-
-Changelog
-======================================================================
-
-**docopt** follows `semantic versioning <http://semver.org>`_. The
-first release with stable API will be 1.0.0 (soon). Until then, you
-are encouraged to specify explicitly the version in your dependency
-tools, e.g.::
-
- pip install docopt==0.6.2
-
-- 0.6.2 `Wheel <http://pythonwheels.com/>`_ support.
-- 0.6.1 Bugfix release.
-- 0.6.0 ``options_first`` parameter.
- **Breaking changes**: Corrected ``[options]`` meaning.
- ``argv`` defaults to ``None``.
-- 0.5.0 Repeated options/commands are counted or accumulated into a
- list.
-- 0.4.2 Bugfix release.
-- 0.4.0 Option descriptions become optional,
- support for "``--``" and "``-``" commands.
-- 0.3.0 Support for (sub)commands like `git remote add`.
- Introduce ``[options]`` shortcut for any options.
- **Breaking changes**: ``docopt`` returns dictionary.
-- 0.2.0 Usage pattern matching. Positional arguments parsing based on
- usage patterns.
- **Breaking changes**: ``docopt`` returns namespace (for arguments),
- not list. Usage pattern is formalized.
-- 0.1.0 Initial release. Options-parsing only (based on options
- description).
-
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/RECORD
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/RECORD b/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/RECORD
deleted file mode 100644
index c87655c..0000000
--- a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/RECORD
+++ /dev/null
@@ -1,9 +0,0 @@
-docopt.py,sha256=RMZQ69gz2FLIcx-j8MV1lQYwliIwDkwZVKVA14VyzFQ,19946
-docopt-0.6.2.dist-info/DESCRIPTION.rst,sha256=LUuk6x_Mlk0p6LdKL7khsZLqAQJ8eblf5WFJfJ4HYmo,17261
-docopt-0.6.2.dist-info/METADATA,sha256=Bx9U0oJrkKGRfXj_rZIL_M-slIOlzMelDdqK3yhG3jg,17930
-docopt-0.6.2.dist-info/RECORD,,
-docopt-0.6.2.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
-docopt-0.6.2.dist-info/metadata.json,sha256=i3QPxtguenkllKC10loruJls1EQzfSCN3H660ejIoGU,822
-docopt-0.6.2.dist-info/top_level.txt,sha256=xAvL2ywTOdLde8wxTVye1299j65YdK3cM5963wNy5SU,7
-docopt-0.6.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
-docopt.pyc,,
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/WHEEL
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/WHEEL b/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/WHEEL
deleted file mode 100644
index 8b6dd1b..0000000
--- a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/WHEEL
+++ /dev/null
@@ -1,6 +0,0 @@
-Wheel-Version: 1.0
-Generator: bdist_wheel (0.29.0)
-Root-Is-Purelib: true
-Tag: py2-none-any
-Tag: py3-none-any
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/metadata.json
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/metadata.json b/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/metadata.json
deleted file mode 100644
index 31341d3..0000000
--- a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/metadata.json
+++ /dev/null
@@ -1 +0,0 @@
-{"classifiers": ["Development Status :: 3 - Alpha", "Topic :: Utilities", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "License :: OSI Approved :: MIT License"], "extensions": {"python.details": {"contacts": [{"email": "vladimir@keleshev.com", "name": "Vladimir Keleshev", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://docopt.org"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["option", "arguments", "parsing", "optparse", "argparse", "getopt"], "license": "MIT", "metadata_version": "2.0", "name": "docopt", "summary": "Pythonic argument parser, that will make you smile", "version": "0.6.2"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/top_level.txt
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/top_level.txt b/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/top_level.txt
deleted file mode 100644
index e5ed2a0..0000000
--- a/env2/lib/python2.7/site-packages/docopt-0.6.2.dist-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-docopt
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/docopt.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/docopt.py b/env2/lib/python2.7/site-packages/docopt.py
deleted file mode 100644
index 7b927e2..0000000
--- a/env2/lib/python2.7/site-packages/docopt.py
+++ /dev/null
@@ -1,579 +0,0 @@
-"""Pythonic command-line interface parser that will make you smile.
-
- * http://docopt.org
- * Repository and issue-tracker: https://github.com/docopt/docopt
- * Licensed under terms of MIT license (see LICENSE-MIT)
- * Copyright (c) 2013 Vladimir Keleshev, vladimir@keleshev.com
-
-"""
-import sys
-import re
-
-
-__all__ = ['docopt']
-__version__ = '0.6.2'
-
-
-class DocoptLanguageError(Exception):
-
- """Error in construction of usage-message by developer."""
-
-
-class DocoptExit(SystemExit):
-
- """Exit in case user invoked program with incorrect arguments."""
-
- usage = ''
-
- def __init__(self, message=''):
- SystemExit.__init__(self, (message + '\n' + self.usage).strip())
-
-
-class Pattern(object):
-
- def __eq__(self, other):
- return repr(self) == repr(other)
-
- def __hash__(self):
- return hash(repr(self))
-
- def fix(self):
- self.fix_identities()
- self.fix_repeating_arguments()
- return self
-
- def fix_identities(self, uniq=None):
- """Make pattern-tree tips point to same object if they are equal."""
- if not hasattr(self, 'children'):
- return self
- uniq = list(set(self.flat())) if uniq is None else uniq
- for i, c in enumerate(self.children):
- if not hasattr(c, 'children'):
- assert c in uniq
- self.children[i] = uniq[uniq.index(c)]
- else:
- c.fix_identities(uniq)
-
- def fix_repeating_arguments(self):
- """Fix elements that should accumulate/increment values."""
- either = [list(c.children) for c in self.either.children]
- for case in either:
- for e in [c for c in case if case.count(c) > 1]:
- if type(e) is Argument or type(e) is Option and e.argcount:
- if e.value is None:
- e.value = []
- elif type(e.value) is not list:
- e.value = e.value.split()
- if type(e) is Command or type(e) is Option and e.argcount == 0:
- e.value = 0
- return self
-
- @property
- def either(self):
- """Transform pattern into an equivalent, with only top-level Either."""
- # Currently the pattern will not be equivalent, but more "narrow",
- # although good enough to reason about list arguments.
- ret = []
- groups = [[self]]
- while groups:
- children = groups.pop(0)
- types = [type(c) for c in children]
- if Either in types:
- either = [c for c in children if type(c) is Either][0]
- children.pop(children.index(either))
- for c in either.children:
- groups.append([c] + children)
- elif Required in types:
- required = [c for c in children if type(c) is Required][0]
- children.pop(children.index(required))
- groups.append(list(required.children) + children)
- elif Optional in types:
- optional = [c for c in children if type(c) is Optional][0]
- children.pop(children.index(optional))
- groups.append(list(optional.children) + children)
- elif AnyOptions in types:
- optional = [c for c in children if type(c) is AnyOptions][0]
- children.pop(children.index(optional))
- groups.append(list(optional.children) + children)
- elif OneOrMore in types:
- oneormore = [c for c in children if type(c) is OneOrMore][0]
- children.pop(children.index(oneormore))
- groups.append(list(oneormore.children) * 2 + children)
- else:
- ret.append(children)
- return Either(*[Required(*e) for e in ret])
-
-
-class ChildPattern(Pattern):
-
- def __init__(self, name, value=None):
- self.name = name
- self.value = value
-
- def __repr__(self):
- return '%s(%r, %r)' % (self.__class__.__name__, self.name, self.value)
-
- def flat(self, *types):
- return [self] if not types or type(self) in types else []
-
- def match(self, left, collected=None):
- collected = [] if collected is None else collected
- pos, match = self.single_match(left)
- if match is None:
- return False, left, collected
- left_ = left[:pos] + left[pos + 1:]
- same_name = [a for a in collected if a.name == self.name]
- if type(self.value) in (int, list):
- if type(self.value) is int:
- increment = 1
- else:
- increment = ([match.value] if type(match.value) is str
- else match.value)
- if not same_name:
- match.value = increment
- return True, left_, collected + [match]
- same_name[0].value += increment
- return True, left_, collected
- return True, left_, collected + [match]
-
-
-class ParentPattern(Pattern):
-
- def __init__(self, *children):
- self.children = list(children)
-
- def __repr__(self):
- return '%s(%s)' % (self.__class__.__name__,
- ', '.join(repr(a) for a in self.children))
-
- def flat(self, *types):
- if type(self) in types:
- return [self]
- return sum([c.flat(*types) for c in self.children], [])
-
-
-class Argument(ChildPattern):
-
- def single_match(self, left):
- for n, p in enumerate(left):
- if type(p) is Argument:
- return n, Argument(self.name, p.value)
- return None, None
-
- @classmethod
- def parse(class_, source):
- name = re.findall('(<\S*?>)', source)[0]
- value = re.findall('\[default: (.*)\]', source, flags=re.I)
- return class_(name, value[0] if value else None)
-
-
-class Command(Argument):
-
- def __init__(self, name, value=False):
- self.name = name
- self.value = value
-
- def single_match(self, left):
- for n, p in enumerate(left):
- if type(p) is Argument:
- if p.value == self.name:
- return n, Command(self.name, True)
- else:
- break
- return None, None
-
-
-class Option(ChildPattern):
-
- def __init__(self, short=None, long=None, argcount=0, value=False):
- assert argcount in (0, 1)
- self.short, self.long = short, long
- self.argcount, self.value = argcount, value
- self.value = None if value is False and argcount else value
-
- @classmethod
- def parse(class_, option_description):
- short, long, argcount, value = None, None, 0, False
- options, _, description = option_description.strip().partition(' ')
- options = options.replace(',', ' ').replace('=', ' ')
- for s in options.split():
- if s.startswith('--'):
- long = s
- elif s.startswith('-'):
- short = s
- else:
- argcount = 1
- if argcount:
- matched = re.findall('\[default: (.*)\]', description, flags=re.I)
- value = matched[0] if matched else None
- return class_(short, long, argcount, value)
-
- def single_match(self, left):
- for n, p in enumerate(left):
- if self.name == p.name:
- return n, p
- return None, None
-
- @property
- def name(self):
- return self.long or self.short
-
- def __repr__(self):
- return 'Option(%r, %r, %r, %r)' % (self.short, self.long,
- self.argcount, self.value)
-
-
-class Required(ParentPattern):
-
- def match(self, left, collected=None):
- collected = [] if collected is None else collected
- l = left
- c = collected
- for p in self.children:
- matched, l, c = p.match(l, c)
- if not matched:
- return False, left, collected
- return True, l, c
-
-
-class Optional(ParentPattern):
-
- def match(self, left, collected=None):
- collected = [] if collected is None else collected
- for p in self.children:
- m, left, collected = p.match(left, collected)
- return True, left, collected
-
-
-class AnyOptions(Optional):
-
- """Marker/placeholder for [options] shortcut."""
-
-
-class OneOrMore(ParentPattern):
-
- def match(self, left, collected=None):
- assert len(self.children) == 1
- collected = [] if collected is None else collected
- l = left
- c = collected
- l_ = None
- matched = True
- times = 0
- while matched:
- # could it be that something didn't match but changed l or c?
- matched, l, c = self.children[0].match(l, c)
- times += 1 if matched else 0
- if l_ == l:
- break
- l_ = l
- if times >= 1:
- return True, l, c
- return False, left, collected
-
-
-class Either(ParentPattern):
-
- def match(self, left, collected=None):
- collected = [] if collected is None else collected
- outcomes = []
- for p in self.children:
- matched, _, _ = outcome = p.match(left, collected)
- if matched:
- outcomes.append(outcome)
- if outcomes:
- return min(outcomes, key=lambda outcome: len(outcome[1]))
- return False, left, collected
-
-
-class TokenStream(list):
-
- def __init__(self, source, error):
- self += source.split() if hasattr(source, 'split') else source
- self.error = error
-
- def move(self):
- return self.pop(0) if len(self) else None
-
- def current(self):
- return self[0] if len(self) else None
-
-
-def parse_long(tokens, options):
- """long ::= '--' chars [ ( ' ' | '=' ) chars ] ;"""
- long, eq, value = tokens.move().partition('=')
- assert long.startswith('--')
- value = None if eq == value == '' else value
- similar = [o for o in options if o.long == long]
- if tokens.error is DocoptExit and similar == []: # if no exact match
- similar = [o for o in options if o.long and o.long.startswith(long)]
- if len(similar) > 1: # might be simply specified ambiguously 2+ times?
- raise tokens.error('%s is not a unique prefix: %s?' %
- (long, ', '.join(o.long for o in similar)))
- elif len(similar) < 1:
- argcount = 1 if eq == '=' else 0
- o = Option(None, long, argcount)
- options.append(o)
- if tokens.error is DocoptExit:
- o = Option(None, long, argcount, value if argcount else True)
- else:
- o = Option(similar[0].short, similar[0].long,
- similar[0].argcount, similar[0].value)
- if o.argcount == 0:
- if value is not None:
- raise tokens.error('%s must not have an argument' % o.long)
- else:
- if value is None:
- if tokens.current() is None:
- raise tokens.error('%s requires argument' % o.long)
- value = tokens.move()
- if tokens.error is DocoptExit:
- o.value = value if value is not None else True
- return [o]
-
-
-def parse_shorts(tokens, options):
- """shorts ::= '-' ( chars )* [ [ ' ' ] chars ] ;"""
- token = tokens.move()
- assert token.startswith('-') and not token.startswith('--')
- left = token.lstrip('-')
- parsed = []
- while left != '':
- short, left = '-' + left[0], left[1:]
- similar = [o for o in options if o.short == short]
- if len(similar) > 1:
- raise tokens.error('%s is specified ambiguously %d times' %
- (short, len(similar)))
- elif len(similar) < 1:
- o = Option(short, None, 0)
- options.append(o)
- if tokens.error is DocoptExit:
- o = Option(short, None, 0, True)
- else: # why copying is necessary here?
- o = Option(short, similar[0].long,
- similar[0].argcount, similar[0].value)
- value = None
- if o.argcount != 0:
- if left == '':
- if tokens.current() is None:
- raise tokens.error('%s requires argument' % short)
- value = tokens.move()
- else:
- value = left
- left = ''
- if tokens.error is DocoptExit:
- o.value = value if value is not None else True
- parsed.append(o)
- return parsed
-
-
-def parse_pattern(source, options):
- tokens = TokenStream(re.sub(r'([\[\]\(\)\|]|\.\.\.)', r' \1 ', source),
- DocoptLanguageError)
- result = parse_expr(tokens, options)
- if tokens.current() is not None:
- raise tokens.error('unexpected ending: %r' % ' '.join(tokens))
- return Required(*result)
-
-
-def parse_expr(tokens, options):
- """expr ::= seq ( '|' seq )* ;"""
- seq = parse_seq(tokens, options)
- if tokens.current() != '|':
- return seq
- result = [Required(*seq)] if len(seq) > 1 else seq
- while tokens.current() == '|':
- tokens.move()
- seq = parse_seq(tokens, options)
- result += [Required(*seq)] if len(seq) > 1 else seq
- return [Either(*result)] if len(result) > 1 else result
-
-
-def parse_seq(tokens, options):
- """seq ::= ( atom [ '...' ] )* ;"""
- result = []
- while tokens.current() not in [None, ']', ')', '|']:
- atom = parse_atom(tokens, options)
- if tokens.current() == '...':
- atom = [OneOrMore(*atom)]
- tokens.move()
- result += atom
- return result
-
-
-def parse_atom(tokens, options):
- """atom ::= '(' expr ')' | '[' expr ']' | 'options'
- | long | shorts | argument | command ;
- """
- token = tokens.current()
- result = []
- if token in '([':
- tokens.move()
- matching, pattern = {'(': [')', Required], '[': [']', Optional]}[token]
- result = pattern(*parse_expr(tokens, options))
- if tokens.move() != matching:
- raise tokens.error("unmatched '%s'" % token)
- return [result]
- elif token == 'options':
- tokens.move()
- return [AnyOptions()]
- elif token.startswith('--') and token != '--':
- return parse_long(tokens, options)
- elif token.startswith('-') and token not in ('-', '--'):
- return parse_shorts(tokens, options)
- elif token.startswith('<') and token.endswith('>') or token.isupper():
- return [Argument(tokens.move())]
- else:
- return [Command(tokens.move())]
-
-
-def parse_argv(tokens, options, options_first=False):
- """Parse command-line argument vector.
-
- If options_first:
- argv ::= [ long | shorts ]* [ argument ]* [ '--' [ argument ]* ] ;
- else:
- argv ::= [ long | shorts | argument ]* [ '--' [ argument ]* ] ;
-
- """
- parsed = []
- while tokens.current() is not None:
- if tokens.current() == '--':
- return parsed + [Argument(None, v) for v in tokens]
- elif tokens.current().startswith('--'):
- parsed += parse_long(tokens, options)
- elif tokens.current().startswith('-') and tokens.current() != '-':
- parsed += parse_shorts(tokens, options)
- elif options_first:
- return parsed + [Argument(None, v) for v in tokens]
- else:
- parsed.append(Argument(None, tokens.move()))
- return parsed
-
-
-def parse_defaults(doc):
- # in python < 2.7 you can't pass flags=re.MULTILINE
- split = re.split('\n *(<\S+?>|-\S+?)', doc)[1:]
- split = [s1 + s2 for s1, s2 in zip(split[::2], split[1::2])]
- options = [Option.parse(s) for s in split if s.startswith('-')]
- #arguments = [Argument.parse(s) for s in split if s.startswith('<')]
- #return options, arguments
- return options
-
-
-def printable_usage(doc):
- # in python < 2.7 you can't pass flags=re.IGNORECASE
- usage_split = re.split(r'([Uu][Ss][Aa][Gg][Ee]:)', doc)
- if len(usage_split) < 3:
- raise DocoptLanguageError('"usage:" (case-insensitive) not found.')
- if len(usage_split) > 3:
- raise DocoptLanguageError('More than one "usage:" (case-insensitive).')
- return re.split(r'\n\s*\n', ''.join(usage_split[1:]))[0].strip()
-
-
-def formal_usage(printable_usage):
- pu = printable_usage.split()[1:] # split and drop "usage:"
- return '( ' + ' '.join(') | (' if s == pu[0] else s for s in pu[1:]) + ' )'
-
-
-def extras(help, version, options, doc):
- if help and any((o.name in ('-h', '--help')) and o.value for o in options):
- print(doc.strip("\n"))
- sys.exit()
- if version and any(o.name == '--version' and o.value for o in options):
- print(version)
- sys.exit()
-
-
-class Dict(dict):
- def __repr__(self):
- return '{%s}' % ',\n '.join('%r: %r' % i for i in sorted(self.items()))
-
-
-def docopt(doc, argv=None, help=True, version=None, options_first=False):
- """Parse `argv` based on command-line interface described in `doc`.
-
- `docopt` creates your command-line interface based on its
- description that you pass as `doc`. Such description can contain
- --options, <positional-argument>, commands, which could be
- [optional], (required), (mutually | exclusive) or repeated...
-
- Parameters
- ----------
- doc : str
- Description of your command-line interface.
- argv : list of str, optional
- Argument vector to be parsed. sys.argv[1:] is used if not
- provided.
- help : bool (default: True)
- Set to False to disable automatic help on -h or --help
- options.
- version : any object
- If passed, the object will be printed if --version is in
- `argv`.
- options_first : bool (default: False)
- Set to True to require options preceed positional arguments,
- i.e. to forbid options and positional arguments intermix.
-
- Returns
- -------
- args : dict
- A dictionary, where keys are names of command-line elements
- such as e.g. "--verbose" and "<path>", and values are the
- parsed values of those elements.
-
- Example
- -------
- >>> from docopt import docopt
- >>> doc = '''
- Usage:
- my_program tcp <host> <port> [--timeout=<seconds>]
- my_program serial <port> [--baud=<n>] [--timeout=<seconds>]
- my_program (-h | --help | --version)
-
- Options:
- -h, --help Show this screen and exit.
- --baud=<n> Baudrate [default: 9600]
- '''
- >>> argv = ['tcp', '127.0.0.1', '80', '--timeout', '30']
- >>> docopt(doc, argv)
- {'--baud': '9600',
- '--help': False,
- '--timeout': '30',
- '--version': False,
- '<host>': '127.0.0.1',
- '<port>': '80',
- 'serial': False,
- 'tcp': True}
-
- See also
- --------
- * For video introduction see http://docopt.org
- * Full documentation is available in README.rst as well as online
- at https://github.com/docopt/docopt#readme
-
- """
- if argv is None:
- argv = sys.argv[1:]
- DocoptExit.usage = printable_usage(doc)
- options = parse_defaults(doc)
- pattern = parse_pattern(formal_usage(DocoptExit.usage), options)
- # [default] syntax for argument is disabled
- #for a in pattern.flat(Argument):
- # same_name = [d for d in arguments if d.name == a.name]
- # if same_name:
- # a.value = same_name[0].value
- argv = parse_argv(TokenStream(argv, DocoptExit), list(options),
- options_first)
- pattern_options = set(pattern.flat(Option))
- for ao in pattern.flat(AnyOptions):
- doc_options = parse_defaults(doc)
- ao.children = list(set(doc_options) - pattern_options)
- #if any_options:
- # ao.children += [Option(o.short, o.long, o.argcount)
- # for o in argv if type(o) is Option]
- extras(help, version, argv, doc)
- matched, left, collected = pattern.fix().match(argv)
- if matched and left == []: # better error message if left?
- return Dict((a.name, a.value) for a in (pattern.flat() + collected))
- raise DocoptExit()
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/easy_install.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/easy_install.py b/env2/lib/python2.7/site-packages/easy_install.py
deleted file mode 100644
index d87e984..0000000
--- a/env2/lib/python2.7/site-packages/easy_install.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""Run the EasyInstall command"""
-
-if __name__ == '__main__':
- from setuptools.command.easy_install import main
- main()
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum/LICENSE
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum/LICENSE b/env2/lib/python2.7/site-packages/enum/LICENSE
deleted file mode 100644
index 9003b88..0000000
--- a/env2/lib/python2.7/site-packages/enum/LICENSE
+++ /dev/null
@@ -1,32 +0,0 @@
-Copyright (c) 2013, Ethan Furman.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
- Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
- Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials
- provided with the distribution.
-
- Neither the name Ethan Furman nor the names of any
- contributors may be used to endorse or promote products
- derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum/README
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum/README b/env2/lib/python2.7/site-packages/enum/README
deleted file mode 100644
index aa2333d..0000000
--- a/env2/lib/python2.7/site-packages/enum/README
+++ /dev/null
@@ -1,3 +0,0 @@
-enum34 is the new Python stdlib enum module available in Python 3.4
-backported for previous versions of Python from 2.4 to 3.3.
-tested on 2.6, 2.7, and 3.3+
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum/__init__.py
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum/__init__.py b/env2/lib/python2.7/site-packages/enum/__init__.py
deleted file mode 100644
index d6ffb3a..0000000
--- a/env2/lib/python2.7/site-packages/enum/__init__.py
+++ /dev/null
@@ -1,837 +0,0 @@
-"""Python Enumerations"""
-
-import sys as _sys
-
-__all__ = ['Enum', 'IntEnum', 'unique']
-
-version = 1, 1, 6
-
-pyver = float('%s.%s' % _sys.version_info[:2])
-
-try:
- any
-except NameError:
- def any(iterable):
- for element in iterable:
- if element:
- return True
- return False
-
-try:
- from collections import OrderedDict
-except ImportError:
- OrderedDict = None
-
-try:
- basestring
-except NameError:
- # In Python 2 basestring is the ancestor of both str and unicode
- # in Python 3 it's just str, but was missing in 3.1
- basestring = str
-
-try:
- unicode
-except NameError:
- # In Python 3 unicode no longer exists (it's just str)
- unicode = str
-
-class _RouteClassAttributeToGetattr(object):
- """Route attribute access on a class to __getattr__.
-
- This is a descriptor, used to define attributes that act differently when
- accessed through an instance and through a class. Instance access remains
- normal, but access to an attribute through a class will be routed to the
- class's __getattr__ method; this is done by raising AttributeError.
-
- """
- def __init__(self, fget=None):
- self.fget = fget
-
- def __get__(self, instance, ownerclass=None):
- if instance is None:
- raise AttributeError()
- return self.fget(instance)
-
- def __set__(self, instance, value):
- raise AttributeError("can't set attribute")
-
- def __delete__(self, instance):
- raise AttributeError("can't delete attribute")
-
-
-def _is_descriptor(obj):
- """Returns True if obj is a descriptor, False otherwise."""
- return (
- hasattr(obj, '__get__') or
- hasattr(obj, '__set__') or
- hasattr(obj, '__delete__'))
-
-
-def _is_dunder(name):
- """Returns True if a __dunder__ name, False otherwise."""
- return (name[:2] == name[-2:] == '__' and
- name[2:3] != '_' and
- name[-3:-2] != '_' and
- len(name) > 4)
-
-
-def _is_sunder(name):
- """Returns True if a _sunder_ name, False otherwise."""
- return (name[0] == name[-1] == '_' and
- name[1:2] != '_' and
- name[-2:-1] != '_' and
- len(name) > 2)
-
-
-def _make_class_unpicklable(cls):
- """Make the given class un-picklable."""
- def _break_on_call_reduce(self, protocol=None):
- raise TypeError('%r cannot be pickled' % self)
- cls.__reduce_ex__ = _break_on_call_reduce
- cls.__module__ = '<unknown>'
-
-
-class _EnumDict(dict):
- """Track enum member order and ensure member names are not reused.
-
- EnumMeta will use the names found in self._member_names as the
- enumeration member names.
-
- """
- def __init__(self):
- super(_EnumDict, self).__init__()
- self._member_names = []
-
- def __setitem__(self, key, value):
- """Changes anything not dundered or not a descriptor.
-
- If a descriptor is added with the same name as an enum member, the name
- is removed from _member_names (this may leave a hole in the numerical
- sequence of values).
-
- If an enum member name is used twice, an error is raised; duplicate
- values are not checked for.
-
- Single underscore (sunder) names are reserved.
-
- Note: in 3.x __order__ is simply discarded as a not necessary piece
- leftover from 2.x
-
- """
- if pyver >= 3.0 and key in ('_order_', '__order__'):
- return
- elif key == '__order__':
- key = '_order_'
- if _is_sunder(key):
- if key != '_order_':
- raise ValueError('_names_ are reserved for future Enum use')
- elif _is_dunder(key):
- pass
- elif key in self._member_names:
- # descriptor overwriting an enum?
- raise TypeError('Attempted to reuse key: %r' % key)
- elif not _is_descriptor(value):
- if key in self:
- # enum overwriting a descriptor?
- raise TypeError('Key already defined as: %r' % self[key])
- self._member_names.append(key)
- super(_EnumDict, self).__setitem__(key, value)
-
-
-# Dummy value for Enum as EnumMeta explicity checks for it, but of course until
-# EnumMeta finishes running the first time the Enum class doesn't exist. This
-# is also why there are checks in EnumMeta like `if Enum is not None`
-Enum = None
-
-
-class EnumMeta(type):
- """Metaclass for Enum"""
- @classmethod
- def __prepare__(metacls, cls, bases):
- return _EnumDict()
-
- def __new__(metacls, cls, bases, classdict):
- # an Enum class is final once enumeration items have been defined; it
- # cannot be mixed with other types (int, float, etc.) if it has an
- # inherited __new__ unless a new __new__ is defined (or the resulting
- # class will fail).
- if type(classdict) is dict:
- original_dict = classdict
- classdict = _EnumDict()
- for k, v in original_dict.items():
- classdict[k] = v
-
- member_type, first_enum = metacls._get_mixins_(bases)
- __new__, save_new, use_args = metacls._find_new_(classdict, member_type,
- first_enum)
- # save enum items into separate mapping so they don't get baked into
- # the new class
- members = dict((k, classdict[k]) for k in classdict._member_names)
- for name in classdict._member_names:
- del classdict[name]
-
- # py2 support for definition order
- _order_ = classdict.get('_order_')
- if _order_ is None:
- if pyver < 3.0:
- try:
- _order_ = [name for (name, value) in sorted(members.items(), key=lambda item: item[1])]
- except TypeError:
- _order_ = [name for name in sorted(members.keys())]
- else:
- _order_ = classdict._member_names
- else:
- del classdict['_order_']
- if pyver < 3.0:
- _order_ = _order_.replace(',', ' ').split()
- aliases = [name for name in members if name not in _order_]
- _order_ += aliases
-
- # check for illegal enum names (any others?)
- invalid_names = set(members) & set(['mro'])
- if invalid_names:
- raise ValueError('Invalid enum member name(s): %s' % (
- ', '.join(invalid_names), ))
-
- # save attributes from super classes so we know if we can take
- # the shortcut of storing members in the class dict
- base_attributes = set([a for b in bases for a in b.__dict__])
- # create our new Enum type
- enum_class = super(EnumMeta, metacls).__new__(metacls, cls, bases, classdict)
- enum_class._member_names_ = [] # names in random order
- if OrderedDict is not None:
- enum_class._member_map_ = OrderedDict()
- else:
- enum_class._member_map_ = {} # name->value map
- enum_class._member_type_ = member_type
-
- # Reverse value->name map for hashable values.
- enum_class._value2member_map_ = {}
-
- # instantiate them, checking for duplicates as we go
- # we instantiate first instead of checking for duplicates first in case
- # a custom __new__ is doing something funky with the values -- such as
- # auto-numbering ;)
- if __new__ is None:
- __new__ = enum_class.__new__
- for member_name in _order_:
- value = members[member_name]
- if not isinstance(value, tuple):
- args = (value, )
- else:
- args = value
- if member_type is tuple: # special case for tuple enums
- args = (args, ) # wrap it one more time
- if not use_args or not args:
- enum_member = __new__(enum_class)
- if not hasattr(enum_member, '_value_'):
- enum_member._value_ = value
- else:
- enum_member = __new__(enum_class, *args)
- if not hasattr(enum_member, '_value_'):
- enum_member._value_ = member_type(*args)
- value = enum_member._value_
- enum_member._name_ = member_name
- enum_member.__objclass__ = enum_class
- enum_member.__init__(*args)
- # If another member with the same value was already defined, the
- # new member becomes an alias to the existing one.
- for name, canonical_member in enum_class._member_map_.items():
- if canonical_member.value == enum_member._value_:
- enum_member = canonical_member
- break
- else:
- # Aliases don't appear in member names (only in __members__).
- enum_class._member_names_.append(member_name)
- # performance boost for any member that would not shadow
- # a DynamicClassAttribute (aka _RouteClassAttributeToGetattr)
- if member_name not in base_attributes:
- setattr(enum_class, member_name, enum_member)
- # now add to _member_map_
- enum_class._member_map_[member_name] = enum_member
- try:
- # This may fail if value is not hashable. We can't add the value
- # to the map, and by-value lookups for this value will be
- # linear.
- enum_class._value2member_map_[value] = enum_member
- except TypeError:
- pass
-
-
- # If a custom type is mixed into the Enum, and it does not know how
- # to pickle itself, pickle.dumps will succeed but pickle.loads will
- # fail. Rather than have the error show up later and possibly far
- # from the source, sabotage the pickle protocol for this class so
- # that pickle.dumps also fails.
- #
- # However, if the new class implements its own __reduce_ex__, do not
- # sabotage -- it's on them to make sure it works correctly. We use
- # __reduce_ex__ instead of any of the others as it is preferred by
- # pickle over __reduce__, and it handles all pickle protocols.
- unpicklable = False
- if '__reduce_ex__' not in classdict:
- if member_type is not object:
- methods = ('__getnewargs_ex__', '__getnewargs__',
- '__reduce_ex__', '__reduce__')
- if not any(m in member_type.__dict__ for m in methods):
- _make_class_unpicklable(enum_class)
- unpicklable = True
-
-
- # double check that repr and friends are not the mixin's or various
- # things break (such as pickle)
- for name in ('__repr__', '__str__', '__format__', '__reduce_ex__'):
- class_method = getattr(enum_class, name)
- obj_method = getattr(member_type, name, None)
- enum_method = getattr(first_enum, name, None)
- if name not in classdict and class_method is not enum_method:
- if name == '__reduce_ex__' and unpicklable:
- continue
- setattr(enum_class, name, enum_method)
-
- # method resolution and int's are not playing nice
- # Python's less than 2.6 use __cmp__
-
- if pyver < 2.6:
-
- if issubclass(enum_class, int):
- setattr(enum_class, '__cmp__', getattr(int, '__cmp__'))
-
- elif pyver < 3.0:
-
- if issubclass(enum_class, int):
- for method in (
- '__le__',
- '__lt__',
- '__gt__',
- '__ge__',
- '__eq__',
- '__ne__',
- '__hash__',
- ):
- setattr(enum_class, method, getattr(int, method))
-
- # replace any other __new__ with our own (as long as Enum is not None,
- # anyway) -- again, this is to support pickle
- if Enum is not None:
- # if the user defined their own __new__, save it before it gets
- # clobbered in case they subclass later
- if save_new:
- setattr(enum_class, '__member_new__', enum_class.__dict__['__new__'])
- setattr(enum_class, '__new__', Enum.__dict__['__new__'])
- return enum_class
-
- def __bool__(cls):
- """
- classes/types should always be True.
- """
- return True
-
- def __call__(cls, value, names=None, module=None, type=None, start=1):
- """Either returns an existing member, or creates a new enum class.
-
- This method is used both when an enum class is given a value to match
- to an enumeration member (i.e. Color(3)) and for the functional API
- (i.e. Color = Enum('Color', names='red green blue')).
-
- When used for the functional API: `module`, if set, will be stored in
- the new class' __module__ attribute; `type`, if set, will be mixed in
- as the first base class.
-
- Note: if `module` is not set this routine will attempt to discover the
- calling module by walking the frame stack; if this is unsuccessful
- the resulting class will not be pickleable.
-
- """
- if names is None: # simple value lookup
- return cls.__new__(cls, value)
- # otherwise, functional API: we're creating a new Enum type
- return cls._create_(value, names, module=module, type=type, start=start)
-
- def __contains__(cls, member):
- return isinstance(member, cls) and member.name in cls._member_map_
-
- def __delattr__(cls, attr):
- # nicer error message when someone tries to delete an attribute
- # (see issue19025).
- if attr in cls._member_map_:
- raise AttributeError(
- "%s: cannot delete Enum member." % cls.__name__)
- super(EnumMeta, cls).__delattr__(attr)
-
- def __dir__(self):
- return (['__class__', '__doc__', '__members__', '__module__'] +
- self._member_names_)
-
- @property
- def __members__(cls):
- """Returns a mapping of member name->value.
-
- This mapping lists all enum members, including aliases. Note that this
- is a copy of the internal mapping.
-
- """
- return cls._member_map_.copy()
-
- def __getattr__(cls, name):
- """Return the enum member matching `name`
-
- We use __getattr__ instead of descriptors or inserting into the enum
- class' __dict__ in order to support `name` and `value` being both
- properties for enum members (which live in the class' __dict__) and
- enum members themselves.
-
- """
- if _is_dunder(name):
- raise AttributeError(name)
- try:
- return cls._member_map_[name]
- except KeyError:
- raise AttributeError(name)
-
- def __getitem__(cls, name):
- return cls._member_map_[name]
-
- def __iter__(cls):
- return (cls._member_map_[name] for name in cls._member_names_)
-
- def __reversed__(cls):
- return (cls._member_map_[name] for name in reversed(cls._member_names_))
-
- def __len__(cls):
- return len(cls._member_names_)
-
- __nonzero__ = __bool__
-
- def __repr__(cls):
- return "<enum %r>" % cls.__name__
-
- def __setattr__(cls, name, value):
- """Block attempts to reassign Enum members.
-
- A simple assignment to the class namespace only changes one of the
- several possible ways to get an Enum member from the Enum class,
- resulting in an inconsistent Enumeration.
-
- """
- member_map = cls.__dict__.get('_member_map_', {})
- if name in member_map:
- raise AttributeError('Cannot reassign members.')
- super(EnumMeta, cls).__setattr__(name, value)
-
- def _create_(cls, class_name, names=None, module=None, type=None, start=1):
- """Convenience method to create a new Enum class.
-
- `names` can be:
-
- * A string containing member names, separated either with spaces or
- commas. Values are auto-numbered from 1.
- * An iterable of member names. Values are auto-numbered from 1.
- * An iterable of (member name, value) pairs.
- * A mapping of member name -> value.
-
- """
- if pyver < 3.0:
- # if class_name is unicode, attempt a conversion to ASCII
- if isinstance(class_name, unicode):
- try:
- class_name = class_name.encode('ascii')
- except UnicodeEncodeError:
- raise TypeError('%r is not representable in ASCII' % class_name)
- metacls = cls.__class__
- if type is None:
- bases = (cls, )
- else:
- bases = (type, cls)
- classdict = metacls.__prepare__(class_name, bases)
- _order_ = []
-
- # special processing needed for names?
- if isinstance(names, basestring):
- names = names.replace(',', ' ').split()
- if isinstance(names, (tuple, list)) and isinstance(names[0], basestring):
- names = [(e, i+start) for (i, e) in enumerate(names)]
-
- # Here, names is either an iterable of (name, value) or a mapping.
- item = None # in case names is empty
- for item in names:
- if isinstance(item, basestring):
- member_name, member_value = item, names[item]
- else:
- member_name, member_value = item
- classdict[member_name] = member_value
- _order_.append(member_name)
- # only set _order_ in classdict if name/value was not from a mapping
- if not isinstance(item, basestring):
- classdict['_order_'] = ' '.join(_order_)
- enum_class = metacls.__new__(metacls, class_name, bases, classdict)
-
- # TODO: replace the frame hack if a blessed way to know the calling
- # module is ever developed
- if module is None:
- try:
- module = _sys._getframe(2).f_globals['__name__']
- except (AttributeError, ValueError):
- pass
- if module is None:
- _make_class_unpicklable(enum_class)
- else:
- enum_class.__module__ = module
-
- return enum_class
-
- @staticmethod
- def _get_mixins_(bases):
- """Returns the type for creating enum members, and the first inherited
- enum class.
-
- bases: the tuple of bases that was given to __new__
-
- """
- if not bases or Enum is None:
- return object, Enum
-
-
- # double check that we are not subclassing a class with existing
- # enumeration members; while we're at it, see if any other data
- # type has been mixed in so we can use the correct __new__
- member_type = first_enum = None
- for base in bases:
- if (base is not Enum and
- issubclass(base, Enum) and
- base._member_names_):
- raise TypeError("Cannot extend enumerations")
- # base is now the last base in bases
- if not issubclass(base, Enum):
- raise TypeError("new enumerations must be created as "
- "`ClassName([mixin_type,] enum_type)`")
-
- # get correct mix-in type (either mix-in type of Enum subclass, or
- # first base if last base is Enum)
- if not issubclass(bases[0], Enum):
- member_type = bases[0] # first data type
- first_enum = bases[-1] # enum type
- else:
- for base in bases[0].__mro__:
- # most common: (IntEnum, int, Enum, object)
- # possible: (<Enum 'AutoIntEnum'>, <Enum 'IntEnum'>,
- # <class 'int'>, <Enum 'Enum'>,
- # <class 'object'>)
- if issubclass(base, Enum):
- if first_enum is None:
- first_enum = base
- else:
- if member_type is None:
- member_type = base
-
- return member_type, first_enum
-
- if pyver < 3.0:
- @staticmethod
- def _find_new_(classdict, member_type, first_enum):
- """Returns the __new__ to be used for creating the enum members.
-
- classdict: the class dictionary given to __new__
- member_type: the data type whose __new__ will be used by default
- first_enum: enumeration to check for an overriding __new__
-
- """
- # now find the correct __new__, checking to see of one was defined
- # by the user; also check earlier enum classes in case a __new__ was
- # saved as __member_new__
- __new__ = classdict.get('__new__', None)
- if __new__:
- return None, True, True # __new__, save_new, use_args
-
- N__new__ = getattr(None, '__new__')
- O__new__ = getattr(object, '__new__')
- if Enum is None:
- E__new__ = N__new__
- else:
- E__new__ = Enum.__dict__['__new__']
- # check all possibles for __member_new__ before falling back to
- # __new__
- for method in ('__member_new__', '__new__'):
- for possible in (member_type, first_enum):
- try:
- target = possible.__dict__[method]
- except (AttributeError, KeyError):
- target = getattr(possible, method, None)
- if target not in [
- None,
- N__new__,
- O__new__,
- E__new__,
- ]:
- if method == '__member_new__':
- classdict['__new__'] = target
- return None, False, True
- if isinstance(target, staticmethod):
- target = target.__get__(member_type)
- __new__ = target
- break
- if __new__ is not None:
- break
- else:
- __new__ = object.__new__
-
- # if a non-object.__new__ is used then whatever value/tuple was
- # assigned to the enum member name will be passed to __new__ and to the
- # new enum member's __init__
- if __new__ is object.__new__:
- use_args = False
- else:
- use_args = True
-
- return __new__, False, use_args
- else:
- @staticmethod
- def _find_new_(classdict, member_type, first_enum):
- """Returns the __new__ to be used for creating the enum members.
-
- classdict: the class dictionary given to __new__
- member_type: the data type whose __new__ will be used by default
- first_enum: enumeration to check for an overriding __new__
-
- """
- # now find the correct __new__, checking to see of one was defined
- # by the user; also check earlier enum classes in case a __new__ was
- # saved as __member_new__
- __new__ = classdict.get('__new__', None)
-
- # should __new__ be saved as __member_new__ later?
- save_new = __new__ is not None
-
- if __new__ is None:
- # check all possibles for __member_new__ before falling back to
- # __new__
- for method in ('__member_new__', '__new__'):
- for possible in (member_type, first_enum):
- target = getattr(possible, method, None)
- if target not in (
- None,
- None.__new__,
- object.__new__,
- Enum.__new__,
- ):
- __new__ = target
- break
- if __new__ is not None:
- break
- else:
- __new__ = object.__new__
-
- # if a non-object.__new__ is used then whatever value/tuple was
- # assigned to the enum member name will be passed to __new__ and to the
- # new enum member's __init__
- if __new__ is object.__new__:
- use_args = False
- else:
- use_args = True
-
- return __new__, save_new, use_args
-
-
-########################################################
-# In order to support Python 2 and 3 with a single
-# codebase we have to create the Enum methods separately
-# and then use the `type(name, bases, dict)` method to
-# create the class.
-########################################################
-temp_enum_dict = {}
-temp_enum_dict['__doc__'] = "Generic enumeration.\n\n Derive from this class to define new enumerations.\n\n"
-
-def __new__(cls, value):
- # all enum instances are actually created during class construction
- # without calling this method; this method is called by the metaclass'
- # __call__ (i.e. Color(3) ), and by pickle
- if type(value) is cls:
- # For lookups like Color(Color.red)
- value = value.value
- #return value
- # by-value search for a matching enum member
- # see if it's in the reverse mapping (for hashable values)
- try:
- if value in cls._value2member_map_:
- return cls._value2member_map_[value]
- except TypeError:
- # not there, now do long search -- O(n) behavior
- for member in cls._member_map_.values():
- if member.value == value:
- return member
- raise ValueError("%s is not a valid %s" % (value, cls.__name__))
-temp_enum_dict['__new__'] = __new__
-del __new__
-
-def __repr__(self):
- return "<%s.%s: %r>" % (
- self.__class__.__name__, self._name_, self._value_)
-temp_enum_dict['__repr__'] = __repr__
-del __repr__
-
-def __str__(self):
- return "%s.%s" % (self.__class__.__name__, self._name_)
-temp_enum_dict['__str__'] = __str__
-del __str__
-
-if pyver >= 3.0:
- def __dir__(self):
- added_behavior = [
- m
- for cls in self.__class__.mro()
- for m in cls.__dict__
- if m[0] != '_' and m not in self._member_map_
- ]
- return (['__class__', '__doc__', '__module__', ] + added_behavior)
- temp_enum_dict['__dir__'] = __dir__
- del __dir__
-
-def __format__(self, format_spec):
- # mixed-in Enums should use the mixed-in type's __format__, otherwise
- # we can get strange results with the Enum name showing up instead of
- # the value
-
- # pure Enum branch
- if self._member_type_ is object:
- cls = str
- val = str(self)
- # mix-in branch
- else:
- cls = self._member_type_
- val = self.value
- return cls.__format__(val, format_spec)
-temp_enum_dict['__format__'] = __format__
-del __format__
-
-
-####################################
-# Python's less than 2.6 use __cmp__
-
-if pyver < 2.6:
-
- def __cmp__(self, other):
- if type(other) is self.__class__:
- if self is other:
- return 0
- return -1
- return NotImplemented
- raise TypeError("unorderable types: %s() and %s()" % (self.__class__.__name__, other.__class__.__name__))
- temp_enum_dict['__cmp__'] = __cmp__
- del __cmp__
-
-else:
-
- def __le__(self, other):
- raise TypeError("unorderable types: %s() <= %s()" % (self.__class__.__name__, other.__class__.__name__))
- temp_enum_dict['__le__'] = __le__
- del __le__
-
- def __lt__(self, other):
- raise TypeError("unorderable types: %s() < %s()" % (self.__class__.__name__, other.__class__.__name__))
- temp_enum_dict['__lt__'] = __lt__
- del __lt__
-
- def __ge__(self, other):
- raise TypeError("unorderable types: %s() >= %s()" % (self.__class__.__name__, other.__class__.__name__))
- temp_enum_dict['__ge__'] = __ge__
- del __ge__
-
- def __gt__(self, other):
- raise TypeError("unorderable types: %s() > %s()" % (self.__class__.__name__, other.__class__.__name__))
- temp_enum_dict['__gt__'] = __gt__
- del __gt__
-
-
-def __eq__(self, other):
- if type(other) is self.__class__:
- return self is other
- return NotImplemented
-temp_enum_dict['__eq__'] = __eq__
-del __eq__
-
-def __ne__(self, other):
- if type(other) is self.__class__:
- return self is not other
- return NotImplemented
-temp_enum_dict['__ne__'] = __ne__
-del __ne__
-
-def __hash__(self):
- return hash(self._name_)
-temp_enum_dict['__hash__'] = __hash__
-del __hash__
-
-def __reduce_ex__(self, proto):
- return self.__class__, (self._value_, )
-temp_enum_dict['__reduce_ex__'] = __reduce_ex__
-del __reduce_ex__
-
-# _RouteClassAttributeToGetattr is used to provide access to the `name`
-# and `value` properties of enum members while keeping some measure of
-# protection from modification, while still allowing for an enumeration
-# to have members named `name` and `value`. This works because enumeration
-# members are not set directly on the enum class -- __getattr__ is
-# used to look them up.
-
-@_RouteClassAttributeToGetattr
-def name(self):
- return self._name_
-temp_enum_dict['name'] = name
-del name
-
-@_RouteClassAttributeToGetattr
-def value(self):
- return self._value_
-temp_enum_dict['value'] = value
-del value
-
-@classmethod
-def _convert(cls, name, module, filter, source=None):
- """
- Create a new Enum subclass that replaces a collection of global constants
- """
- # convert all constants from source (or module) that pass filter() to
- # a new Enum called name, and export the enum and its members back to
- # module;
- # also, replace the __reduce_ex__ method so unpickling works in
- # previous Python versions
- module_globals = vars(_sys.modules[module])
- if source:
- source = vars(source)
- else:
- source = module_globals
- members = dict((name, value) for name, value in source.items() if filter(name))
- cls = cls(name, members, module=module)
- cls.__reduce_ex__ = _reduce_ex_by_name
- module_globals.update(cls.__members__)
- module_globals[name] = cls
- return cls
-temp_enum_dict['_convert'] = _convert
-del _convert
-
-Enum = EnumMeta('Enum', (object, ), temp_enum_dict)
-del temp_enum_dict
-
-# Enum has now been created
-###########################
-
-class IntEnum(int, Enum):
- """Enum where members are also (and must be) ints"""
-
-def _reduce_ex_by_name(self, proto):
- return self.name
-
-def unique(enumeration):
- """Class decorator that ensures only unique members exist in an enumeration."""
- duplicates = []
- for name, member in enumeration.__members__.items():
- if name != member.name:
- duplicates.append((name, member.name))
- if duplicates:
- duplicate_names = ', '.join(
- ["%s -> %s" % (alias, name) for (alias, name) in duplicates]
- )
- raise ValueError('duplicate names found in %r: %s' %
- (enumeration, duplicate_names)
- )
- return enumeration
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/DESCRIPTION.rst
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/DESCRIPTION.rst b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/DESCRIPTION.rst
deleted file mode 100644
index ff89b8d..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/DESCRIPTION.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-enum --- support for enumerations
-========================================
-
-An enumeration is a set of symbolic names (members) bound to unique, constant
-values. Within an enumeration, the members can be compared by identity, and
-the enumeration itself can be iterated over.
-
- from enum import Enum
-
- class Fruit(Enum):
- apple = 1
- banana = 2
- orange = 3
-
- list(Fruit)
- # [<Fruit.apple: 1>, <Fruit.banana: 2>, <Fruit.orange: 3>]
-
- len(Fruit)
- # 3
-
- Fruit.banana
- # <Fruit.banana: 2>
-
- Fruit['banana']
- # <Fruit.banana: 2>
-
- Fruit(2)
- # <Fruit.banana: 2>
-
- Fruit.banana is Fruit['banana'] is Fruit(2)
- # True
-
- Fruit.banana.name
- # 'banana'
-
- Fruit.banana.value
- # 2
-
-Repository and Issue Tracker at https://bitbucket.org/stoneleaf/enum34.
-
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/INSTALLER
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/INSTALLER b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/INSTALLER
deleted file mode 100644
index a1b589e..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/INSTALLER
+++ /dev/null
@@ -1 +0,0 @@
-pip
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/METADATA
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/METADATA b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/METADATA
deleted file mode 100644
index 49ee3e5..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/METADATA
+++ /dev/null
@@ -1,64 +0,0 @@
-Metadata-Version: 2.0
-Name: enum34
-Version: 1.1.6
-Summary: Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4
-Home-page: https://bitbucket.org/stoneleaf/enum34
-Author: Ethan Furman
-Author-email: ethan@stoneleaf.us
-License: BSD License
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Programming Language :: Python
-Classifier: Topic :: Software Development
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Provides: enum
-
-enum --- support for enumerations
-========================================
-
-An enumeration is a set of symbolic names (members) bound to unique, constant
-values. Within an enumeration, the members can be compared by identity, and
-the enumeration itself can be iterated over.
-
- from enum import Enum
-
- class Fruit(Enum):
- apple = 1
- banana = 2
- orange = 3
-
- list(Fruit)
- # [<Fruit.apple: 1>, <Fruit.banana: 2>, <Fruit.orange: 3>]
-
- len(Fruit)
- # 3
-
- Fruit.banana
- # <Fruit.banana: 2>
-
- Fruit['banana']
- # <Fruit.banana: 2>
-
- Fruit(2)
- # <Fruit.banana: 2>
-
- Fruit.banana is Fruit['banana'] is Fruit(2)
- # True
-
- Fruit.banana.name
- # 'banana'
-
- Fruit.banana.value
- # 2
-
-Repository and Issue Tracker at https://bitbucket.org/stoneleaf/enum34.
-
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/RECORD
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/RECORD b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/RECORD
deleted file mode 100644
index 7be1808..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/RECORD
+++ /dev/null
@@ -1,11 +0,0 @@
-enum/LICENSE,sha256=iOxqbI6vo7l1fnRXg5OL7z9eTV48drHbV2qjq1IOXh0,1508
-enum/README,sha256=fyStyG6c3wxR2bHyZhLPNtc_ASDxGw-l8G6LzVxmkig,157
-enum/__init__.py,sha256=JSdYSXeZ1QSp67gjfI24quiePPtrlNXhXvm-pav8nuQ,31054
-enum34-1.1.6.dist-info/DESCRIPTION.rst,sha256=d1LpTdx9M07jJN0AmT-p6AAwLrX2guxOfmetcp_jljY,817
-enum34-1.1.6.dist-info/METADATA,sha256=p3ABlAtPlmU7-55UMHiwAd8o-wwS4EfZMsQWNoH1klg,1689
-enum34-1.1.6.dist-info/RECORD,,
-enum34-1.1.6.dist-info/WHEEL,sha256=bee59qcPjkyXfMaxNWjl2CGotqfumWx9pC1hlVLr2mM,92
-enum34-1.1.6.dist-info/metadata.json,sha256=1su5Y0gBxpWTAdey-06LrBSQzh-B1vAixlBxx4DJMOI,972
-enum34-1.1.6.dist-info/top_level.txt,sha256=jayVFfXRwPLUdgRN9GzacnFrOtEKQaAScXIY8mwgP8g,5
-enum34-1.1.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
-enum/__init__.pyc,,
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/WHEEL
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/WHEEL b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/WHEEL
deleted file mode 100644
index 511d954..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/WHEEL
+++ /dev/null
@@ -1,5 +0,0 @@
-Wheel-Version: 1.0
-Generator: bdist_wheel (0.29.0)
-Root-Is-Purelib: true
-Tag: py2-none-any
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/metadata.json
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/metadata.json b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/metadata.json
deleted file mode 100644
index 6a1cc20..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/metadata.json
+++ /dev/null
@@ -1 +0,0 @@
-{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Topic :: Software Development", "Programming Language :: Python :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5"], "extensions": {"python.details": {"contacts": [{"email": "ethan@stoneleaf.us", "name": "Ethan Furman", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://bitbucket.org/stoneleaf/enum34"}}}, "generator": "bdist_wheel (0.29.0)", "license": "BSD License", "metadata_version": "2.0", "name": "enum34", "provides": "enum", "summary": "Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4", "version": "1.1.6"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/top_level.txt
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/top_level.txt b/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/top_level.txt
deleted file mode 100644
index e3caefb..0000000
--- a/env2/lib/python2.7/site-packages/enum34-1.1.6.dist-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-enum
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/DESCRIPTION.rst
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/DESCRIPTION.rst b/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/DESCRIPTION.rst
deleted file mode 100644
index 91ba30a..0000000
--- a/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/DESCRIPTION.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a backport of the functools standard library module from
-Python 3.2.3 for use on Python 2.7 and PyPy. It includes
-new features `lru_cache` (Least-recently-used cache decorator).
-
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/INSTALLER
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/INSTALLER b/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/INSTALLER
deleted file mode 100644
index a1b589e..0000000
--- a/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/INSTALLER
+++ /dev/null
@@ -1 +0,0 @@
-pip
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-tap/blob/6a81d1e7/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/METADATA
----------------------------------------------------------------------
diff --git a/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/METADATA b/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/METADATA
deleted file mode 100644
index 0ba432a..0000000
--- a/env2/lib/python2.7/site-packages/functools32-3.2.3_2.dist-info/METADATA
+++ /dev/null
@@ -1,14 +0,0 @@
-Metadata-Version: 2.0
-Name: functools32
-Version: 3.2.3-2
-Summary: Backport of the functools module from Python 3.2.3 for use on 2.7 and PyPy.
-Home-page: https://github.com/MiCHiLU/python-functools32
-Author: ENDOH takanao
-Author-email: djmchl@gmail.com
-License: PSF license
-Platform: UNKNOWN
-
-This is a backport of the functools standard library module from
-Python 3.2.3 for use on Python 2.7 and PyPy. It includes
-new features `lru_cache` (Least-recently-used cache decorator).
-