@@ -0,0 +1,78 @@
#!/home/raphael/Documentos/Spatial_DB/final_project/dependencies/bin/python

import sys
import getopt
import sysconfig

valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
'ldflags', 'help']

if sys.version_info >= (3, 2):
valid_opts.insert(-1, 'extension-suffix')
valid_opts.append('abiflags')
if sys.version_info >= (3, 3):
valid_opts.append('configdir')


def exit_with_usage(code=1):
sys.stderr.write("Usage: {0} [{1}]\n".format(
sys.argv[0], '|'.join('--'+opt for opt in valid_opts)))
sys.exit(code)

try:
opts, args = getopt.getopt(sys.argv[1:], '', valid_opts)
except getopt.error:
exit_with_usage()

if not opts:
exit_with_usage()

pyver = sysconfig.get_config_var('VERSION')
getvar = sysconfig.get_config_var

opt_flags = [flag for (flag, val) in opts]

if '--help' in opt_flags:
exit_with_usage(code=0)

for opt in opt_flags:
if opt == '--prefix':
print(sysconfig.get_config_var('prefix'))

elif opt == '--exec-prefix':
print(sysconfig.get_config_var('exec_prefix'))

elif opt in ('--includes', '--cflags'):
flags = ['-I' + sysconfig.get_path('include'),
'-I' + sysconfig.get_path('platinclude')]
if opt == '--cflags':
flags.extend(getvar('CFLAGS').split())
print(' '.join(flags))

elif opt in ('--libs', '--ldflags'):
abiflags = getattr(sys, 'abiflags', '')
libs = ['-lpython' + pyver + abiflags]
libs += getvar('LIBS').split()
libs += getvar('SYSLIBS').split()
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
# shared library in prefix/lib/.
if opt == '--ldflags':
if not getvar('Py_ENABLE_SHARED'):
libs.insert(0, '-L' + getvar('LIBPL'))
if not getvar('PYTHONFRAMEWORK'):
libs.extend(getvar('LINKFORSHARED').split())
print(' '.join(libs))

elif opt == '--extension-suffix':
ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
if ext_suffix is None:
ext_suffix = sysconfig.get_config_var('SO')
print(ext_suffix)

elif opt == '--abiflags':
if not getattr(sys, 'abiflags', None):
exit_with_usage()
print(sys.abiflags)

elif opt == '--configdir':
print(sysconfig.get_config_var('LIBPL'))
Binary file not shown.
@@ -0,0 +1,11 @@
#!/home/raphael/Documentos/Spatial_DB/final_project/dependencies/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from tensorflow.python.tools.saved_model_cli import main

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
@@ -0,0 +1,11 @@
#!/home/raphael/Documentos/Spatial_DB/final_project/dependencies/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from tensorboard.main import main

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
@@ -0,0 +1,11 @@
#!/home/raphael/Documentos/Spatial_DB/final_project/dependencies/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from wheel.tool import main

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,101 @@
import os
import sys
import warnings
import imp
import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib
# Important! To work on pypy, this must be a module that resides in the
# lib-python/modified-x.y.z directory

dirname = os.path.dirname

distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
warnings.warn(
"The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
else:
__path__.insert(0, distutils_path)
real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY))
# Copy the relevant attributes
try:
__revision__ = real_distutils.__revision__
except AttributeError:
pass
__version__ = real_distutils.__version__

from distutils import dist, sysconfig

try:
basestring
except NameError:
basestring = str

## patch build_ext (distutils doesn't know how to get the libs directory
## path on windows - it hardcodes the paths around the patched sys.prefix)

if sys.platform == 'win32':
from distutils.command.build_ext import build_ext as old_build_ext
class build_ext(old_build_ext):
def finalize_options (self):
if self.library_dirs is None:
self.library_dirs = []
elif isinstance(self.library_dirs, basestring):
self.library_dirs = self.library_dirs.split(os.pathsep)

self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs"))
old_build_ext.finalize_options(self)

from distutils.command import build_ext as build_ext_module
build_ext_module.build_ext = build_ext

## distutils.dist patches:

old_find_config_files = dist.Distribution.find_config_files
def find_config_files(self):
found = old_find_config_files(self)
system_distutils = os.path.join(distutils_path, 'distutils.cfg')
#if os.path.exists(system_distutils):
# found.insert(0, system_distutils)
# What to call the per-user config file
if os.name == 'posix':
user_filename = ".pydistutils.cfg"
else:
user_filename = "pydistutils.cfg"
user_filename = os.path.join(sys.prefix, user_filename)
if os.path.isfile(user_filename):
for item in list(found):
if item.endswith('pydistutils.cfg'):
found.remove(item)
found.append(user_filename)
return found
dist.Distribution.find_config_files = find_config_files

## distutils.sysconfig patches:

old_get_python_inc = sysconfig.get_python_inc
def sysconfig_get_python_inc(plat_specific=0, prefix=None):
if prefix is None:
prefix = sys.real_prefix
return old_get_python_inc(plat_specific, prefix)
sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__
sysconfig.get_python_inc = sysconfig_get_python_inc

old_get_python_lib = sysconfig.get_python_lib
def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
if standard_lib and prefix is None:
prefix = sys.real_prefix
return old_get_python_lib(plat_specific, standard_lib, prefix)
sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__
sysconfig.get_python_lib = sysconfig_get_python_lib

old_get_config_vars = sysconfig.get_config_vars
def sysconfig_get_config_vars(*args):
real_vars = old_get_config_vars(*args)
if sys.platform == 'win32':
lib_dir = os.path.join(sys.real_prefix, "libs")
if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars:
real_vars['LIBDIR'] = lib_dir # asked for all
elif isinstance(real_vars, list) and 'LIBDIR' in args:
real_vars = real_vars + [lib_dir] # asked for list
return real_vars
sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__
sysconfig.get_config_vars = sysconfig_get_config_vars
Binary file not shown.
@@ -0,0 +1,6 @@
# This is a config file local to this virtualenv installation
# You may include options that will be used by all distutils commands,
# and by easy_install. For instance:
#
# [easy_install]
# find_links = http://mylocalsite
Empty file.
@@ -0,0 +1 @@
/usr
@@ -0,0 +1,3 @@
UNKNOWN


@@ -0,0 +1 @@
pip
@@ -0,0 +1,40 @@
Metadata-Version: 2.0
Name: Keras
Version: 2.1.2
Summary: Deep Learning for Python
Home-page: https://github.com/fchollet/keras
Author: Francois Chollet
Author-email: francois.chollet@gmail.com
License: MIT
Download-URL: https://github.com/fchollet/keras/tarball/2.1.2
Description-Content-Type: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: numpy (>=1.9.1)
Requires-Dist: scipy (>=0.14)
Requires-Dist: six (>=1.9.0)
Requires-Dist: pyyaml
Provides-Extra: h5py
Requires-Dist: h5py; extra == 'h5py'
Provides-Extra: tests
Requires-Dist: pytest; extra == 'tests'
Requires-Dist: pytest-pep8; extra == 'tests'
Requires-Dist: pytest-xdist; extra == 'tests'
Requires-Dist: pytest-cov; extra == 'tests'
Requires-Dist: pandas; extra == 'tests'
Provides-Extra: visualize
Requires-Dist: pydot (>=1.2.0); extra == 'visualize'

UNKNOWN


@@ -0,0 +1,149 @@
Keras-2.1.2.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10
Keras-2.1.2.dist-info/METADATA,sha256=aW7I5vjnLVWUAclJkjcyR1fRR_4AwnW0IVCw9iJLLeQ,1386
Keras-2.1.2.dist-info/RECORD,,
Keras-2.1.2.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110
Keras-2.1.2.dist-info/metadata.json,sha256=-WAg33EXHB00z4s1abzpOtNrjEYdvpIS8TiXSu5mJqI,1341
Keras-2.1.2.dist-info/top_level.txt,sha256=ptcw_-QuGZ4ZDjMdwi_Z0clZm8QAqFdvzzFnDEOTs9o,6
keras/__init__.py,sha256=IsN-Mc5fTjIaODQZLNUGzyqRXsM1EDvBQDPBqnROg9E,605
keras/activations.py,sha256=gXjkxYHhIgFXGl6GDKnRghroauNeNccLJLjhCacuVFk,2712
keras/callbacks.py,sha256=2Pw8pMMBmr7RsDto2_NVcHRXCpl2SluttIOZJqHQZNk,40856
keras/constraints.py,sha256=sLD9Xi-nVAnQAf6tS0FRzN_CmRga5nRytAGqJDmK-h4,6052
keras/initializers.py,sha256=H0q-KlBPL2AEz79dTA9FwhOcgwZMzGtwdO8mu2OFxMU,15758
keras/losses.py,sha256=JAhg4kjLOCnb-XWnt1PkldohgPYDdr4206ajlPt7_eA,3653
keras/metrics.py,sha256=v3h67-sjDGHJUIRYxQmN15wSHmuCiKcb94h1BCw-sr4,2294
keras/models.py,sha256=c7cYLliesZXJY7iEoZIKBYM9S7oPNxLFXqpq5AqILSw,67976
keras/objectives.py,sha256=ck4Iw_cAo6AbKrOPBLBLFnSiVmICvhAbm9Ax-FTyBPM,138
keras/optimizers.py,sha256=6bc97X57vuRG5Z8SWoWgeUDAoq-nND3MhlzsfvPqCKQ,26976
keras/regularizers.py,sha256=TJ3qrfNsXBkVhIStDESz2jf4WtkJxHBBsQSqGemrHno,2034
keras/applications/__init__.py,sha256=YFwKtBspOtA9kqIcF_U3Fj_qnDV2iqYEyoLxynYbe_8,234
keras/applications/imagenet_utils.py,sha256=MTm2Do-7xsdKNGjZvKUyLvhnBXl0QTBjFZQ_0SCpoIc,9027
keras/applications/inception_resnet_v2.py,sha256=id4yT9H1GASc34Ro6IxU4Po_5SMK8iQEYxMZyzOw2lg,15784
keras/applications/inception_v3.py,sha256=p01-S4E0l0wC599Y5ih1MbPrpRafrTe2NHt8akAbpY0,14952
keras/applications/mobilenet.py,sha256=sdzC-ESFKpIe0BNK1Skm0MDZh4z1fWZhDhjm_X009dY,29180
keras/applications/resnet50.py,sha256=71rQln7fmfJbp_chJwaqHuE_qi6VUgYParXhXC4RDcM,11776
keras/applications/vgg16.py,sha256=ZHhhKFIjTaybLptQCKnmGusoYGyizsedLvtRtPQBN0o,8689
keras/applications/vgg19.py,sha256=nvBqlaAgpM6B6M9C_U0J1R1qA1BTGXaeI1X4pkrnwSk,8951
keras/applications/xception.py,sha256=UDTTnb6dDXHrHljvZWg3gC-PnjOQ5BqK46aK5dTJ9mU,12279
keras/backend/__init__.py,sha256=Kc-HhAdI07dwtbnwd-pnRWxe5LeaTV918yojzwhCykA,3021
keras/backend/cntk_backend.py,sha256=8QKd_IrZTIeMBRgdkCAOjUWReUCQOxpQN39DjEOT-pw,77485
keras/backend/common.py,sha256=BzUeIRWYMWgpr0dzZbrCYlaa56tD0Vk56UYb08inwRA,4186
keras/backend/tensorflow_backend.py,sha256=u8SOowPN1lN9Qr1yhQiPgzIWQeIZP-u6Eipme0lZzu8,124359
keras/backend/theano_backend.py,sha256=OUqHzo9BcC4JNhXCMhI_XkueMAqRb7pOK94PZP95BTI,84025
keras/datasets/__init__.py,sha256=5TieabOPRk6yBgnZ03YbuoOO5jT9YD-8HLJZRV-ZRBQ,203
keras/datasets/boston_housing.py,sha256=0lcSrW_Jf2FtTXh-BnE5icVAYv4laePXOtr74hBkvYk,1259
keras/datasets/cifar.py,sha256=3dp4Zzqo5fYcJpJfaFkhiiXJY9LZXnYo3xw7wETFCJA,808
keras/datasets/cifar10.py,sha256=io-3_1fpjHKSjmHUndVUxyIM4n49xy_ri0LNoaeYOsY,1223
keras/datasets/cifar100.py,sha256=iqgcFS30fVpbIupexj5b0cKloy2bAOkbedFlb0uC9Ow,1267
keras/datasets/fashion_mnist.py,sha256=V-trfeaOOylIImSWpjueAMSbFyCRjh4NrVpnlXecsT4,1257
keras/datasets/imdb.py,sha256=zOjJhcHUS1xSb0yU79x3pM_itCPiKtBnRCuSMIxYRFU,4334
keras/datasets/mnist.py,sha256=H22qdC6GKgi9xEw9mJ9BS17204i7LYsCHjryik2zehE,686
keras/datasets/reuters.py,sha256=Qk8ZSaRQc-WNM8xngF1lsRmghjtvqShnhfBy0kPIjzM,3841
keras/engine/__init__.py,sha256=ukuX6twIBAmKspaMcKH_MiKxbpfZNFOMu9Z7VyeeY_Q,277
keras/engine/topology.py,sha256=ySZdu7BxRW2QLarSRXkhqeS2t99aWZm4AFQjmxCR9-4,133019
keras/engine/training.py,sha256=0EPWE-kP_p6kmttAlLUxaWNg5M6vUaEzYqLO2yeN4zo,112966
keras/layers/__init__.py,sha256=qtQtV57wGsFx6c-cIjdFsqbkFXdMbl7LPd0kK0AuYzs,1615
keras/layers/advanced_activations.py,sha256=qM_f4tFRhbnN8S8MSamHqdrqBJqk0y4EVuzJZYW4rww,7298
keras/layers/convolutional.py,sha256=OG0e0BtSSqGzWovUouoMBsnbmf7to54i4jRJE7F5ii0,94662
keras/layers/convolutional_recurrent.py,sha256=cHOlIIQoHNOFKS0lz8tXfDebAkX7VLul7IN_G1LDjcY,26593
keras/layers/core.py,sha256=XvL1CxacUG6_uptXD8rKYIL9fAJEgCVl7cb7mU0s8Tc,34645
keras/layers/cudnn_recurrent.py,sha256=9Unpz94qceBwRJ30cArqHIaa3YY03NKTogPSyQl1mLc,22775
keras/layers/embeddings.py,sha256=psXKBBRX4oN0LFzYLbhfjZbz-QFgFb7wbuq9j7CN4EA,6326
keras/layers/local.py,sha256=t18lMZvnPTPEC8RW9Q5jQPiBceHG-VpNuwi6pbIfp9w,18505
keras/layers/merge.py,sha256=YVNv7i5zWe76yjHlmqo1n_d-IaL42UqRAn44ON17oNU,23190
keras/layers/noise.py,sha256=BiLk8l4sOx9FjfkH5yRyKnoQrDA4M-oL6jam7s79-1c,5754
keras/layers/normalization.py,sha256=ZGdl2JJoT3Vxi93Fr9grQiTMHHWtW-OQRvpVuDAfm7g,9276
keras/layers/pooling.py,sha256=BvW_5wpUONhDVAbc4B4GUQSQLZntlLjdtJeEPs4PwWs,26982
keras/layers/recurrent.py,sha256=I8ZorIZ8a4MQx_FYk5mBUhvWtlNMUWgn055xwmm6Adg,91022
keras/layers/wrappers.py,sha256=cgVYyyGvrGBFiSHamg1KDN4bZb86rw4nLAg4MwxMnoA,13542
keras/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
keras/legacy/interfaces.py,sha256=k2YUTavlxNmsOaeEivvODpRc3nXc3ZydPslRzKPu09w,29587
keras/legacy/layers.py,sha256=6wmdujXp76hUzbaZkehgpVxXPnQlfviaL83UsrVw_tY,49792
keras/legacy/models.py,sha256=JBm_38VF9DpuPJF42pkN4nR4hcPoh5P2avRJjI_Dx1s,851
keras/preprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
keras/preprocessing/image.py,sha256=ezf4vQ8zYkX-YB-Sh0V0rgG6RpotUY5FOvMqiUqGAmw,47440
keras/preprocessing/sequence.py,sha256=jv_mbxtj5ReiInmI8YK1c4ccq6uiytw57kC_Nv-r9sM,7852
keras/preprocessing/text.py,sha256=EuGmGUVQw1wIGeRNBhiafu0PuxPsDhfuVU94YkSSGWc,12002
keras/utils/__init__.py,sha256=ExbefaWXUFZDHj7tsftGbLbDhWPe_Kt2kntSsP-yFIk,889
keras/utils/conv_utils.py,sha256=uEGWaiXRQaEg3X9NDfZTqogw0s-aipgtLq0rd4xh67Q,5142
keras/utils/data_utils.py,sha256=zs2f7oZTAOBGN62sGIQPPCZiy00S9BhAw-Vx6dlvncc,25050
keras/utils/generic_utils.py,sha256=H9E_1gEqVBmYT6d_gfvYMSG73YGNF6XjohqTP5s5a08,14674
keras/utils/io_utils.py,sha256=42jwGXSezg2vvWyahgze0PG-SNFVVSbmurjUKeq4STU,4507
keras/utils/layer_utils.py,sha256=7Popizl4yEj9037FFiHENgJp1La8jbPwQa53c9ycg2c,8558
keras/utils/np_utils.py,sha256=hu40uMuA-uCs8sh3721MQtFbQGWdzN6GVvytKenMo3M,1373
keras/utils/test_utils.py,sha256=QAV-BiGjRp079WSLKNgYLWTuJVqGHVBy78T4rwvqiq0,5795
keras/utils/training_utils.py,sha256=g4PzofZBnDJ1Goj7iXTQrjpQMtEGafsPArF7alU7jIs,6807
keras/utils/vis_utils.py,sha256=O7yKn_90nlolkRxuD6UpOIrPq0eYUo9ySNdodNky1sY,4754
keras/wrappers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
keras/wrappers/scikit_learn.py,sha256=xel3_syYFCjkmw_Cc8r6-HeuVWYbeEbP66hfNy_gTdw,12746
Keras-2.1.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
keras/applications/__pycache__/vgg16.cpython-34.pyc,,
keras/legacy/__pycache__/interfaces.cpython-34.pyc,,
keras/layers/__pycache__/noise.cpython-34.pyc,,
keras/layers/__pycache__/merge.cpython-34.pyc,,
keras/legacy/__pycache__/layers.cpython-34.pyc,,
keras/datasets/__pycache__/imdb.cpython-34.pyc,,
keras/utils/__pycache__/io_utils.cpython-34.pyc,,
keras/__pycache__/callbacks.cpython-34.pyc,,
keras/backend/__pycache__/theano_backend.cpython-34.pyc,,
keras/datasets/__pycache__/__init__.cpython-34.pyc,,
keras/layers/__pycache__/convolutional_recurrent.cpython-34.pyc,,
keras/__pycache__/objectives.cpython-34.pyc,,
keras/utils/__pycache__/layer_utils.cpython-34.pyc,,
keras/preprocessing/__pycache__/sequence.cpython-34.pyc,,
keras/utils/__pycache__/conv_utils.cpython-34.pyc,,
keras/__pycache__/constraints.cpython-34.pyc,,
keras/utils/__pycache__/np_utils.cpython-34.pyc,,
keras/wrappers/__pycache__/__init__.cpython-34.pyc,,
keras/__pycache__/regularizers.cpython-34.pyc,,
keras/utils/__pycache__/training_utils.cpython-34.pyc,,
keras/legacy/__pycache__/models.cpython-34.pyc,,
keras/engine/__pycache__/__init__.cpython-34.pyc,,
keras/datasets/__pycache__/reuters.cpython-34.pyc,,
keras/wrappers/__pycache__/scikit_learn.cpython-34.pyc,,
keras/utils/__pycache__/generic_utils.cpython-34.pyc,,
keras/utils/__pycache__/__init__.cpython-34.pyc,,
keras/applications/__pycache__/imagenet_utils.cpython-34.pyc,,
keras/datasets/__pycache__/boston_housing.cpython-34.pyc,,
keras/layers/__pycache__/wrappers.cpython-34.pyc,,
keras/backend/__pycache__/__init__.cpython-34.pyc,,
keras/applications/__pycache__/xception.cpython-34.pyc,,
keras/__pycache__/optimizers.cpython-34.pyc,,
keras/datasets/__pycache__/cifar100.cpython-34.pyc,,
keras/backend/__pycache__/tensorflow_backend.cpython-34.pyc,,
keras/__pycache__/__init__.cpython-34.pyc,,
keras/backend/__pycache__/common.cpython-34.pyc,,
keras/__pycache__/models.cpython-34.pyc,,
keras/layers/__pycache__/local.cpython-34.pyc,,
keras/datasets/__pycache__/cifar10.cpython-34.pyc,,
keras/layers/__pycache__/cudnn_recurrent.cpython-34.pyc,,
keras/engine/__pycache__/training.cpython-34.pyc,,
keras/backend/__pycache__/cntk_backend.cpython-34.pyc,,
keras/applications/__pycache__/inception_resnet_v2.cpython-34.pyc,,
keras/datasets/__pycache__/cifar.cpython-34.pyc,,
keras/layers/__pycache__/pooling.cpython-34.pyc,,
keras/applications/__pycache__/inception_v3.cpython-34.pyc,,
keras/utils/__pycache__/vis_utils.cpython-34.pyc,,
keras/layers/__pycache__/core.cpython-34.pyc,,
keras/__pycache__/activations.cpython-34.pyc,,
keras/applications/__pycache__/__init__.cpython-34.pyc,,
keras/utils/__pycache__/test_utils.cpython-34.pyc,,
keras/preprocessing/__pycache__/__init__.cpython-34.pyc,,
keras/layers/__pycache__/convolutional.cpython-34.pyc,,
keras/layers/__pycache__/__init__.cpython-34.pyc,,
keras/datasets/__pycache__/fashion_mnist.cpython-34.pyc,,
keras/datasets/__pycache__/mnist.cpython-34.pyc,,
keras/preprocessing/__pycache__/image.cpython-34.pyc,,
keras/applications/__pycache__/resnet50.cpython-34.pyc,,
keras/preprocessing/__pycache__/text.cpython-34.pyc,,
keras/layers/__pycache__/recurrent.cpython-34.pyc,,
keras/layers/__pycache__/normalization.cpython-34.pyc,,
keras/utils/__pycache__/data_utils.cpython-34.pyc,,
keras/__pycache__/metrics.cpython-34.pyc,,
keras/engine/__pycache__/topology.cpython-34.pyc,,
keras/applications/__pycache__/vgg19.cpython-34.pyc,,
keras/__pycache__/initializers.cpython-34.pyc,,
keras/layers/__pycache__/advanced_activations.cpython-34.pyc,,
keras/layers/__pycache__/embeddings.cpython-34.pyc,,
keras/__pycache__/losses.cpython-34.pyc,,
keras/legacy/__pycache__/__init__.cpython-34.pyc,,
keras/applications/__pycache__/mobilenet.cpython-34.pyc,,
@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.30.0)
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any

@@ -0,0 +1 @@
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules"], "description_content_type": "UNKNOWN", "download_url": "https://github.com/fchollet/keras/tarball/2.1.2", "extensions": {"python.details": {"contacts": [{"email": "francois.chollet@gmail.com", "name": "Francois Chollet", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/fchollet/keras"}}}, "extras": ["h5py", "tests", "visualize"], "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", "name": "Keras", "run_requires": [{"extra": "h5py", "requires": ["h5py"]}, {"requires": ["numpy (>=1.9.1)", "pyyaml", "scipy (>=0.14)", "six (>=1.9.0)"]}, {"extra": "tests", "requires": ["pandas", "pytest-cov", "pytest-pep8", "pytest-xdist", "pytest"]}, {"extra": "visualize", "requires": ["pydot (>=1.2.0)"]}], "summary": "Deep Learning for Python", "version": "2.1.2"}
@@ -0,0 +1 @@
keras
@@ -0,0 +1,21 @@

This is a Python implementation of John Gruber's Markdown_.
It is almost completely compliant with the reference implementation,
though there are a few known issues. See Features_ for information
on what exactly is supported and what is not. Additional features are
supported by the `Available Extensions`_.

.. _Markdown: http://daringfireball.net/projects/markdown/
.. _Features: https://pythonhosted.org/Markdown/index.html#Features
.. _`Available Extensions`: https://pythonhosted.org/Markdown/extensions/index.html

Support
=======

You may ask for help and discuss various other issues on the
`mailing list`_ and report bugs on the `bug tracker`_.

.. _`mailing list`: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss
.. _`bug tracker`: http://github.com/Python-Markdown/markdown/issues


@@ -0,0 +1 @@
pip
@@ -0,0 +1,50 @@
Metadata-Version: 2.0
Name: Markdown
Version: 2.6.9
Summary: Python implementation of Markdown.
Home-page: https://pythonhosted.org/Markdown/
Author: Waylan Limberg
Author-email: waylan.limberg@icloud.com
License: BSD License
Download-URL: http://pypi.python.org/packages/source/M/Markdown/Markdown-2.6.9.tar.gz
Description-Content-Type: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Topic :: Communications :: Email :: Filters
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing :: Filters
Classifier: Topic :: Text Processing :: Markup :: HTML


This is a Python implementation of John Gruber's Markdown_.
It is almost completely compliant with the reference implementation,
though there are a few known issues. See Features_ for information
on what exactly is supported and what is not. Additional features are
supported by the `Available Extensions`_.

.. _Markdown: http://daringfireball.net/projects/markdown/
.. _Features: https://pythonhosted.org/Markdown/index.html#Features
.. _`Available Extensions`: https://pythonhosted.org/Markdown/extensions/index.html

Support
=======

You may ask for help and discuss various other issues on the
`mailing list`_ and report bugs on the `bug tracker`_.

.. _`mailing list`: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss
.. _`bug tracker`: http://github.com/Python-Markdown/markdown/issues


@@ -0,0 +1,68 @@
../../../bin/markdown_py,sha256=JjImDngCKbxAAoY1h6PtYKpV8K4CROd4Q9HlTZenMeE,1004
Markdown-2.6.9.dist-info/DESCRIPTION.rst,sha256=JU-qpLqkHE9cXsUCtFoLnCC0Y6iUIWYe3cMvBXD01v8,815
Markdown-2.6.9.dist-info/METADATA,sha256=Ok9x-ZnM_BxgghakrVs_m3M159hkZsSjpoI9it7ldsI,2109
Markdown-2.6.9.dist-info/RECORD,,
Markdown-2.6.9.dist-info/WHEEL,sha256=B6dvBbvWLNtx8cOVxA1epfvN4U6kjHSAwmQ1a0B6tUI,93
Markdown-2.6.9.dist-info/metadata.json,sha256=4SF4lmvCbD5JaN3NoYMcaXlcsvHcC_S12DBtekP9ADU,1354
Markdown-2.6.9.dist-info/top_level.txt,sha256=IAxs8x618RXoH1uCqeLLxXsDefJvE_mIibr_M4sOlyk,9
markdown/__init__.py,sha256=X3xNnQFzCg1qyv2KTbZ4gP_jEFa746L3C0uxt4HCr88,20802
markdown/__main__.py,sha256=l2C_ES-2c8I2NRO4uslH_RoftcuusGmFz454umxxgb0,5137
markdown/__version__.py,sha256=ROkzy_0F4oznCM-TXMAFcssK41N4KAB3xIhMqtDbpW4,880
markdown/blockparser.py,sha256=CM37G8uNufHkk-369PERAcJ4Bt2f9snW6F7nbHydaAA,3517
markdown/blockprocessors.py,sha256=mwwRigR8mv-ZJ3KXCpiOP4uXC_JW13o9CWWR6XABcIo,23009
markdown/inlinepatterns.py,sha256=vEEO7NWDEodV-qLBWvu3eJVMJWWbBB0oOqW4_7ZIl1g,17129
markdown/odict.py,sha256=UQ-4Ba0BrBe6Ro3Rpcf93y8ewPzLmEUvxYiWxowV7Yk,6044
markdown/postprocessors.py,sha256=5DdsbNGyEW4-oT8q65sLfZ-plclF6sGOmM0t6HF6hZU,3615
markdown/preprocessors.py,sha256=SbkLOFs6zJw5FsygZsS6FxagX_FFDRcwa7lDA7x8lb0,14647
markdown/serializers.py,sha256=NZN9fU_xE18BsWjTNO2S90GMT_DddyL4p9lk-v3D5Pc,9820
markdown/treeprocessors.py,sha256=G_D7uweKZYJgDLSVtfRWgcixWGXCdOA5jYUG1ka1P08,13032
markdown/util.py,sha256=nykI1V7qBMKlYGiYnyRcqu3cbRNuDoXcE9rdTCd53is,5646
markdown/__pycache__/__init__.cpython-34.pyc,sha256=0CNMYtnMnD4XhTI19Zv62km0ppBg4ld3OCgxSfbzQeM,15616
markdown/__pycache__/__version__.cpython-34.pyc,sha256=H2SDXRqDt6iiqGxpNI2_qmBqDpz3NpWPxBvFZmo_TXI,796
markdown/__pycache__/blockparser.cpython-34.pyc,sha256=SD75zPkNgiy6MMgdFhCi4BrcTwJl5DVc69bZCAkkkDs,4222
markdown/__pycache__/blockprocessors.cpython-34.pyc,sha256=-IaXBtPaY9YdIm_JTmiofDfSopKKf73080Joo0wqZ9U,17621
markdown/__pycache__/inlinepatterns.cpython-34.pyc,sha256=ef90pM-PBV-Bd43ZgLTRxnCxW7WkKyobKjY7UOymLwA,18202
markdown/__pycache__/odict.cpython-34.pyc,sha256=bDW7i9vrqNozFqCoVUhNuprWdtXS2-eR-CYG-rr24EE,7451
markdown/__pycache__/postprocessors.cpython-34.pyc,sha256=VDr8yP3ujNDk6I-TSBqjbRo4npq0e4crKCr5bQJFTXM,4639
markdown/__pycache__/preprocessors.cpython-34.pyc,sha256=5ch4-n2iPLfrNPrbaeEvY7tGoI_Mb1gFYdwCQQhuJ-Y,10251
markdown/__pycache__/serializers.cpython-34.pyc,sha256=Wt_8dmqhuFPOdQGuPj_BHhqlyWZVUvickH1Chrmbk6Y,5986
markdown/__pycache__/treeprocessors.cpython-34.pyc,sha256=-aTkFR5mSD9We8YJmZvq12Yotp-MQp0u4NkIsnc1cc4,10724
markdown/__pycache__/util.cpython-34.pyc,sha256=-L4o3AAwN1AnWolwX3m9uVnwxnt3HZfpuEjl_JPqP4Q,4754
markdown/extensions/__init__.py,sha256=nusbN8FPR5qF3yBx30FHWhLvDKzS-7aGJ07-4BYQuyM,3850
markdown/extensions/abbr.py,sha256=KgB7la3ooLMpgTAp6qrTzwz0b-48NWmdiBv7bBBgSm4,2738
markdown/extensions/admonition.py,sha256=gvyFx47wknDJYL9JE_S7lbHL1FPzY2T1HgRjZLGX4bM,3163
markdown/extensions/attr_list.py,sha256=U6HvB2B_5mDnwRfzpNkJcoePZxmjIECwQoUobONyoAQ,6267
markdown/extensions/codehilite.py,sha256=5TdoKQN1hmS3oPtN5Xbya0TzTWyxQpBmvG0nr9_gjJE,9769
markdown/extensions/def_list.py,sha256=IUn0aXCS33mRHdFXhEo6l9U_0ihuwUQzpyWnMkWHPI8,3750
markdown/extensions/extra.py,sha256=Ir2myWKZD18cNER95YNuTuC-8Q3yvOzWUklXlA-9xsA,5547
markdown/extensions/fenced_code.py,sha256=n1XlDMHqEdtTUOFbkN51v_0wQN4Z6X8-B6wtj-U1C84,4104
markdown/extensions/footnotes.py,sha256=0UnRdyJEUrcgCpPh83CNhZBGN4yt51ueYpHyRfkiCYw,14919
markdown/extensions/headerid.py,sha256=1hGbmIS4MkUKYGO0x297Qh3pzmz6-OOwhmhTYppGLW4,3321
markdown/extensions/meta.py,sha256=pJegFlul2iR-gssewSFHy9qRRMbZ17nSfyuedMv33SY,2400
markdown/extensions/nl2br.py,sha256=icyTpth-w2khHOIoorZkBr_hOTDS7_VTg2en7JwFQWE,859
markdown/extensions/sane_lists.py,sha256=vUuRMoPtqntpugGRts_esPicto9B47-zPPHOYVNixdI,1602
markdown/extensions/smart_strong.py,sha256=qxbMJ6b2enTMB4Zc2NC5BmkNvXdAu5ti31s8wi0u7zk,1197
markdown/extensions/smarty.py,sha256=O3FDJt43MEAJ9iWmjCTZ74fP9naIeOmSO5KRm_BiN24,10360
markdown/extensions/tables.py,sha256=RXICKlVaCnaIQE853EWfBt4z3lIjt6bpo_hZzpU6PrE,7852
markdown/extensions/toc.py,sha256=MuYFuoLKl-b9DHppelyGEPrax00KnBMnnuQmBOSLBtc,11044
markdown/extensions/wikilinks.py,sha256=gwn1jJu-9zBfVJS9H3GBqX6YTyGNUjiR3cyrsnuRb5U,2872
markdown/extensions/__pycache__/__init__.cpython-34.pyc,sha256=oG44ffHkUHas2ayug7f8FnkHeBzfWz555waytC6LYzk,3834
markdown/extensions/__pycache__/abbr.cpython-34.pyc,sha256=_pBC6F3Hh6Lvd2M4-ijH4a_womRtIs3Sl9jMIUJdafI,3629
markdown/extensions/__pycache__/admonition.cpython-34.pyc,sha256=AkWudtDS3IYsS8CPXTYee0o33zO6by_gL-6aqGiKsag,3176
markdown/extensions/__pycache__/attr_list.cpython-34.pyc,sha256=frKhIE6GPqTK016I42qVPTV9R04Q6wopLYEtTbOsOiw,5464
markdown/extensions/__pycache__/codehilite.cpython-34.pyc,sha256=PblxYAU07azSUmfJsVECLyFF0Wr1n0R_zT12M94lQC4,8341
markdown/extensions/__pycache__/def_list.cpython-34.pyc,sha256=5vwDgj1G-YbBW7QvkDKqIG0EO-tntHzkCYZxWO5cl4U,3895
markdown/extensions/__pycache__/extra.cpython-34.pyc,sha256=nic4H9vFzKvEfId4hYtPtQTC3KRrYlDQ47oT3ul7MQ4,5066
markdown/extensions/__pycache__/fenced_code.cpython-34.pyc,sha256=GvvnRoK81taT6_wwgjgkxLbZhEo7QCQVtRJOkmA5fMI,3850
markdown/extensions/__pycache__/footnotes.cpython-34.pyc,sha256=7mEGVaIrUFCUz3ZsvPW_mecP7Bowli81Fb1AyY07ytE,13067
markdown/extensions/__pycache__/meta.cpython-34.pyc,sha256=G0gZro6T0R4HC6t35M1C0Tcxl_Z7DOePpk4s6oS7qPE,2577
markdown/extensions/__pycache__/smart_strong.cpython-34.pyc,sha256=fZIuigrlbtGuGgzBIC809a30LDq5yYtEA0PsTlLzSNE,1583
markdown/extensions/__pycache__/smarty.cpython-34.pyc,sha256=WK_wp_u2V72Ji88zwvGTv7FdsmcAmQnA-WO-dE8gIuc,9403
markdown/extensions/__pycache__/tables.cpython-34.pyc,sha256=u3-aOOahdCxTBwxvZJC3hArJuHwRlH5j-BnTvtoT7XU,6216
markdown/extensions/__pycache__/toc.cpython-34.pyc,sha256=N7cupjgwmUcplxuu4p6TqzbWaApfe3R8Gw8aMYiT3K4,9297
Markdown-2.6.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
markdown/extensions/__pycache__/nl2br.cpython-34.pyc,,
markdown/extensions/__pycache__/sane_lists.cpython-34.pyc,,
markdown/__pycache__/__main__.cpython-34.pyc,,
markdown/extensions/__pycache__/wikilinks.cpython-34.pyc,,
markdown/extensions/__pycache__/headerid.cpython-34.pyc,,
@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.30.0)
Root-Is-Purelib: true
Tag: cp34-none-any

@@ -0,0 +1 @@
{"classifiers": ["Development Status :: 5 - Production/Stable", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Communications :: Email :: Filters", "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries", "Topic :: Internet :: WWW/HTTP :: Site Management", "Topic :: Software Development :: Documentation", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Filters", "Topic :: Text Processing :: Markup :: HTML"], "description_content_type": "UNKNOWN", "download_url": "http://pypi.python.org/packages/source/M/Markdown/Markdown-2.6.9.tar.gz", "extensions": {"python.details": {"contacts": [{"email": "waylan.limberg@icloud.com", "name": "Waylan Limberg", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pythonhosted.org/Markdown/"}}}, "generator": "bdist_wheel (0.30.0)", "license": "BSD License", "metadata_version": "2.0", "name": "Markdown", "summary": "Python implementation of Markdown.", "version": "2.6.9"}
@@ -0,0 +1 @@
markdown
@@ -0,0 +1,12 @@
YAML is a data serialization format designed for human readability
and interaction with scripting languages. PyYAML is a YAML parser
and emitter for Python.

PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
support, capable extension API, and sensible error messages. PyYAML
supports standard YAML tags and provides Python-specific tags that
allow to represent an arbitrary Python object.

PyYAML is applicable for a broad range of tasks from complex
configuration files to object serialization and persistance.

@@ -0,0 +1 @@
pip
@@ -0,0 +1,36 @@
Metadata-Version: 2.0
Name: PyYAML
Version: 3.12
Summary: YAML parser and emitter for Python
Home-page: http://pyyaml.org/wiki/PyYAML
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Download-URL: http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz
Description-Content-Type: UNKNOWN
Platform: Any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing :: Markup

YAML is a data serialization format designed for human readability
and interaction with scripting languages. PyYAML is a YAML parser
and emitter for Python.

PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
support, capable extension API, and sensible error messages. PyYAML
supports standard YAML tags and provides Python-specific tags that
allow to represent an arbitrary Python object.

PyYAML is applicable for a broad range of tasks from complex
configuration files to object serialization and persistance.

@@ -0,0 +1,41 @@
PyYAML-3.12.dist-info/DESCRIPTION.rst,sha256=4nzkrOwMTYfusIfdRz4-dl_9Blan5axHPKMiVJEOV-4,534
PyYAML-3.12.dist-info/METADATA,sha256=L_L0VRByLibwYrd3DpwgLN0QlArbxysTnCZM176pMoA,1458
PyYAML-3.12.dist-info/RECORD,,
PyYAML-3.12.dist-info/WHEEL,sha256=AEztX7vHDtcgysb-4-5-DyIKMLIPg6NMxY9dXTRdoXQ,104
PyYAML-3.12.dist-info/metadata.json,sha256=NeTCfZFCUNeb1PmvwFXaV62SWUN5QiC_imZPcGAlwRU,1052
PyYAML-3.12.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11
yaml/__init__.py,sha256=53VZayqtIKrdWEuauzPtjPqiyQ3XydjDsD5Yo2KKbak,9607
yaml/composer.py,sha256=rAskP6VXqfAZcZxGIQFyPwVkNZYtnmmylV4TBSn4EUk,4881
yaml/constructor.py,sha256=SVt8piayRVwV7Pd9RDvIM60BftFrqkA35z7HWwubHkg,25554
yaml/cyaml.py,sha256=zajOEEo_11ZJC0pko7O-mqT9JYxhXVdFIXYAHTW9COU,3294
yaml/dumper.py,sha256=86Yz2GmUk6lk6xUKRRWZwDmvSMp3pPekmWDIarq93Iw,2723
yaml/emitter.py,sha256=16CwscYPx2DejDyE8MqfMybsm1DnFsSUwDvSQuC-3Rc,42954
yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533
yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445
yaml/loader.py,sha256=aQ71rMxcAW_oA1dt0x3hlRDdqYjzwXXfpvSFFewh9NA,1138
yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440
yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495
yaml/reader.py,sha256=r22-ns0QvKAqGopu3IgczoK5VLGA7oZ3XN9sBESkb04,6854
yaml/representer.py,sha256=ZmBbegM-yVa3NBBTo-LqF-O2IcgGIT5LlDweB8SDgAE,14097
yaml/resolver.py,sha256=DJCjpQr8YQCEYYjKEYqTl0GrsZil2H4aFOI9b0Oe-U4,8970
yaml/scanner.py,sha256=6LVPebouAqunvxw3tFVMa34pDgPsDKg2JuaaeNeTLtk,51695
yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165
yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573
PyYAML-3.12.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
yaml/__pycache__/scanner.cpython-34.pyc,,
yaml/__pycache__/constructor.cpython-34.pyc,,
yaml/__pycache__/__init__.cpython-34.pyc,,
yaml/__pycache__/serializer.cpython-34.pyc,,
yaml/__pycache__/error.cpython-34.pyc,,
yaml/__pycache__/loader.cpython-34.pyc,,
yaml/__pycache__/reader.cpython-34.pyc,,
yaml/__pycache__/nodes.cpython-34.pyc,,
yaml/__pycache__/cyaml.cpython-34.pyc,,
yaml/__pycache__/parser.cpython-34.pyc,,
yaml/__pycache__/representer.cpython-34.pyc,,
yaml/__pycache__/resolver.cpython-34.pyc,,
yaml/__pycache__/events.cpython-34.pyc,,
yaml/__pycache__/composer.cpython-34.pyc,,
yaml/__pycache__/dumper.cpython-34.pyc,,
yaml/__pycache__/tokens.cpython-34.pyc,,
yaml/__pycache__/emitter.cpython-34.pyc,,
@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.30.0)
Root-Is-Purelib: false
Tag: cp34-cp34m-linux_x86_64

@@ -0,0 +1 @@
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup"], "description_content_type": "UNKNOWN", "download_url": "http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz", "extensions": {"python.details": {"contacts": [{"email": "xi@resolvent.net", "name": "Kirill Simonov", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://pyyaml.org/wiki/PyYAML"}}}, "generator": "bdist_wheel (0.30.0)", "license": "MIT", "metadata_version": "2.0", "name": "PyYAML", "platform": "Any", "summary": "YAML parser and emitter for Python", "version": "3.12"}
@@ -0,0 +1,2 @@
_yaml
yaml
@@ -0,0 +1,54 @@
Werkzeug
========

Werkzeug started as simple collection of various utilities for WSGI
applications and has become one of the most advanced WSGI utility
modules. It includes a powerful debugger, full featured request and
response objects, HTTP utilities to handle entity tags, cache control
headers, HTTP dates, cookie handling, file uploads, a powerful URL
routing system and a bunch of community contributed addon modules.

Werkzeug is unicode aware and doesn't enforce a specific template
engine, database adapter or anything else. It doesn't even enforce
a specific way of handling requests and leaves all that up to the
developer. It's most useful for end user applications which should work
on as many server environments as possible (such as blogs, wikis,
bulletin boards, etc.).

Details and example applications are available on the
`Werkzeug website <http://werkzeug.pocoo.org/>`_.


Features
--------

- unicode awareness

- request and response objects

- various utility functions for dealing with HTTP headers such as
`Accept` and `Cache-Control` headers.

- thread local objects with proper cleanup at request end

- an interactive debugger

- A simple WSGI server with support for threading and forking
with an automatic reloader.

- a flexible URL routing system with REST support.

- fully WSGI compatible


Development Version
-------------------

The Werkzeug development version can be installed by cloning the git
repository from `github`_::

git clone git@github.com:pallets/werkzeug.git

.. _github: http://github.com/pallets/werkzeug


@@ -0,0 +1 @@
pip
@@ -0,0 +1,29 @@
Copyright (c) 2014 by the Werkzeug Team, see AUTHORS for more details.

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.

* The names of the contributors may not 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
OWNER 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.
@@ -0,0 +1,83 @@
Metadata-Version: 2.0
Name: Werkzeug
Version: 0.12.2
Summary: The Swiss Army knife of Python web development
Home-page: http://werkzeug.pocoo.org/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides-Extra: termcolor
Requires-Dist: termcolor; extra == 'termcolor'
Provides-Extra: watchdog
Requires-Dist: watchdog; extra == 'watchdog'

Werkzeug
========

Werkzeug started as simple collection of various utilities for WSGI
applications and has become one of the most advanced WSGI utility
modules. It includes a powerful debugger, full featured request and
response objects, HTTP utilities to handle entity tags, cache control
headers, HTTP dates, cookie handling, file uploads, a powerful URL
routing system and a bunch of community contributed addon modules.

Werkzeug is unicode aware and doesn't enforce a specific template
engine, database adapter or anything else. It doesn't even enforce
a specific way of handling requests and leaves all that up to the
developer. It's most useful for end user applications which should work
on as many server environments as possible (such as blogs, wikis,
bulletin boards, etc.).

Details and example applications are available on the
`Werkzeug website <http://werkzeug.pocoo.org/>`_.


Features
--------

- unicode awareness

- request and response objects

- various utility functions for dealing with HTTP headers such as
`Accept` and `Cache-Control` headers.

- thread local objects with proper cleanup at request end

- an interactive debugger

- A simple WSGI server with support for threading and forking
with an automatic reloader.

- a flexible URL routing system with REST support.

- fully WSGI compatible


Development Version
-------------------

The Werkzeug development version can be installed by cloning the git
repository from `github`_::

git clone git@github.com:pallets/werkzeug.git

.. _github: http://github.com/pallets/werkzeug


@@ -0,0 +1,95 @@
werkzeug/posixemulation.py,sha256=xEF2Bxc-vUCPkiu4IbfWVd3LW7DROYAT-ExW6THqyzw,3519
werkzeug/security.py,sha256=Z0v0ojdo7T4FNyfIjx86BFQKwasy3ZR9euikIJDQYP8,9191
werkzeug/__init__.py,sha256=NDY8HsYsT3dguTLu4MhuH-GpQE5XS9aKhrdfwHnzOEk,6864
werkzeug/testapp.py,sha256=3HQRW1sHZKXuAjCvFMet4KXtQG3loYTFnvn6LWt-4zI,9396
werkzeug/http.py,sha256=nrk-ASJzcKOuoBEz274TWA8jKt0CQSOBZuP_A0UASTA,36658
werkzeug/routing.py,sha256=g25wg0GNfff8WcfRlc1ZxTGvz1KbVj09w2S7wxopseQ,66746
werkzeug/utils.py,sha256=lkybtv_mq35zV1qhelvEcILTzrMUwZ9yon6E8XwapJE,22972
werkzeug/exceptions.py,sha256=3wp95Hqj9FqV8MdikV99JRcHse_fSMn27V8tgP5Hw2c,20505
werkzeug/_reloader.py,sha256=NkIXQCTa6b22wWLpXob_jIVUxux8LtAsfWehLkKt0iM,8816
werkzeug/formparser.py,sha256=DxN53eOCb6i7PxqtldrF2Kv9Mx00BqW297N4t-RxkWE,21241
werkzeug/_compat.py,sha256=8c4U9o6A_TR9nKCcTbpZNxpqCXcXDVIbFawwKM2s92c,6311
werkzeug/datastructures.py,sha256=rq0zICISMUetS3xvUVvrhIvyue9oUzrs_NU3b83zwuQ,89066
werkzeug/wrappers.py,sha256=wceh1RhvhIZVzKuok3XMQ5jqjYYCEYv5JqKY3Nc_oRY,82986
werkzeug/test.py,sha256=xnabNSpty66ftZiXHcoZaYFP1E4WUNxydw5Oe8Mjhoo,34795
werkzeug/urls.py,sha256=fSbI4Gb29_p02Zk21VAZQRN1QdOVY9CNTgpb2rbajNQ,36710
werkzeug/script.py,sha256=Jh9OAktqjLNc_IBBUatVM7uP5LDcbxaYA8n2ObnS4bo,11666
werkzeug/useragents.py,sha256=Ck3G977Y0Rzdk9wFcLpL0PyOrONtdK1_d2Zexb78cX4,5640
werkzeug/local.py,sha256=QdQhWV5L8p1Y1CJ1CDStwxaUs24SuN5aebHwjVD08C8,14553
werkzeug/serving.py,sha256=aAS3EgiD-VjemsYfSf1yqdjaGEfpB4I3M4PKlLotJLo,29069
werkzeug/filesystem.py,sha256=hHWeWo_gqLMzTRfYt8-7n2wWcWUNTnDyudQDLOBEICE,2175
werkzeug/wsgi.py,sha256=TjPo5ups3NI1RVVGdMvd3XaceqFtqlMX5X169gWWFrQ,42838
werkzeug/_internal.py,sha256=sE2JbLnMzN9mRI1iipTYWrFAGEWaZVECqtHAiNEhqUE,13841
werkzeug/contrib/fixers.py,sha256=gR06T-w71ur-tHQ_31kP_4jpOncPJ4Wc1dOqTvYusr8,10179
werkzeug/contrib/limiter.py,sha256=iS8-ahPZ-JLRnmfIBzxpm7O_s3lPsiDMVWv7llAIDCI,1334
werkzeug/contrib/__init__.py,sha256=f7PfttZhbrImqpr5Ezre8CXgwvcGUJK7zWNpO34WWrw,623
werkzeug/contrib/testtools.py,sha256=G9xN-qeihJlhExrIZMCahvQOIDxdL9NiX874jiiHFMs,2453
werkzeug/contrib/iterio.py,sha256=RlqDvGhz0RneTpzE8dVc-yWCUv4nkPl1jEc_EDp2fH0,10814
werkzeug/contrib/cache.py,sha256=nyUUxsS0MTHiFmu-481y9PHd8NvWH5pzCoEX1yA0mHY,30341
werkzeug/contrib/securecookie.py,sha256=bDsAJmslkwmXjycnPjEjWtfLBvhz0ud4z3k7tdezUVs,12174
werkzeug/contrib/lint.py,sha256=qZlmqiWJ5tQJOEzLnPmHWA8eUEpcBIWkAb_V2RKJg4o,12558
werkzeug/contrib/profiler.py,sha256=ISwCWvwVyGpDLRBRpLjo_qUWma6GXYBrTAco4PEQSHY,5151
werkzeug/contrib/wrappers.py,sha256=v7OYlz7wQtDlS9fey75UiRZ1IkUWqCpzbhsLy4k14Hw,10398
werkzeug/contrib/atom.py,sha256=qqfJcfIn2RYY-3hO3Oz0aLq9YuNubcPQ_KZcNsDwVJo,15575
werkzeug/contrib/jsrouting.py,sha256=QTmgeDoKXvNK02KzXgx9lr3cAH6fAzpwF5bBdPNvJPs,8564
werkzeug/contrib/sessions.py,sha256=39LVNvLbm5JWpbxM79WC2l87MJFbqeISARjwYbkJatw,12577
werkzeug/debug/console.py,sha256=n3-dsKk1TsjnN-u4ZgmuWCU_HO0qw5IA7ttjhyyMM6I,5607
werkzeug/debug/repr.py,sha256=bKqstDYGfECpeLerd48s_hxuqK4b6UWnjMu3d_DHO8I,9340
werkzeug/debug/__init__.py,sha256=GTsOsjE3PqUAlsUVm2Mgc_KWA2kjjSsUz0JsM7Qu41w,17266
werkzeug/debug/tbtools.py,sha256=rBudXCmkVdAKIcdhxANxgf09g6kQjJWW9_5bjSpr4OY,18451
werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191
werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818
werkzeug/debug/shared/debugger.js,sha256=PKPVYuyO4SX1hkqLOwCLvmIEO5154WatFYaXE-zIfKI,6264
werkzeug/debug/shared/style.css,sha256=IEO0PC2pWmh2aEyGCaN--txuWsRCliuhlbEhPDFwh0A,6270
werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507
werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673
werkzeug/debug/shared/jquery.js,sha256=7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2_ujj7g,95957
werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220
werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200
Werkzeug-0.12.2.dist-info/DESCRIPTION.rst,sha256=z9r9xqJ0fYSAn1Tz7KRBdFGDerL2y4pHWSW_72pUgTc,1591
Werkzeug-0.12.2.dist-info/metadata.json,sha256=6taKobd3cQ5zOY5MVKlvuCJGaX7VPLaHYuRwzwwkORI,1276
Werkzeug-0.12.2.dist-info/RECORD,,
Werkzeug-0.12.2.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9
Werkzeug-0.12.2.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110
Werkzeug-0.12.2.dist-info/LICENSE.txt,sha256=F84h8-PZAuC-Hq-_252D3yhH6mqIc-WUbXUPbfOtjXM,1532
Werkzeug-0.12.2.dist-info/METADATA,sha256=SphYykCCskmOJK7mV1-M2T1PTOrx5K3DJ8n3E5jA298,2738
Werkzeug-0.12.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
werkzeug/__pycache__/__init__.cpython-34.pyc,,
werkzeug/__pycache__/serving.cpython-34.pyc,,
werkzeug/contrib/__pycache__/atom.cpython-34.pyc,,
werkzeug/contrib/__pycache__/cache.cpython-34.pyc,,
werkzeug/__pycache__/wsgi.cpython-34.pyc,,
werkzeug/__pycache__/http.cpython-34.pyc,,
werkzeug/contrib/__pycache__/iterio.cpython-34.pyc,,
werkzeug/__pycache__/formparser.cpython-34.pyc,,
werkzeug/contrib/__pycache__/__init__.cpython-34.pyc,,
werkzeug/debug/__pycache__/__init__.cpython-34.pyc,,
werkzeug/__pycache__/_internal.cpython-34.pyc,,
werkzeug/__pycache__/security.cpython-34.pyc,,
werkzeug/__pycache__/_compat.cpython-34.pyc,,
werkzeug/debug/__pycache__/console.cpython-34.pyc,,
werkzeug/contrib/__pycache__/profiler.cpython-34.pyc,,
werkzeug/debug/__pycache__/tbtools.cpython-34.pyc,,
werkzeug/__pycache__/useragents.cpython-34.pyc,,
werkzeug/contrib/__pycache__/testtools.cpython-34.pyc,,
werkzeug/__pycache__/utils.cpython-34.pyc,,
werkzeug/__pycache__/datastructures.cpython-34.pyc,,
werkzeug/__pycache__/local.cpython-34.pyc,,
werkzeug/contrib/__pycache__/jsrouting.cpython-34.pyc,,
werkzeug/__pycache__/urls.cpython-34.pyc,,
werkzeug/contrib/__pycache__/limiter.cpython-34.pyc,,
werkzeug/__pycache__/filesystem.cpython-34.pyc,,
werkzeug/debug/__pycache__/repr.cpython-34.pyc,,
werkzeug/__pycache__/posixemulation.cpython-34.pyc,,
werkzeug/contrib/__pycache__/sessions.cpython-34.pyc,,
werkzeug/contrib/__pycache__/wrappers.cpython-34.pyc,,
werkzeug/contrib/__pycache__/fixers.cpython-34.pyc,,
werkzeug/__pycache__/test.cpython-34.pyc,,
werkzeug/contrib/__pycache__/lint.cpython-34.pyc,,
werkzeug/__pycache__/wrappers.cpython-34.pyc,,
werkzeug/__pycache__/script.cpython-34.pyc,,
werkzeug/__pycache__/exceptions.cpython-34.pyc,,
werkzeug/__pycache__/routing.cpython-34.pyc,,
werkzeug/contrib/__pycache__/securecookie.cpython-34.pyc,,
werkzeug/__pycache__/testapp.cpython-34.pyc,,
werkzeug/__pycache__/_reloader.cpython-34.pyc,,
@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.24.0)
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any

@@ -0,0 +1 @@
{"license": "BSD", "name": "Werkzeug", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "The Swiss Army knife of Python web development", "platform": "any", "run_requires": [{"requires": ["watchdog"], "extra": "watchdog"}, {"requires": ["termcolor"], "extra": "termcolor"}], "version": "0.12.2", "extensions": {"python.details": {"project_urls": {"Home": "http://werkzeug.pocoo.org/"}, "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "contacts": [{"role": "author", "email": "armin.ronacher@active-4.com", "name": "Armin Ronacher"}]}}, "classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules"], "extras": ["termcolor", "watchdog"]}
@@ -0,0 +1 @@
werkzeug
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,281 @@
======
Bleach
======

.. image:: https://travis-ci.org/mozilla/bleach.png?branch=master
:target: https://travis-ci.org/mozilla/bleach

.. image:: https://badge.fury.io/py/Bleach.svg
:target: http://badge.fury.io/py/Bleach

Bleach is a whitelist-based HTML sanitizing library that escapes or strips
markup and attributes.

Bleach can also linkify text safely, applying filters that Django's ``urlize``
filter cannot, and optionally setting ``rel`` attributes, even on links already
in the text.

Bleach is intended for sanitizing text from *untrusted* sources. If you find
yourself jumping through hoops to allow your site administrators to do lots of
things, you're probably outside the use cases. Either trust those users, or
don't.

Because it relies on html5lib_, Bleach is as good as modern browsers at dealing
with weird, quirky HTML fragments. And *any* of Bleach's methods will fix
unbalanced or mis-nested tags.

The version on GitHub_ is the most up-to-date and contains the latest bug
fixes. You can find full documentation on `ReadTheDocs`_.

:Code: https://github.com/mozilla/bleach
:Documentation: https://bleach.readthedocs.io/
:Issue tracker: https://github.com/mozilla/bleach/issues
:IRC: ``#bleach`` on irc.mozilla.org
:License: Apache License v2; see LICENSE file


Reporting Bugs
==============

For regular bugs, please report them `in our issue tracker
<https://github.com/mozilla/bleach/issues>`_.

If you believe that you've found a security vulnerability, please `file a secure
bug report in our bug tracker
<https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&product=Webtools&component=Bleach-security&groups=webtools-security>`_
or send an email to *security AT mozilla DOT org*.

For more information on security-related bug disclosure and the PGP key to use
for sending encrypted mail or to verify responses received from that address,
please read our wiki page at
`<https://www.mozilla.org/en-US/security/#For_Developers>`_.


Installing Bleach
=================

Bleach is available on PyPI_, so you can install it with ``pip``::

$ pip install bleach

Or with ``easy_install``::

$ easy_install bleach

Or by cloning the repo from GitHub_::

$ git clone git://github.com/mozilla/bleach.git

Then install it by running::

$ python setup.py install


Upgrading Bleach
================

.. warning::

Before doing any upgrades, read through `Bleach Changes
<https://bleach.readthedocs.io/en/latest/changes.html>`_ for backwards
incompatible changes, newer versions, etc.


Basic use
=========

The simplest way to use Bleach is:

.. code-block:: python

>>> import bleach

>>> bleach.clean('an <script>evil()</script> example')
u'an &lt;script&gt;evil()&lt;/script&gt; example'

>>> bleach.linkify('an http://example.com url')
u'an <a href="http://example.com" rel="nofollow">http://example.com</a> url


.. _html5lib: https://github.com/html5lib/html5lib-python
.. _GitHub: https://github.com/mozilla/bleach
.. _ReadTheDocs: https://bleach.readthedocs.io/
.. _PyPI: http://pypi.python.org/pypi/bleach


Bleach Changes
==============

Version 1.5 (November 4th, 2016)
--------------------------------

**Backwards incompatible changes**

- clean: The list of ``ALLOWED_PROTOCOLS`` now defaults to http, https and
mailto. Previously it was a long list of protocols something like ed2k, ftp,
http, https, irc, mailto, news, gopher, nntp, telnet, webcal, xmpp, callto,
feed, urn, aim, rsync, tag, ssh, sftp, rtsp, afs, data. #149

**Changes**

- clean: Added ``protocols`` to arguments list to let you override the list of
allowed protocols. Thank you, Andreas Malecki! #149
- linkify: Fix a bug involving periods at the end of an email address. Thank you,
Lorenz Schori! #219
- linkify: Fix linkification of non-ascii ports. Thank you Alexandre, Macabies!
#207
- linkify: Fix linkify inappropriately removing node tails when dropping nodes.
#132
- Fixed a test that failed periodically. #161
- Switched from nose to py.test. #204
- Add test matrix for all supported Python and html5lib versions. #230
- Limit to html5lib ``>=0.999,!=0.9999,!=0.99999,<0.99999999`` because 0.9999
and 0.99999 are busted.
- Add support for ``python setup.py test``. #97


Version 1.4.3 (May 23rd, 2016)
------------------------------

**Changes**

- Limit to html5lib ``>=0.999,<0.99999999`` because of impending change to
sanitizer api. #195


Version 1.4.2 (September 11, 2015)
----------------------------------

**Changes**

- linkify: Fix hang in linkify with ``parse_email=True``. #124
- linkify: Fix crash in linkify when removing a link that is a first-child. #136
- Updated TLDs.
- linkify: Don't remove exterior brackets when linkifying. #146


Version 1.4.1 (December 15, 2014)
---------------------------------

**Changes**

- Consistent order of attributes in output.
- Python 3.4 support.


Version 1.4 (January 12, 2014)
------------------------------

**Changes**

- linkify: Update linkify to use etree type Treewalker instead of simpletree.
- Updated html5lib to version ``>=0.999``.
- Update all code to be compatible with Python 3 and 2 using six.
- Switch to Apache License.


Version 1.3
-----------

- Used by Python 3-only fork.


Version 1.2.2 (May 18, 2013)
----------------------------

- Pin html5lib to version 0.95 for now due to major API break.

Version 1.2.1 (February 19, 2013)
---------------------------------

- clean() no longer considers ``feed:`` an acceptable protocol due to
inconsistencies in browser behavior.


Version 1.2 (January 28, 2013)
------------------------------

- linkify() has changed considerably. Many keyword arguments have been
replaced with a single callbacks list. Please see the documentation
for more information.
- Bleach will no longer consider unacceptable protocols when linkifying.
- linkify() now takes a tokenizer argument that allows it to skip
sanitization.
- delinkify() is gone.
- Removed exception handling from _render. clean() and linkify() may now
throw.
- linkify() correctly ignores case for protocols and domain names.
- linkify() correctly handles markup within an <a> tag.


Version 1.1.5
-------------


Version 1.1.4
-------------


Version 1.1.3 (July 10, 2012)
-----------------------------

- Fix parsing bare URLs when parse_email=True.


Version 1.1.2 (June 1, 2012)
----------------------------

- Fix hang in style attribute sanitizer. (#61)
- Allow '/' in style attribute values.


Version 1.1.1 (February 17, 2012)
---------------------------------

- Fix tokenizer for html5lib 0.9.5.


Version 1.1.0 (October 24, 2011)
--------------------------------

- linkify() now understands port numbers. (#38)
- Documented character encoding behavior. (#41)
- Add an optional target argument to linkify().
- Add delinkify() method. (#45)
- Support subdomain whitelist for delinkify(). (#47, #48)


Version 1.0.4 (September 2, 2011)
---------------------------------

- Switch to SemVer git tags.
- Make linkify() smarter about trailing punctuation. (#30)
- Pass exc_info to logger during rendering issues.
- Add wildcard key for attributes. (#19)
- Make linkify() use the HTMLSanitizer tokenizer. (#36)
- Fix URLs wrapped in parentheses. (#23)
- Make linkify() UTF-8 safe. (#33)


Version 1.0.3 (June 14, 2011)
-----------------------------

- linkify() works with 3rd level domains. (#24)
- clean() supports vendor prefixes in style values. (#31, #32)
- Fix linkify() email escaping.


Version 1.0.2 (June 6, 2011)
----------------------------

- linkify() supports email addresses.
- clean() supports callables in attributes filter.


Version 1.0.1 (April 12, 2011)
------------------------------

- linkify() doesn't drop trailing slashes. (#21)
- linkify() won't linkify 'libgl.so.1'. (#22)


@@ -0,0 +1 @@
pip
@@ -0,0 +1,308 @@
Metadata-Version: 2.0
Name: bleach
Version: 1.5.0
Summary: An easy whitelist-based HTML-sanitizing tool.
Home-page: http://github.com/mozilla/bleach
Author: Will Kahn-Greene
Author-email: UNKNOWN
License: Apache Software License
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: six
Requires-Dist: html5lib (>=0.999,!=0.9999,!=0.99999,<0.99999999)

======
Bleach
======

.. image:: https://travis-ci.org/mozilla/bleach.png?branch=master
:target: https://travis-ci.org/mozilla/bleach

.. image:: https://badge.fury.io/py/Bleach.svg
:target: http://badge.fury.io/py/Bleach

Bleach is a whitelist-based HTML sanitizing library that escapes or strips
markup and attributes.

Bleach can also linkify text safely, applying filters that Django's ``urlize``
filter cannot, and optionally setting ``rel`` attributes, even on links already
in the text.

Bleach is intended for sanitizing text from *untrusted* sources. If you find
yourself jumping through hoops to allow your site administrators to do lots of
things, you're probably outside the use cases. Either trust those users, or
don't.

Because it relies on html5lib_, Bleach is as good as modern browsers at dealing
with weird, quirky HTML fragments. And *any* of Bleach's methods will fix
unbalanced or mis-nested tags.

The version on GitHub_ is the most up-to-date and contains the latest bug
fixes. You can find full documentation on `ReadTheDocs`_.

:Code: https://github.com/mozilla/bleach
:Documentation: https://bleach.readthedocs.io/
:Issue tracker: https://github.com/mozilla/bleach/issues
:IRC: ``#bleach`` on irc.mozilla.org
:License: Apache License v2; see LICENSE file


Reporting Bugs
==============

For regular bugs, please report them `in our issue tracker
<https://github.com/mozilla/bleach/issues>`_.

If you believe that you've found a security vulnerability, please `file a secure
bug report in our bug tracker
<https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&product=Webtools&component=Bleach-security&groups=webtools-security>`_
or send an email to *security AT mozilla DOT org*.

For more information on security-related bug disclosure and the PGP key to use
for sending encrypted mail or to verify responses received from that address,
please read our wiki page at
`<https://www.mozilla.org/en-US/security/#For_Developers>`_.


Installing Bleach
=================

Bleach is available on PyPI_, so you can install it with ``pip``::

$ pip install bleach

Or with ``easy_install``::

$ easy_install bleach

Or by cloning the repo from GitHub_::

$ git clone git://github.com/mozilla/bleach.git

Then install it by running::

$ python setup.py install


Upgrading Bleach
================

.. warning::

Before doing any upgrades, read through `Bleach Changes
<https://bleach.readthedocs.io/en/latest/changes.html>`_ for backwards
incompatible changes, newer versions, etc.


Basic use
=========

The simplest way to use Bleach is:

.. code-block:: python

>>> import bleach

>>> bleach.clean('an <script>evil()</script> example')
u'an &lt;script&gt;evil()&lt;/script&gt; example'

>>> bleach.linkify('an http://example.com url')
u'an <a href="http://example.com" rel="nofollow">http://example.com</a> url


.. _html5lib: https://github.com/html5lib/html5lib-python
.. _GitHub: https://github.com/mozilla/bleach
.. _ReadTheDocs: https://bleach.readthedocs.io/
.. _PyPI: http://pypi.python.org/pypi/bleach


Bleach Changes
==============

Version 1.5 (November 4th, 2016)
--------------------------------

**Backwards incompatible changes**

- clean: The list of ``ALLOWED_PROTOCOLS`` now defaults to http, https and
mailto. Previously it was a long list of protocols something like ed2k, ftp,
http, https, irc, mailto, news, gopher, nntp, telnet, webcal, xmpp, callto,
feed, urn, aim, rsync, tag, ssh, sftp, rtsp, afs, data. #149

**Changes**

- clean: Added ``protocols`` to arguments list to let you override the list of
allowed protocols. Thank you, Andreas Malecki! #149
- linkify: Fix a bug involving periods at the end of an email address. Thank you,
Lorenz Schori! #219
- linkify: Fix linkification of non-ascii ports. Thank you Alexandre, Macabies!
#207
- linkify: Fix linkify inappropriately removing node tails when dropping nodes.
#132
- Fixed a test that failed periodically. #161
- Switched from nose to py.test. #204
- Add test matrix for all supported Python and html5lib versions. #230
- Limit to html5lib ``>=0.999,!=0.9999,!=0.99999,<0.99999999`` because 0.9999
and 0.99999 are busted.
- Add support for ``python setup.py test``. #97


Version 1.4.3 (May 23rd, 2016)
------------------------------

**Changes**

- Limit to html5lib ``>=0.999,<0.99999999`` because of impending change to
sanitizer api. #195


Version 1.4.2 (September 11, 2015)
----------------------------------

**Changes**

- linkify: Fix hang in linkify with ``parse_email=True``. #124
- linkify: Fix crash in linkify when removing a link that is a first-child. #136
- Updated TLDs.
- linkify: Don't remove exterior brackets when linkifying. #146


Version 1.4.1 (December 15, 2014)
---------------------------------

**Changes**

- Consistent order of attributes in output.
- Python 3.4 support.


Version 1.4 (January 12, 2014)
------------------------------

**Changes**

- linkify: Update linkify to use etree type Treewalker instead of simpletree.
- Updated html5lib to version ``>=0.999``.
- Update all code to be compatible with Python 3 and 2 using six.
- Switch to Apache License.


Version 1.3
-----------

- Used by Python 3-only fork.


Version 1.2.2 (May 18, 2013)
----------------------------

- Pin html5lib to version 0.95 for now due to major API break.

Version 1.2.1 (February 19, 2013)
---------------------------------

- clean() no longer considers ``feed:`` an acceptable protocol due to
inconsistencies in browser behavior.


Version 1.2 (January 28, 2013)
------------------------------

- linkify() has changed considerably. Many keyword arguments have been
replaced with a single callbacks list. Please see the documentation
for more information.
- Bleach will no longer consider unacceptable protocols when linkifying.
- linkify() now takes a tokenizer argument that allows it to skip
sanitization.
- delinkify() is gone.
- Removed exception handling from _render. clean() and linkify() may now
throw.
- linkify() correctly ignores case for protocols and domain names.
- linkify() correctly handles markup within an <a> tag.


Version 1.1.5
-------------


Version 1.1.4
-------------


Version 1.1.3 (July 10, 2012)
-----------------------------

- Fix parsing bare URLs when parse_email=True.


Version 1.1.2 (June 1, 2012)
----------------------------

- Fix hang in style attribute sanitizer. (#61)
- Allow '/' in style attribute values.


Version 1.1.1 (February 17, 2012)
---------------------------------

- Fix tokenizer for html5lib 0.9.5.


Version 1.1.0 (October 24, 2011)
--------------------------------

- linkify() now understands port numbers. (#38)
- Documented character encoding behavior. (#41)
- Add an optional target argument to linkify().
- Add delinkify() method. (#45)
- Support subdomain whitelist for delinkify(). (#47, #48)


Version 1.0.4 (September 2, 2011)
---------------------------------

- Switch to SemVer git tags.
- Make linkify() smarter about trailing punctuation. (#30)
- Pass exc_info to logger during rendering issues.
- Add wildcard key for attributes. (#19)
- Make linkify() use the HTMLSanitizer tokenizer. (#36)
- Fix URLs wrapped in parentheses. (#23)
- Make linkify() UTF-8 safe. (#33)


Version 1.0.3 (June 14, 2011)
-----------------------------

- linkify() works with 3rd level domains. (#24)
- clean() supports vendor prefixes in style values. (#31, #32)
- Fix linkify() email escaping.


Version 1.0.2 (June 6, 2011)
----------------------------

- linkify() supports email addresses.
- clean() supports callables in attributes filter.


Version 1.0.1 (April 12, 2011)
------------------------------

- linkify() doesn't drop trailing slashes. (#21)
- linkify() won't linkify 'libgl.so.1'. (#22)


@@ -0,0 +1,17 @@
bleach/__init__.py,sha256=GS2ORCpzVrM6y_mkmnbaZZZ9D2gf9siX-Z4zDUofW4U,15427
bleach/callbacks.py,sha256=UTrc4JiioTwGxAKnZjpcFUPLxOcUSZt1KnmDqvdeYM4,534
bleach/encoding.py,sha256=aq062I1yXRPPjZjYzY4FoMYkCjBA-0QCU-xBhgq4JMQ,2277
bleach/sanitizer.py,sha256=t5IcbT36QOqZjG_h8bO2SOIn_OF_mUzYyRmRzDzyM-k,6483
bleach/version.py,sha256=oskxHPFV-2W-vHpduEGWyRW8wyOa70mj_3qtLxPyRBM,136
bleach-1.5.0.dist-info/top_level.txt,sha256=dcv0wKIySB0zMjAEXLwY4V0-3IN9UZQGAT1wDmfQICY,7
bleach-1.5.0.dist-info/METADATA,sha256=JSll0wzttNFf3wvAnzfwcuYH9UPcfpjL-N55RVyKJQw,8925
bleach-1.5.0.dist-info/DESCRIPTION.rst,sha256=jJ9jn1_mkWMbFlaBtIf7dPMwzoGmA4H-fRB8b3ER0Dg,7828
bleach-1.5.0.dist-info/metadata.json,sha256=bT8WVZh6PG2fcHLhV6woBY84EPwqSFnwwKegq3jXUW0,1224
bleach-1.5.0.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110
bleach-1.5.0.dist-info/RECORD,,
bleach-1.5.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
bleach/__pycache__/callbacks.cpython-34.pyc,,
bleach/__pycache__/__init__.cpython-34.pyc,,
bleach/__pycache__/version.cpython-34.pyc,,
bleach/__pycache__/encoding.cpython-34.pyc,,
bleach/__pycache__/sanitizer.cpython-34.pyc,,
@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.24.0)
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any

@@ -0,0 +1 @@
{"license": "Apache Software License", "name": "bleach", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "test_requires": [{"requires": ["pytest (==3.0.3)"]}], "summary": "An easy whitelist-based HTML-sanitizing tool.", "run_requires": [{"requires": ["six", "html5lib (>=0.999,!=0.9999,!=0.99999,<0.99999999)"]}], "version": "1.5.0", "extensions": {"python.details": {"project_urls": {"Home": "http://github.com/mozilla/bleach"}, "document_names": {"description": "DESCRIPTION.rst"}, "contacts": [{"role": "author", "name": "Will Kahn-Greene"}]}}, "classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules"], "extras": []}
@@ -0,0 +1 @@
bleach

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
"""A set of basic callbacks for bleach.linkify."""
from __future__ import unicode_literals


def nofollow(attrs, new=False):
if attrs['href'].startswith('mailto:'):
return attrs
rel = [x for x in attrs.get('rel', '').split(' ') if x]
if 'nofollow' not in [x.lower() for x in rel]:
rel.append('nofollow')
attrs['rel'] = ' '.join(rel)

return attrs


def target_blank(attrs, new=False):
if attrs['href'].startswith('mailto:'):
return attrs
attrs['target'] = '_blank'
return attrs
@@ -0,0 +1,62 @@
import datetime
from decimal import Decimal
import types
import six


def is_protected_type(obj):
"""Determine if the object instance is of a protected type.

Objects of protected types are preserved as-is when passed to
force_unicode(strings_only=True).
"""
return isinstance(obj, (
six.integer_types +
(types.NoneType,
datetime.datetime, datetime.date, datetime.time,
float, Decimal))
)


def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'):
"""
Similar to smart_text, except that lazy instances are resolved to
strings, rather than kept as lazy objects.

If strings_only is True, don't convert (some) non-string-like objects.
"""
# Handle the common case first, saves 30-40% when s is an instance of
# six.text_type. This function gets called often in that setting.
if isinstance(s, six.text_type):
return s
if strings_only and is_protected_type(s):
return s
try:
if not isinstance(s, six.string_types):
if hasattr(s, '__unicode__'):
s = s.__unicode__()
else:
if six.PY3:
if isinstance(s, bytes):
s = six.text_type(s, encoding, errors)
else:
s = six.text_type(s)
else:
s = six.text_type(bytes(s), encoding, errors)
else:
# Note: We use .decode() here, instead of six.text_type(s,
# encoding, errors), so that if s is a SafeBytes, it ends up being
# a SafeText at the end.
s = s.decode(encoding, errors)
except UnicodeDecodeError as e:
if not isinstance(s, Exception):
raise UnicodeDecodeError(*e.args)
else:
# If we get to here, the caller has passed in an Exception
# subclass populated with non-ASCII bytestring data without a
# working unicode method. Try to handle this without raising a
# further exception by individually forcing the exception args
# to unicode.
s = ' '.join([force_unicode(arg, encoding, strings_only,
errors) for arg in s])
return s
@@ -0,0 +1,147 @@
from __future__ import unicode_literals
import re
from xml.sax.saxutils import escape, unescape

from html5lib.constants import tokenTypes
from html5lib.sanitizer import HTMLSanitizerMixin
from html5lib.tokenizer import HTMLTokenizer


PROTOS = HTMLSanitizerMixin.acceptable_protocols
PROTOS.remove('feed')


class BleachSanitizerMixin(HTMLSanitizerMixin):
"""Mixin to replace sanitize_token() and sanitize_css()."""

allowed_svg_properties = []

def sanitize_token(self, token):
"""Sanitize a token either by HTML-encoding or dropping.

Unlike HTMLSanitizerMixin.sanitize_token, allowed_attributes can be
a dict of {'tag': ['attribute', 'pairs'], 'tag': callable}.

Here callable is a function with two arguments of attribute name
and value. It should return true of false.

Also gives the option to strip tags instead of encoding.

"""
if (getattr(self, 'wildcard_attributes', None) is None and
isinstance(self.allowed_attributes, dict)):
self.wildcard_attributes = self.allowed_attributes.get('*', [])

if token['type'] in (tokenTypes['StartTag'], tokenTypes['EndTag'],
tokenTypes['EmptyTag']):
if token['name'] in self.allowed_elements:
if 'data' in token:
if isinstance(self.allowed_attributes, dict):
allowed_attributes = self.allowed_attributes.get(
token['name'], [])
if not callable(allowed_attributes):
allowed_attributes += self.wildcard_attributes
else:
allowed_attributes = self.allowed_attributes
attrs = dict([(name, val) for name, val in
token['data'][::-1]
if (allowed_attributes(name, val)
if callable(allowed_attributes)
else name in allowed_attributes)])
for attr in self.attr_val_is_uri:
if attr not in attrs:
continue
val_unescaped = re.sub("[`\000-\040\177-\240\s]+", '',
unescape(attrs[attr])).lower()
# Remove replacement characters from unescaped
# characters.
val_unescaped = val_unescaped.replace("\ufffd", "")
if (re.match(r'^[a-z0-9][-+.a-z0-9]*:', val_unescaped)
and (val_unescaped.split(':')[0] not in
self.allowed_protocols)):
del attrs[attr]
for attr in self.svg_attr_val_allows_ref:
if attr in attrs:
attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)',
' ',
unescape(attrs[attr]))
if (token['name'] in self.svg_allow_local_href and
'xlink:href' in attrs and
re.search(r'^\s*[^#\s].*', attrs['xlink:href'])):
del attrs['xlink:href']
if 'style' in attrs:
attrs['style'] = self.sanitize_css(attrs['style'])
token['data'] = [(name, val) for name, val in
attrs.items()]
return token
elif self.strip_disallowed_elements:
pass
else:
if token['type'] == tokenTypes['EndTag']:
token['data'] = '</{0!s}>'.format(token['name'])
elif token['data']:
attr = ' {0!s}="{1!s}"'
attrs = ''.join([attr.format(k, escape(v)) for k, v in
token['data']])
token['data'] = '<{0!s}{1!s}>'.format(token['name'], attrs)
else:
token['data'] = '<{0!s}>'.format(token['name'])
if token['selfClosing']:
token['data'] = token['data'][:-1] + '/>'
token['type'] = tokenTypes['Characters']
del token["name"]
return token
elif token['type'] == tokenTypes['Comment']:
if not self.strip_html_comments:
return token
else:
return token

def sanitize_css(self, style):
"""HTMLSanitizerMixin.sanitize_css replacement.

HTMLSanitizerMixin.sanitize_css always whitelists background-*,
border-*, margin-*, and padding-*. We only whitelist what's in
the whitelist.

"""
# disallow urls
style = re.compile('url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style)

# gauntlet
# TODO: Make sure this does what it's meant to - I *think* it wants to
# validate style attribute contents.
parts = style.split(';')
gauntlet = re.compile("""^([-/:,#%.'"\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'"""
"""\s*|"[\s\w]+"|\([\d,%\.\s]+\))*$""")
for part in parts:
if not gauntlet.match(part):
return ''

if not re.match("^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style):
return ''

clean = []
for prop, value in re.findall('([-\w]+)\s*:\s*([^:;]*)', style):
if not value:
continue
if prop.lower() in self.allowed_css_properties:
clean.append(prop + ': ' + value + ';')
elif prop.lower() in self.allowed_svg_properties:
clean.append(prop + ': ' + value + ';')

return ' '.join(clean)


class BleachSanitizer(HTMLTokenizer, BleachSanitizerMixin):
def __init__(self, stream, encoding=None, parseMeta=True, useChardet=True,
lowercaseElementName=True, lowercaseAttrName=True, **kwargs):
HTMLTokenizer.__init__(self, stream, encoding, parseMeta, useChardet,
lowercaseElementName, lowercaseAttrName,
**kwargs)

def __iter__(self):
for token in HTMLTokenizer.__iter__(self):
token = self.sanitize_token(token)
if token:
yield token
@@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

VERSION = (1, 5, 0)
__version__ = '.'.join([str(n) for n in VERSION])
@@ -0,0 +1,5 @@
"""Run the EasyInstall command"""

if __name__ == '__main__':
from setuptools.command.easy_install import main
main()
@@ -0,0 +1,32 @@
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.
@@ -0,0 +1,3 @@
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+